From ca74543a117f7bc25e9b40b1dd5e4109a2c0121d Mon Sep 17 00:00:00 2001 From: Joseph Bloom Date: Thu, 21 Dec 2023 22:43:26 +0000 Subject: [PATCH] get anthropic resampling working --- research/run.ipynb | 11826 +----------------- sae_training/activations_store.py | 6 +- sae_training/config.py | 7 +- sae_training/sparse_autoencoder.py | 188 +- sae_training/train_sae_on_language_model.py | 149 +- sae_training/utils.py | 1 + tests/unit/test_sparse_autoencoder.py | 112 +- 7 files changed, 497 insertions(+), 11792 deletions(-) diff --git a/research/run.ipynb b/research/run.ipynb index 9bfc93d9..4362e2f4 100644 --- a/research/run.ipynb +++ b/research/run.ipynb @@ -9,19 +9,19 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Run name: 65536-L1-0.00016-LR-0.0012-Tokens-1.000e+08\n", + "Run name: 16384-L1-0.0006-LR-0.0012-Tokens-1.000e+08\n", "n_tokens_per_buffer (millions): 0.524288\n", "Lower bound: n_contexts_per_buffer (millions): 0.004096\n", "Total training steps: 24414\n", "Total wandb updates: 2441\n", - "n_dead_feature_samples: 0\n", + "n_dead_feature_samples: 3\n", "Loaded pretrained model gelu-2l into HookedTransformer\n", "Moving model to device: cuda\n" ] @@ -29,7 +29,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "4bd0406914c3444f8ca3cdc9809eb051", + "model_id": "90f295931ea744df8b6f48ef8bc87578", "version_major": 2, "version_minor": 0 }, @@ -47,106 +47,14 @@ "Dataset is tokenized! Updating config.\n" ] }, - { - "data": { - "text/html": [ - "Finishing last run (ID:r15j5z9c) before initializing another..." - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "name": "stderr", "output_type": "stream", "text": [ - "wandb: WARNING Source type is set to 'repo' but some required information is missing from the environment. A job will not be created from this run. See https://docs.wandb.ai/guides/launch/create-job\n" + "Failed to detect the name of this notebook, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable to enable code saving.\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mjbloom\u001b[0m. Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" ] }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "573231860714458abceb654a39f69a8e", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Label(value='39.646 MB of 39.646 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "

Run history:


details/current_learning_rate▁▁▂▂▃▃▃▄▄▅▅▆▆▆▇▇████████████████████████
details/n_training_tokens▁▁▁▁▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▇▇▇▇▇▇███
losses/l1_loss█▄▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
losses/mse_loss█▄▃▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
losses/overall_loss█▄▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
metrics/CE_loss_score▁▇▇▇███████
metrics/ce_loss_with_ablation▁▃▄▅▅▃▄█▅▃▄
metrics/ce_loss_with_sae█▄▃▁▄▃▃▅▁▂▄
metrics/ce_loss_without_sae▄▄▄▁▅▄▄█▂▄▆
metrics/explained_variance▁▅▆▆▇▇▇█████████████████████████████████
metrics/explained_variance_std█▅▄▄▃▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
metrics/l0█▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
metrics/l2_norm▁▆▇▇▇▇█████
metrics/l2_ratio▁▆▇▇▇▇█████
metrics/mean_log10_feature_sparsity█▆▅▄▃▃▂▂▂▁▁
sparsity/below_1e-5▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sparsity/below_1e-6▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sparsity/dead_features▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

Run summary:


details/current_learning_rate0.0012
details/n_training_tokens4710400
losses/l1_loss0.00267
losses/mse_loss0.00207
losses/overall_loss0.00473
metrics/CE_loss_score0.92352
metrics/ce_loss_with_ablation10.36766
metrics/ce_loss_with_sae4.79243
metrics/ce_loss_without_sae4.3307
metrics/explained_variance0.92546
metrics/explained_variance_std0.03434
metrics/l0224.26953
metrics/l2_norm13.6153
metrics/l2_ratio0.89283
metrics/mean_log10_feature_sparsity-1.83097
sparsity/below_1e-50.0
sparsity/below_1e-60.0
sparsity/dead_features0.0

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " View run 65536-L1-8e-05-LR-0.0012-Tokens-1.000e+08 at: https://wandb.ai/jbloom/mats_sae_training_language_models_gelu_2l_test/runs/r15j5z9c
Synced 7 W&B file(s), 33 media file(s), 0 artifact file(s) and 1 other file(s)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Find logs at: ./wandb/run-20231221_114532-r15j5z9c/logs" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Successfully finished last run (ID:r15j5z9c). Initializing new run:
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "da26087c50b34173a8d77d75f1226b88", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.011112318933333478, max=1.0…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, { "data": { "text/html": [ @@ -175,7 +83,7 @@ { "data": { "text/html": [ - "Run data is saved locally in /home/paperspace/mats_sae_training/research/wandb/run-20231221_114848-am21ucha" + "Run data is saved locally in /home/paperspace/mats_sae_training/research/wandb/run-20231221_223239-0lixs04m" ], "text/plain": [ "" @@ -187,7 +95,7 @@ { "data": { "text/html": [ - "Syncing run 65536-L1-0.00016-LR-0.0012-Tokens-1.000e+08 to Weights & Biases (docs)
" + "Syncing run 16384-L1-0.0006-LR-0.0012-Tokens-1.000e+08 to Weights & Biases (docs)
" ], "text/plain": [ "" @@ -211,7 +119,7 @@ { "data": { "text/html": [ - " View run at https://wandb.ai/jbloom/mats_sae_training_language_models_gelu_2l_test/runs/am21ucha" + " View run at https://wandb.ai/jbloom/mats_sae_training_language_models_gelu_2l_test/runs/0lixs04m" ], "text/plain": [ "" @@ -224,5104 +132,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A/home/paperspace/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/wandb/sdk/wandb_run.py:2163: UserWarning:\n", - "\n", - "Run (slyebthm) is finished. The call to `_console_raw_callback` will be ignored. Please make sure that you are using an active run.\n", - "\n", - "1197| MSE Loss 0.028 | L1 0.000: 5%|▍ | 4907008/100000000 [06:39<2:09:08, 12272.79it/s]\n", - "\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A" + "Collecting losses for resampling...: 100%|██████████| 32/32 [00:01<00:00, 18.66it/s]1029.76it/s] \n", + "Collecting losses for resampling...: 100%|██████████| 32/32 [00:01<00:00, 19.83it/s]13914.56it/s]\n", + "Collecting losses for resampling...: 100%|██████████| 32/32 [00:01<00:00, 18.27it/s]145740.16it/s]\n", + "Collecting losses for resampling...: 100%|██████████| 32/32 [00:01<00:00, 18.25it/s]178218.82it/s]\n", + "20953| MSE Loss 0.012 | L1 0.006: 86%|████████▌ | 85823488/100000000 [10:03<01:40, 141029.74it/s]" ] }, { @@ -5331,19 +146,13 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/home/paperspace/mats_sae_training/research/run.ipynb Cell 2\u001b[0m line \u001b[0;36m6\n\u001b[1;32m 12\u001b[0m os\u001b[39m.\u001b[39menviron[\u001b[39m\"\u001b[39m\u001b[39mTOKENIZERS_PARALLELISM\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mfalse\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m cfg \u001b[39m=\u001b[39m LanguageModelSAERunnerConfig(\n\u001b[1;32m 14\u001b[0m \n\u001b[1;32m 15\u001b[0m \u001b[39m# Data Generating Function (Model + Training Distibuion)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 56\u001b[0m dtype \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mfloat32,\n\u001b[1;32m 57\u001b[0m )\n\u001b[0;32m---> 60\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m language_model_sae_runner(cfg)\n", - "File \u001b[0;32m~/mats_sae_training/research/../sae_training/lm_runner.py:23\u001b[0m, in \u001b[0;36mlanguage_model_sae_runner\u001b[0;34m(cfg)\u001b[0m\n\u001b[1;32m 20\u001b[0m wandb\u001b[39m.\u001b[39minit(project\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mwandb_project, config\u001b[39m=\u001b[39mcfg, name\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mrun_name)\n\u001b[1;32m 22\u001b[0m \u001b[39m# train SAE\u001b[39;00m\n\u001b[0;32m---> 23\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m train_sae_on_language_model(\n\u001b[1;32m 24\u001b[0m model, sparse_autoencoder, activations_loader,\n\u001b[1;32m 25\u001b[0m n_checkpoints\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mn_checkpoints,\n\u001b[1;32m 26\u001b[0m batch_size \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mtrain_batch_size,\n\u001b[1;32m 27\u001b[0m feature_sampling_method \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_method,\n\u001b[1;32m 28\u001b[0m feature_sampling_window \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_window,\n\u001b[1;32m 29\u001b[0m feature_reinit_scale \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_reinit_scale,\n\u001b[1;32m 30\u001b[0m dead_feature_threshold \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mdead_feature_threshold,\n\u001b[1;32m 31\u001b[0m dead_feature_window\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mdead_feature_window,\n\u001b[1;32m 32\u001b[0m use_wandb \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mlog_to_wandb,\n\u001b[1;32m 33\u001b[0m wandb_log_frequency \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mwandb_log_frequency\n\u001b[1;32m 34\u001b[0m )\n\u001b[1;32m 36\u001b[0m \u001b[39m# save sae to checkpoints folder\u001b[39;00m\n\u001b[1;32m 37\u001b[0m path \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mcfg\u001b[39m.\u001b[39mcheckpoint_path\u001b[39m}\u001b[39;00m\u001b[39m/final_\u001b[39m\u001b[39m{\u001b[39;00msparse_autoencoder\u001b[39m.\u001b[39mget_name()\u001b[39m}\u001b[39;00m\u001b[39m.pt\u001b[39m\u001b[39m\"\u001b[39m\n", - "File \u001b[0;32m~/mats_sae_training/research/../sae_training/train_sae_on_language_model.py:169\u001b[0m, in \u001b[0;36mtrain_sae_on_language_model\u001b[0;34m(model, sparse_autoencoder, activation_store, batch_size, n_checkpoints, feature_sampling_method, feature_sampling_window, feature_reinit_scale, dead_feature_threshold, dead_feature_window, use_wandb, wandb_log_frequency)\u001b[0m\n\u001b[1;32m 151\u001b[0m sparsity_line_chart \u001b[39m=\u001b[39m px\u001b[39m.\u001b[39mscatter(\n\u001b[1;32m 152\u001b[0m y \u001b[39m=\u001b[39m log_feature_sparsity,\n\u001b[1;32m 153\u001b[0m title\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mFeature Sparsity\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 156\u001b[0m marginal_y\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mhistogram\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 157\u001b[0m )\n\u001b[1;32m 158\u001b[0m wandb\u001b[39m.\u001b[39mlog(\n\u001b[1;32m 159\u001b[0m { \n\u001b[1;32m 160\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mmetrics/mean_log10_feature_sparsity\u001b[39m\u001b[39m\"\u001b[39m: log_feature_sparsity\u001b[39m.\u001b[39mmean()\u001b[39m.\u001b[39mitem(),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 163\u001b[0m step\u001b[39m=\u001b[39mn_training_steps,\n\u001b[1;32m 164\u001b[0m )\n\u001b[1;32m 168\u001b[0m pbar\u001b[39m.\u001b[39mset_description(\n\u001b[0;32m--> 169\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mn_training_steps\u001b[39m}\u001b[39;00m\u001b[39m| MSE Loss \u001b[39m\u001b[39m{\u001b[39;00mmse_loss\u001b[39m.\u001b[39;49mitem()\u001b[39m:\u001b[39;00m\u001b[39m.3f\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m | L1 \u001b[39m\u001b[39m{\u001b[39;00ml1_loss\u001b[39m.\u001b[39mitem()\u001b[39m:\u001b[39;00m\u001b[39m.3f\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[1;32m 170\u001b[0m )\n\u001b[1;32m 171\u001b[0m pbar\u001b[39m.\u001b[39mupdate(batch_size)\n\u001b[1;32m 173\u001b[0m loss\u001b[39m.\u001b[39mbackward()\n", + "\u001b[1;32m/home/paperspace/mats_sae_training/research/run.ipynb Cell 2\u001b[0m line \u001b[0;36m5\n\u001b[1;32m 12\u001b[0m os\u001b[39m.\u001b[39menviron[\u001b[39m\"\u001b[39m\u001b[39mTOKENIZERS_PARALLELISM\u001b[39m\u001b[39m\"\u001b[39m] \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39mfalse\u001b[39m\u001b[39m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m cfg \u001b[39m=\u001b[39m LanguageModelSAERunnerConfig(\n\u001b[1;32m 14\u001b[0m \n\u001b[1;32m 15\u001b[0m \u001b[39m# Data Generating Function (Model + Training Distibuion)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 55\u001b[0m dtype \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mbfloat16,\n\u001b[1;32m 56\u001b[0m )\n\u001b[0;32m---> 59\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m language_model_sae_runner(cfg)\n", + "File \u001b[0;32m~/mats_sae_training/research/../sae_training/lm_runner.py:29\u001b[0m, in \u001b[0;36mlanguage_model_sae_runner\u001b[0;34m(cfg)\u001b[0m\n\u001b[1;32m 26\u001b[0m wandb\u001b[39m.\u001b[39minit(project\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mwandb_project, config\u001b[39m=\u001b[39mcfg, name\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mrun_name)\n\u001b[1;32m 28\u001b[0m \u001b[39m# train SAE\u001b[39;00m\n\u001b[0;32m---> 29\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m train_sae_on_language_model(\n\u001b[1;32m 30\u001b[0m model, sparse_autoencoder, activations_loader,\n\u001b[1;32m 31\u001b[0m n_checkpoints\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mn_checkpoints,\n\u001b[1;32m 32\u001b[0m batch_size \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mtrain_batch_size,\n\u001b[1;32m 33\u001b[0m feature_sampling_method \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_method,\n\u001b[1;32m 34\u001b[0m feature_sampling_window \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_window,\n\u001b[1;32m 35\u001b[0m feature_reinit_scale \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_reinit_scale,\n\u001b[1;32m 36\u001b[0m dead_feature_threshold \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mdead_feature_threshold,\n\u001b[1;32m 37\u001b[0m dead_feature_window\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mdead_feature_window,\n\u001b[1;32m 38\u001b[0m use_wandb \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mlog_to_wandb,\n\u001b[1;32m 39\u001b[0m wandb_log_frequency \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mwandb_log_frequency\n\u001b[1;32m 40\u001b[0m )\n\u001b[1;32m 42\u001b[0m \u001b[39m# save sae to checkpoints folder\u001b[39;00m\n\u001b[1;32m 43\u001b[0m path \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mcfg\u001b[39m.\u001b[39mcheckpoint_path\u001b[39m}\u001b[39;00m\u001b[39m/final_\u001b[39m\u001b[39m{\u001b[39;00msparse_autoencoder\u001b[39m.\u001b[39mget_name()\u001b[39m}\u001b[39;00m\u001b[39m.pt\u001b[39m\u001b[39m\"\u001b[39m\n", + "File \u001b[0;32m~/mats_sae_training/research/../sae_training/train_sae_on_language_model.py:211\u001b[0m, in \u001b[0;36mtrain_sae_on_language_model\u001b[0;34m(model, sparse_autoencoder, activation_store, batch_size, n_checkpoints, feature_sampling_method, feature_sampling_window, feature_reinit_scale, dead_feature_threshold, dead_feature_window, use_wandb, wandb_log_frequency)\u001b[0m\n\u001b[1;32m 206\u001b[0m pbar\u001b[39m.\u001b[39mset_description(\n\u001b[1;32m 207\u001b[0m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mn_training_steps\u001b[39m}\u001b[39;00m\u001b[39m| MSE Loss \u001b[39m\u001b[39m{\u001b[39;00mmse_loss\u001b[39m.\u001b[39mitem()\u001b[39m:\u001b[39;00m\u001b[39m.3f\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m | L1 \u001b[39m\u001b[39m{\u001b[39;00ml1_loss\u001b[39m.\u001b[39mitem()\u001b[39m:\u001b[39;00m\u001b[39m.3f\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m\"\u001b[39m\n\u001b[1;32m 208\u001b[0m )\n\u001b[1;32m 209\u001b[0m pbar\u001b[39m.\u001b[39mupdate(batch_size)\n\u001b[0;32m--> 211\u001b[0m loss\u001b[39m.\u001b[39;49mbackward()\n\u001b[1;32m 212\u001b[0m sparse_autoencoder\u001b[39m.\u001b[39mremove_gradient_parallel_to_decoder_directions()\n\u001b[1;32m 213\u001b[0m optimizer\u001b[39m.\u001b[39mstep()\n", + "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/_tensor.py:492\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 482\u001b[0m \u001b[39mif\u001b[39;00m has_torch_function_unary(\u001b[39mself\u001b[39m):\n\u001b[1;32m 483\u001b[0m \u001b[39mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 484\u001b[0m Tensor\u001b[39m.\u001b[39mbackward,\n\u001b[1;32m 485\u001b[0m (\u001b[39mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 490\u001b[0m inputs\u001b[39m=\u001b[39minputs,\n\u001b[1;32m 491\u001b[0m )\n\u001b[0;32m--> 492\u001b[0m torch\u001b[39m.\u001b[39;49mautograd\u001b[39m.\u001b[39;49mbackward(\n\u001b[1;32m 493\u001b[0m \u001b[39mself\u001b[39;49m, gradient, retain_graph, create_graph, inputs\u001b[39m=\u001b[39;49minputs\n\u001b[1;32m 494\u001b[0m )\n", + "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/autograd/__init__.py:251\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 246\u001b[0m retain_graph \u001b[39m=\u001b[39m create_graph\n\u001b[1;32m 248\u001b[0m \u001b[39m# The reason we repeat the same comment below is that\u001b[39;00m\n\u001b[1;32m 249\u001b[0m \u001b[39m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 250\u001b[0m \u001b[39m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 251\u001b[0m Variable\u001b[39m.\u001b[39;49m_execution_engine\u001b[39m.\u001b[39;49mrun_backward( \u001b[39m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 252\u001b[0m tensors,\n\u001b[1;32m 253\u001b[0m grad_tensors_,\n\u001b[1;32m 254\u001b[0m retain_graph,\n\u001b[1;32m 255\u001b[0m create_graph,\n\u001b[1;32m 256\u001b[0m inputs,\n\u001b[1;32m 257\u001b[0m allow_unreachable\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m,\n\u001b[1;32m 258\u001b[0m accumulate_grad\u001b[39m=\u001b[39;49m\u001b[39mTrue\u001b[39;49;00m,\n\u001b[1;32m 259\u001b[0m )\n", "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "\u001b[A" - ] } ], "source": [ @@ -5370,12 +179,12 @@ " is_dataset_tokenized=True,\n", " \n", " # SAE Parameters\n", - " expansion_factor = 128,\n", + " expansion_factor = 32,\n", " \n", " # Training Parameters\n", " lr = 0.0012,\n", " lr_scheduler_name=\"constantwithwarmup\",\n", - " l1_coefficient = 0.00016,\n", + " l1_coefficient = 0.0006,\n", " train_batch_size = 4096,\n", " context_size = 128,\n", " \n", @@ -5385,11 +194,10 @@ " store_batch_size = 32,\n", " \n", " # Resampling protocol\n", - " feature_sampling_method = 'l2',\n", - " feature_sampling_window = 2500,\n", + " feature_sampling_method = 'anthropic',\n", " feature_reinit_scale = 0.2,\n", - " dead_feature_window=15000,\n", - " dead_feature_threshold = 1e-8,\n", + " dead_feature_window=5000,\n", + " dead_feature_threshold = 1e-4,\n", " \n", " # WANDB\n", " log_to_wandb = True,\n", @@ -5402,7 +210,7 @@ " seed = 42,\n", " n_checkpoints = 0,\n", " checkpoint_path = \"checkpoints\",\n", - " dtype = torch.float32,\n", + " dtype = torch.bfloat16,\n", " )\n", "\n", "\n", @@ -5488,6493 +296,9 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Run name: 32768-L1-0.005-LR-0.0012-Tokens-5.000e+08\n", - "n_tokens_per_buffer (millions): 0.524288\n", - "Lower bound: n_contexts_per_buffer (millions): 0.004096\n", - "Total training steps: 122070\n", - "Total wandb updates: 610\n", - "n_dead_feature_samples: 4\n", - "Loaded pretrained model gpt2-small into HookedTransformer\n", - "Moving model to device: cuda\n", - "Dataset is not tokenized! Updating config.\n" - ] - }, - { - "data": { - "text/html": [ - "Finishing last run (ID:rju588dp) before initializing another..." - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "wandb: WARNING Source type is set to 'repo' but some required information is missing from the environment. A job will not be created from this run. See https://docs.wandb.ai/guides/launch/create-job\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a4653f24ffb04bee8ef2a781d09b31ef", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Label(value='5.180 MB of 5.180 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - "

Run history:


details/current_learning_rate▁▃▄█████████████████████████████████████
details/n_training_tokens▁▁▁▁▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▇▇▇▇▇▇███
losses/l1_loss█▄▄▄▃▃▃▃▃▃▃▃▂▂▂▂▂▂▂▂▂▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
losses/mse_loss█▄▃▂▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
losses/overall_loss█▄▃▃▃▂▂▂▂▂▂▂▂▂▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
metrics/CE_loss_score▁▃▄▅█
metrics/ce_loss_with_ablation█▅▂▅▁
metrics/ce_loss_with_sae█▅▃▅▁
metrics/ce_loss_without_sae█▅▂▅▁
metrics/explained_variance▁▅▆▇▇▇▇▇▇▇██████████████████████████████
metrics/explained_variance_std▁▁▅▆▆▇▆▇█▇█▇▇▆▇▆▇▆▅▆▆▆▅▆▇▇▆▇▇▇▆▇█▇▇█▇▇▇▇
metrics/kldiv_ablation▅▄▇▁█
metrics/kldiv_reconstructed█▄▁▄▃
metrics/l0█▃▃▂▂▂▂▂▂▂▂▂▂▂▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
metrics/l2_norm▂▁▇█▇
metrics/l2_ratio▂▁▆██
metrics/mean_log10_feature_sparsity█▅▃▂▁
sparsity/below_1e-5▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sparsity/below_1e-6▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sparsity/dead_features▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

Run summary:


details/current_learning_rate0.0012
details/n_training_tokens46694400
losses/l1_loss0.03032
losses/mse_loss0.02563
losses/overall_loss0.05595
metrics/CE_loss_score0.44251
metrics/ce_loss_with_ablation3.50559
metrics/ce_loss_with_sae3.46824
metrics/ce_loss_without_sae3.42117
metrics/explained_variance0.81914
metrics/explained_variance_std0.08569
metrics/kldiv_ablation3.06864
metrics/kldiv_reconstructed0.22516
metrics/l049.64258
metrics/l2_norm7.1911
metrics/l2_ratio0.76903
metrics/mean_log10_feature_sparsity-2.46982
sparsity/below_1e-50.0
sparsity/below_1e-60.0
sparsity/dead_features0.0

" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " View run 32768-L1-0.003-LR-0.0012-Tokens-5.000e+08 at: https://wandb.ai/jbloom/mats_sae_training_gpt2_small_hook_q_new2/runs/rju588dp
Synced 7 W&B file(s), 20 media file(s), 0 artifact file(s) and 0 other file(s)" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Find logs at: ./wandb/run-20231221_122305-rju588dp/logs" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Successfully finished last run (ID:rju588dp). Initializing new run:
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "14090c02aa774fbe8bf22244c76b536f", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "VBox(children=(Label(value='Waiting for wandb.init()...\\r'), FloatProgress(value=0.01111284193337067, max=1.0)…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "wandb version 0.16.1 is available! To upgrade, please run:\n", - " $ pip install wandb --upgrade" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Tracking run with wandb version 0.16.0" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Run data is saved locally in /home/paperspace/mats_sae_training/research/wandb/run-20231221_122817-xxr3fvsk" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "Syncing run 32768-L1-0.005-LR-0.0012-Tokens-5.000e+08 to Weights & Biases (docs)
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " View project at https://wandb.ai/jbloom/mats_sae_training_gpt2_small_hook_q_new2" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - " View run at https://wandb.ai/jbloom/mats_sae_training_gpt2_small_hook_q_new2/runs/xxr3fvsk" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A\n", - "\u001b[A" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m/home/paperspace/mats_sae_training/research/run.ipynb Cell 6\u001b[0m line \u001b[0;36m6\n\u001b[1;32m 9\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39msae_training\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mlm_runner\u001b[39;00m \u001b[39mimport\u001b[39;00m language_model_sae_runner\n\u001b[1;32m 13\u001b[0m cfg \u001b[39m=\u001b[39m LanguageModelSAERunnerConfig(\n\u001b[1;32m 14\u001b[0m \n\u001b[1;32m 15\u001b[0m \u001b[39m# Data Generating Function (Model + Training Distibuion)\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 60\u001b[0m dtype \u001b[39m=\u001b[39m torch\u001b[39m.\u001b[39mfloat32,\n\u001b[1;32m 61\u001b[0m )\n\u001b[0;32m---> 63\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m language_model_sae_runner(cfg)\n", - "File \u001b[0;32m~/mats_sae_training/research/../sae_training/lm_runner.py:23\u001b[0m, in \u001b[0;36mlanguage_model_sae_runner\u001b[0;34m(cfg)\u001b[0m\n\u001b[1;32m 20\u001b[0m wandb\u001b[39m.\u001b[39minit(project\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mwandb_project, config\u001b[39m=\u001b[39mcfg, name\u001b[39m=\u001b[39mcfg\u001b[39m.\u001b[39mrun_name)\n\u001b[1;32m 22\u001b[0m \u001b[39m# train SAE\u001b[39;00m\n\u001b[0;32m---> 23\u001b[0m sparse_autoencoder \u001b[39m=\u001b[39m train_sae_on_language_model(\n\u001b[1;32m 24\u001b[0m model, sparse_autoencoder, activations_loader,\n\u001b[1;32m 25\u001b[0m n_checkpoints\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mn_checkpoints,\n\u001b[1;32m 26\u001b[0m batch_size \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mtrain_batch_size,\n\u001b[1;32m 27\u001b[0m feature_sampling_method \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_method,\n\u001b[1;32m 28\u001b[0m feature_sampling_window \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_sampling_window,\n\u001b[1;32m 29\u001b[0m feature_reinit_scale \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mfeature_reinit_scale,\n\u001b[1;32m 30\u001b[0m dead_feature_threshold \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mdead_feature_threshold,\n\u001b[1;32m 31\u001b[0m dead_feature_window\u001b[39m=\u001b[39;49mcfg\u001b[39m.\u001b[39;49mdead_feature_window,\n\u001b[1;32m 32\u001b[0m use_wandb \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mlog_to_wandb,\n\u001b[1;32m 33\u001b[0m wandb_log_frequency \u001b[39m=\u001b[39;49m cfg\u001b[39m.\u001b[39;49mwandb_log_frequency\n\u001b[1;32m 34\u001b[0m )\n\u001b[1;32m 36\u001b[0m \u001b[39m# save sae to checkpoints folder\u001b[39;00m\n\u001b[1;32m 37\u001b[0m path \u001b[39m=\u001b[39m \u001b[39mf\u001b[39m\u001b[39m\"\u001b[39m\u001b[39m{\u001b[39;00mcfg\u001b[39m.\u001b[39mcheckpoint_path\u001b[39m}\u001b[39;00m\u001b[39m/final_\u001b[39m\u001b[39m{\u001b[39;00msparse_autoencoder\u001b[39m.\u001b[39mget_name()\u001b[39m}\u001b[39;00m\u001b[39m.pt\u001b[39m\u001b[39m\"\u001b[39m\n", - "File \u001b[0;32m~/mats_sae_training/research/../sae_training/train_sae_on_language_model.py:95\u001b[0m, in \u001b[0;36mtrain_sae_on_language_model\u001b[0;34m(model, sparse_autoencoder, activation_store, batch_size, n_checkpoints, feature_sampling_method, feature_sampling_window, feature_reinit_scale, dead_feature_threshold, dead_feature_window, use_wandb, wandb_log_frequency)\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[39m# Update learning rate here if using scheduler.\u001b[39;00m\n\u001b[1;32m 92\u001b[0m \n\u001b[1;32m 93\u001b[0m \u001b[39m# Forward and Backward Passes\u001b[39;00m\n\u001b[1;32m 94\u001b[0m optimizer\u001b[39m.\u001b[39mzero_grad()\n\u001b[0;32m---> 95\u001b[0m sae_in \u001b[39m=\u001b[39m activation_store\u001b[39m.\u001b[39;49mnext_batch()\n\u001b[1;32m 96\u001b[0m sae_out, feature_acts, loss, mse_loss, l1_loss \u001b[39m=\u001b[39m sparse_autoencoder(sae_in)\n\u001b[1;32m 97\u001b[0m n_training_tokens \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m batch_size\n", - "File \u001b[0;32m~/mats_sae_training/research/../sae_training/activations_store.py:267\u001b[0m, in \u001b[0;36mActivationsStore.next_batch\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 261\u001b[0m \u001b[39m\u001b[39m\u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 262\u001b[0m \u001b[39mGet the next batch from the current DataLoader. \u001b[39;00m\n\u001b[1;32m 263\u001b[0m \u001b[39mIf the DataLoader is exhausted, refill the buffer and create a new DataLoader.\u001b[39;00m\n\u001b[1;32m 264\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 265\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 266\u001b[0m \u001b[39m# Try to get the next batch\u001b[39;00m\n\u001b[0;32m--> 267\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mnext\u001b[39m(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataloader)\n\u001b[1;32m 268\u001b[0m \u001b[39mexcept\u001b[39;00m \u001b[39mStopIteration\u001b[39;00m:\n\u001b[1;32m 269\u001b[0m \u001b[39m# If the DataLoader is exhausted, create a new one\u001b[39;00m\n\u001b[1;32m 270\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataloader \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mget_data_loader()\n", - "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/utils/data/dataloader.py:630\u001b[0m, in \u001b[0;36m_BaseDataLoaderIter.__next__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 627\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_sampler_iter \u001b[39mis\u001b[39;00m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 628\u001b[0m \u001b[39m# TODO(/~https://github.com/pytorch/pytorch/issues/76750)\u001b[39;00m\n\u001b[1;32m 629\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_reset() \u001b[39m# type: ignore[call-arg]\u001b[39;00m\n\u001b[0;32m--> 630\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_next_data()\n\u001b[1;32m 631\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m+\u001b[39m\u001b[39m=\u001b[39m \u001b[39m1\u001b[39m\n\u001b[1;32m 632\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_dataset_kind \u001b[39m==\u001b[39m _DatasetKind\u001b[39m.\u001b[39mIterable \u001b[39mand\u001b[39;00m \\\n\u001b[1;32m 633\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called \u001b[39mis\u001b[39;00m \u001b[39mnot\u001b[39;00m \u001b[39mNone\u001b[39;00m \u001b[39mand\u001b[39;00m \\\n\u001b[1;32m 634\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_num_yielded \u001b[39m>\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_IterableDataset_len_called:\n", - "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/utils/data/dataloader.py:674\u001b[0m, in \u001b[0;36m_SingleProcessDataLoaderIter._next_data\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 672\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m_next_data\u001b[39m(\u001b[39mself\u001b[39m):\n\u001b[1;32m 673\u001b[0m index \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_next_index() \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[0;32m--> 674\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m_dataset_fetcher\u001b[39m.\u001b[39;49mfetch(index) \u001b[39m# may raise StopIteration\u001b[39;00m\n\u001b[1;32m 675\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory:\n\u001b[1;32m 676\u001b[0m data \u001b[39m=\u001b[39m _utils\u001b[39m.\u001b[39mpin_memory\u001b[39m.\u001b[39mpin_memory(data, \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_pin_memory_device)\n", - "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py:51\u001b[0m, in \u001b[0;36m_MapDatasetFetcher.fetch\u001b[0;34m(self, possibly_batched_index)\u001b[0m\n\u001b[1;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[1;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mdataset[idx] \u001b[39mfor\u001b[39;49;00m idx \u001b[39min\u001b[39;49;00m possibly_batched_index]\n\u001b[1;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", - "File \u001b[0;32m~/miniconda3/envs/mats_sae_training/lib/python3.11/site-packages/torch/utils/data/_utils/fetch.py:51\u001b[0m, in \u001b[0;36m\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 49\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset\u001b[39m.\u001b[39m__getitems__(possibly_batched_index)\n\u001b[1;32m 50\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[0;32m---> 51\u001b[0m data \u001b[39m=\u001b[39m [\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[idx] \u001b[39mfor\u001b[39;00m idx \u001b[39min\u001b[39;00m possibly_batched_index]\n\u001b[1;32m 52\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 53\u001b[0m data \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mdataset[possibly_batched_index]\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], + "outputs": [], "source": [ "import torch\n", "import os \n", @@ -12002,11 +326,11 @@ " cached_activations_path=\"../activations/\",\n", " \n", " # SAE Parameters\n", - " expansion_factor = 512, # 64 -> 4096, 128 -> 8192, 256 -> 16384, 512 -> 32768, 1024 -> 65536\n", + " expansion_factor = 2048, # 64 -> 4096, 128 -> 8192, 256 -> 16384, 512 -> 32768, 1024 -> 65536\n", " \n", " # Training Parameters\n", " lr = 0.0012,\n", - " l1_coefficient = 0.005,\n", + " l1_coefficient = 0.008,\n", " lr_scheduler_name=\"constantwithwarmup\",\n", " lr_warm_up_steps=1000, # about 4 million tokens.\n", " train_batch_size = 4096,\n", @@ -12022,7 +346,7 @@ " feature_sampling_window = 1000,# doesn't do anything currently.\n", " feature_reinit_scale = 0.2,\n", " dead_feature_window=21000,\n", - " dead_feature_threshold = 1e-5,\n", + " dead_feature_threshold = 1e-6,\n", " \n", " # WANDB\n", " log_to_wandb = True,\n", @@ -12035,18 +359,90 @@ " seed = 42,\n", " n_checkpoints = 5,\n", " checkpoint_path = \"checkpoints\",\n", - " dtype = torch.float32,\n", + " dtype = torch.bfloat16,\n", " )\n", "\n", "sparse_autoencoder = language_model_sae_runner(cfg)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Test from Pretrained:" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "import torch\n", + "import os \n", + "import sys\n", + "sys.path.append(\"../\")\n", + "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"\n", + "os.environ[\"WANDB__SERVICE_WAIT\"] = \"300\"\n", + "\n", + "from sae_training.config import LanguageModelSAERunnerConfig\n", + "from sae_training.lm_runner import language_model_sae_runner\n", + "\n", + "pretrained_path = \"checkpoints/xvnq6hwz/300003328_sparse_autoencoder_gpt2-small_blocks.10.attn.hook_q_131072.pt\"\n", + "\n", + "cfg = LanguageModelSAERunnerConfig(\n", + "\n", + " # Data Generating Function (Model + Training Distibuion)\n", + " model_name = \"gpt2-small\",\n", + " hook_point = \"blocks.10.attn.hook_q\",\n", + " hook_point_layer = 10,\n", + " hook_point_head_index=7,\n", + " d_in = 64,\n", + " dataset_path = \"Skylion007/openwebtext\",\n", + " is_dataset_tokenized=False,\n", + " use_cached_activations=True,\n", + " cached_activations_path=\"../activations/\",\n", + " \n", + " # SAE Parameters\n", + " from_pretrained_path = pretrained_path,\n", + " expansion_factor = 2048, # 64 -> 4096, 128 -> 8192, 256 -> 16384, 512 -> 32768, 1024 -> 65536\n", + " \n", + " # Training Parameters\n", + " lr = 0.0012,\n", + " l1_coefficient = 0.008,\n", + " lr_scheduler_name=\"constantwithwarmup\",\n", + " lr_warm_up_steps=1000, # about 4 million tokens.\n", + " train_batch_size = 4096,\n", + " context_size = 128,\n", + " \n", + " # Activation Store Parameters\n", + " n_batches_in_buffer = 128,\n", + " total_training_tokens = 1_000_000 * 500, #- 2_500_000,# avoid having to muse a buffer we don't have.\n", + " store_batch_size = 32,\n", + " \n", + " # Resampling protocol\n", + " feature_sampling_method = 'l2',\n", + " feature_sampling_window = 1000,# doesn't do anything currently.\n", + " feature_reinit_scale = 0.2,\n", + " dead_feature_window=2000,\n", + " dead_feature_threshold = 1e-6,\n", + " \n", + " # WANDB\n", + " log_to_wandb = False,\n", + " wandb_project= \"mats_sae_training_gpt2_small_hook_q_new2\",\n", + " wandb_entity = None,\n", + " wandb_log_frequency=200,\n", + " \n", + " # Misc\n", + " device = \"cuda\",\n", + " seed = 42,\n", + " n_checkpoints = 5,\n", + " checkpoint_path = \"checkpoints\",\n", + " dtype = torch.bfloat16,\n", + " )\n", + "\n", + "sparse_autoencoder = language_model_sae_runner(cfg)" + ] }, { "cell_type": "code", @@ -12280,13 +676,6 @@ "outputs": [], "source": [] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Run caching of activations to disk" - ] - }, { "cell_type": "code", "execution_count": null, @@ -12403,6 +792,13 @@ "sparse_autoencoder = language_model_sae_runner(cfg)\n" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Run caching of activations to disk" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/sae_training/activations_store.py b/sae_training/activations_store.py index 09badca0..f61a376d 100644 --- a/sae_training/activations_store.py +++ b/sae_training/activations_store.py @@ -128,15 +128,14 @@ def get_batch_tokens(self): # pbar.n = batch_tokens.shape[0] # pbar.refresh() - return batch_tokens[:batch_size] - def get_activations(self, batch_tokens): + def get_activations(self, batch_tokens, get_loss=False): act_name = self.cfg.hook_point hook_point_layer = self.cfg.hook_point_layer if self.cfg.hook_point_head_index is not None: - activations = self.model.run_with_cache( + loss, activations = self.model.run_with_cache( batch_tokens, names_filter=act_name, stop_at_layer=hook_point_layer+1 @@ -151,6 +150,7 @@ def get_activations(self, batch_tokens): )[ 1 ][act_name] + return activations diff --git a/sae_training/config.py b/sae_training/config.py index f0dec1e2..2f8bf88d 100644 --- a/sae_training/config.py +++ b/sae_training/config.py @@ -52,7 +52,7 @@ class LanguageModelSAERunnerConfig(RunnerConfig): # SAE Parameters expansion_factor: int = 4 - from_pretrained_path: Optional[str] = None, + from_pretrained_path: Optional[str] = None # Training Parameters l1_coefficient: float = 1e-3 @@ -62,8 +62,9 @@ class LanguageModelSAERunnerConfig(RunnerConfig): train_batch_size: int = 4096 # Resampling protocol args - feature_sampling_method: str = "l2" # None or l2 feature_sampling_window: int = 200 + feature_sampling_method: str = "Anthropic" # None or Anthropic + resample_batches: int = 32 feature_reinit_scale: float = 0.2 dead_feature_window: int = 100 # unless this window is larger feature sampling, dead_feature_threshold: float = 1e-8 @@ -84,7 +85,7 @@ def __post_init__(self): self.tokens_per_buffer = self.train_batch_size * self.context_size * self.n_batches_in_buffer self.run_name = f"{self.d_sae}-L1-{self.l1_coefficient}-LR-{self.lr}-Tokens-{self.total_training_tokens:3.3e}" - if self.feature_sampling_method not in [None, "l2"]: + if self.feature_sampling_method not in [None, "l2", "anthropic"]: raise ValueError(f"feature_sampling_method must be None, l2, or anthropic. Got {self.feature_sampling_method}") self.device = torch.device(self.device) diff --git a/sae_training/sparse_autoencoder.py b/sae_training/sparse_autoencoder.py index 67ba600e..3201ae39 100644 --- a/sae_training/sparse_autoencoder.py +++ b/sae_training/sparse_autoencoder.py @@ -6,12 +6,15 @@ import gzip import os import pickle +from functools import partial import einops import torch +import torch.nn.functional as F from jaxtyping import Float from torch import Tensor, nn from torch.distributions.categorical import Categorical +from tqdm import tqdm from transformer_lens.hook_points import HookedRootModule, HookPoint @@ -67,6 +70,8 @@ def __init__( self.setup() # Required for `HookedRootModule`s def forward(self, x): + # move x to correct dtype + x = x.to(self.dtype) sae_in = self.hook_sae_in( x - self.b_dec ) # Remove encoder bias as per Anthropic @@ -99,18 +104,21 @@ def forward(self, x): return sae_out, feature_acts, loss, mse_loss, l1_loss - @torch.no_grad() - def resample_neurons( + def resample_neurons_l2( self, x: Float[Tensor, "batch_size n_hidden"], feature_sparsity: Float[Tensor, "n_hidden_ae"], - neuron_resample_scale: float, optimizer: torch.optim.Optimizer, ) -> None: ''' Resamples neurons that have been dead for `dead_neuron_window` steps, according to `frac_active`. + + I'll probably break this now and fix it later! ''' + + feature_reinit_scale = self.cfg.feature_reinit_scale + sae_out, _, _, _, _ = self.forward(x) per_token_l2_loss = (sae_out - x).pow(2).sum(dim=-1).squeeze() @@ -129,9 +137,9 @@ def resample_neurons( return 0 # If we have zero reconstruction loss, we don't need to resample neurons # Draw `n_hidden_ae` samples from [0, 1, ..., batch_size-1], with probabilities proportional to l2_loss squared + per_token_l2_loss = per_token_l2_loss.to(torch.float32) # wont' work with bfloat16 distn = Categorical(probs = per_token_l2_loss.pow(2) / (per_token_l2_loss.pow(2).sum())) - n_resampled_neurons = n_dead - replacement_indices = distn.sample((n_resampled_neurons,)) # shape [n_dead] + replacement_indices = distn.sample((n_dead,)) # shape [n_dead] # Index into the batch of hidden activations to get our replacement values replacement_values = (x - self.b_dec)[replacement_indices] # shape [n_dead n_input_ae] @@ -146,7 +154,7 @@ def resample_neurons( W_enc_norm_alive_mean = 1.0 if len(alive_neurons) == 0 else self.W_enc[:, alive_neurons].norm(dim=0).mean().item() # Lastly, set the new weights & biases - self.W_enc.data[:, is_dead] = (replacement_values * W_enc_norm_alive_mean * neuron_resample_scale).T + self.W_enc.data[:, is_dead] = (replacement_values * W_enc_norm_alive_mean * feature_reinit_scale).T self.b_enc.data[is_dead] = 0.0 @@ -181,7 +189,173 @@ def resample_neurons( "Warning: it does not seem as if resetting the Adam parameters worked" ) - return n_resampled_neurons + return n_dead + + @torch.no_grad() + def resample_neurons_anthropic( + self, + dead_neuron_indices, + model, + optimizer, + activation_store): + """ + Arthur's version of Anthropic's feature resampling + procedure. + """ + # collect global loss increases, and input activations + global_loss_increases, global_input_activations = self.collect_anthropic_resampling_losses( + model, activation_store + ) + + # sample according to losses + sample_indices = torch.multinomial( + global_loss_increases / global_loss_increases.sum(), + len(dead_neuron_indices), + replacement=False, + ) + + # Replace W_dec with normalized differences in activations + self.W_dec.data[dead_neuron_indices, :] = ( + ( + global_input_activations[sample_indices] + / torch.norm(global_input_activations[sample_indices], dim=1, keepdim=True) + ) + .to(self.dtype) + .to(self.device) + ) + + # Lastly, set the new weights & biases + self.W_enc.data[:, dead_neuron_indices] = self.W_dec.data[dead_neuron_indices, :].T + self.b_enc.data[dead_neuron_indices] = 0.0 + + # Reset the Encoder Weights + if dead_neuron_indices.shape[0] < self.d_sae: + sum_of_all_norms = torch.norm(self.W_enc.data, dim=0).sum() + sum_of_all_norms -= len(dead_neuron_indices) + average_norm = sum_of_all_norms / (self.d_sae - len(dead_neuron_indices)) + self.W_enc.data[:, dead_neuron_indices] *= self.cfg.feature_reinit_scale * average_norm + + # Set biases to resampled value + relevant_biases = self.b_enc.data[dead_neuron_indices].mean() + self.b_enc.data[dead_neuron_indices] = relevant_biases * 0 # bias resample factor (put in config?) + + else: + self.W_enc.data[:, dead_neuron_indices] *= self.cfg.feature_reinit_scale + self.b_enc.data[dead_neuron_indices] = -5.0 + + # TODO: Refactor this resetting to be outside of resampling. + # reset the Adam Optimiser for every modified weight and bias term + # Reset all the Adam parameters + for dict_idx, (k, v) in enumerate(optimizer.state.items()): + for v_key in ["exp_avg", "exp_avg_sq"]: + if dict_idx == 0: + assert k.data.shape == (self.d_in, self.d_sae) + v[v_key][:, dead_neuron_indices] = 0.0 + elif dict_idx == 1: + assert k.data.shape == (self.d_sae,) + v[v_key][dead_neuron_indices] = 0.0 + elif dict_idx == 2: + assert k.data.shape == (self.d_sae, self.d_in) + v[v_key][dead_neuron_indices, :] = 0.0 + elif dict_idx == 3: + assert k.data.shape == (self.d_in,) + else: + raise ValueError(f"Unexpected dict_idx {dict_idx}") + + # Check that the opt is really updated + for dict_idx, (k, v) in enumerate(optimizer.state.items()): + for v_key in ["exp_avg", "exp_avg_sq"]: + if dict_idx == 0: + if k.data.shape != (self.d_in, self.d_sae): + print( + "Warning: it does not seem as if resetting the Adam parameters worked, there are shapes mismatches" + ) + if v[v_key][:, dead_neuron_indices].abs().max().item() > 1e-6: + print( + "Warning: it does not seem as if resetting the Adam parameters worked" + ) + + return + + + @torch.no_grad() + def collect_anthropic_resampling_losses(self, model, activation_store): + """ + Collects the losses for resampling neurons (anthropic) + """ + + batch_size = self.cfg.store_batch_size + + # we're going to collect this many forward passes + number_final_activations = self.cfg.resample_batches * batch_size + # but have seq len number of tokens in each + number_activations_total = number_final_activations * self.cfg.context_size + anthropic_iterator = range(0, number_final_activations, batch_size) + anthropic_iterator = tqdm(anthropic_iterator, desc="Collecting losses for resampling...") + + global_loss_increases = torch.zeros((number_final_activations,), dtype=self.dtype, device=self.device) + global_input_activations = torch.zeros((number_final_activations, self.d_in), dtype=self.dtype, device=self.device) + + for refill_idx in anthropic_iterator: + + # get a batch, calculate loss with/without using SAE reconstruction. + batch_tokens = activation_store.get_batch_tokens() + ce_loss_with_recons = self.get_test_loss(batch_tokens, model) + ce_loss_without_recons, normal_activations_cache = model.run_with_cache( + batch_tokens, + names_filter=self.cfg.hook_point, + return_type = "loss", + loss_per_token = True, + ) + # ce_loss_without_recons = model.loss_fn(normal_logits, batch_tokens, True) + # del normal_logits + + normal_activations = normal_activations_cache[self.cfg.hook_point] + + # calculate the difference in loss + changes_in_loss = ce_loss_with_recons - ce_loss_without_recons + changes_in_loss = changes_in_loss.cpu() + + # sample from the loss differences + probs = F.relu(changes_in_loss) / F.relu(changes_in_loss).sum(dim=1, keepdim=True) + changes_in_loss_dist = Categorical(probs) + samples = changes_in_loss_dist.sample() + + assert samples.shape == (batch_size,), f"{samples.shape=}; {self.cfg.store_batch_size=}" + + end_idx = refill_idx + batch_size + global_loss_increases[refill_idx:end_idx] = changes_in_loss[torch.arange(batch_size), samples] + global_input_activations[refill_idx:end_idx] = normal_activations[torch.arange(batch_size), samples] + + return global_loss_increases, global_input_activations + + @torch.no_grad() + def get_test_loss(self, batch_tokens, model): + """ + A method for running the model with the SAE activations in order to return the loss. + returns per token loss when activations are substituted in. + """ + head_index = self.cfg.hook_point_head_index + + def standard_replacement_hook(activations, hook): + activations = self.forward(activations)[0].to(activations.dtype) + return activations + + def head_replacement_hook(activations, hook): + new_actions = self.forward(activations[:,:,head_index])[0].to(activations.dtype) + activations[:,:,head_index] = new_actions + return activations + + replacement_hook = standard_replacement_hook if head_index is None else head_replacement_hook + + ce_loss_with_recons = model.run_with_hooks( + batch_tokens, + return_type="loss", + fwd_hooks=[(self.cfg.hook_point, replacement_hook)], + ) + + return ce_loss_with_recons + @torch.no_grad() def set_decoder_norm_to_unit_norm(self): diff --git a/sae_training/train_sae_on_language_model.py b/sae_training/train_sae_on_language_model.py index 1b72149b..cac8dfe7 100644 --- a/sae_training/train_sae_on_language_model.py +++ b/sae_training/train_sae_on_language_model.py @@ -35,6 +35,7 @@ def train_sae_on_language_model( n_training_steps = 0 n_training_tokens = 0 n_resampled_neurons = 0 + steps_before_reset = 0 if n_checkpoints > 0: checkpoint_thresholds = list(range(0, total_training_tokens, total_training_tokens // n_checkpoints))[1:] @@ -61,37 +62,73 @@ def train_sae_on_language_model( # Make sure the W_dec is still zero-norm sparse_autoencoder.set_decoder_norm_to_unit_norm() - # Resample dead neurons - if (feature_sampling_method is not None) and ((n_training_steps + 1) % dead_feature_window == 0): - # Get the fraction of neurons active in the previous window - feature_sparsity = act_freq_scores / n_frac_active_tokens - is_dead = (feature_sparsity < sparse_autoencoder.cfg.dead_feature_threshold) + if (feature_sampling_method.lower()=="anthropic") and ((n_training_steps + 1) % dead_feature_window == 0): - # if standard resampling <- do this - n_resampled_neurons = sparse_autoencoder.resample_neurons( - activation_store.next_batch(), - feature_sparsity, - feature_reinit_scale, - optimizer + feature_sparsity = act_freq_scores / n_frac_active_tokens + dead_neuron_indices = (feature_sparsity < sparse_autoencoder.cfg.dead_feature_threshold).nonzero(as_tuple=False)[:, 0] + sparse_autoencoder.resample_neurons_anthropic( + dead_neuron_indices, + model, + optimizer, + activation_store ) - # for all the dead neurons, set the feature sparsity to the dead feature threshold - act_freq_scores[is_dead] = sparse_autoencoder.cfg.dead_feature_threshold * n_frac_active_tokens - if n_resampled_neurons > 0: - print(f"Resampled {n_resampled_neurons} neurons") + if use_wandb: wandb.log( { - "metrics/n_resampled_neurons": n_resampled_neurons, + "metrics/n_resampled_neurons": len(dead_neuron_indices), }, step=n_training_steps, ) - n_resampled_neurons = 0 - - # Update learning rate here if using scheduler. + + # for now, we'll hardcode this. + current_lr = scheduler.get_last_lr()[0] + reduced_lr = current_lr * 0.1 + increment = (current_lr - reduced_lr) / 1000 + optimizer.param_groups[0]['lr'] = reduced_lr + steps_before_reset = 1000 + - # Forward and Backward Passes + # Resample dead neurons + if (feature_sampling_method == "l2") and ((n_training_steps + 1) % dead_feature_window == 0): + print("no l2 resampling currently. Please use anthropic resampling") + # # Get the fraction of neurons active in the previous window + # feature_sparsity = act_freq_scores / n_frac_active_tokens + # is_dead = (feature_sparsity < sparse_autoencoder.cfg.dead_feature_threshold) + + # # if standard resampling <- do this + # n_resampled_neurons = sparse_autoencoder.resample_neurons( + # activation_store.next_batch(), + # feature_sparsity, + # feature_reinit_scale, + # optimizer + # ) + # # for all the dead neurons, set the feature sparsity to the dead feature threshold + # act_freq_scores[is_dead] = sparse_autoencoder.cfg.dead_feature_threshold * n_frac_active_tokens + # if n_resampled_neurons > 0: + # print(f"Resampled {n_resampled_neurons} neurons") + # if use_wandb: + # wandb.log( + # { + # "metrics/n_resampled_neurons": n_resampled_neurons, + # }, + # step=n_training_steps, + # ) + # n_resampled_neurons = 0 + + + if (steps_before_reset > 0) and n_training_steps > 0: + steps_before_reset -= 1 + optimizer.param_groups[0]['lr'] += increment + if steps_before_reset == 0: + optimizer.param_groups[0]['lr'] = current_lr + else: + scheduler.step() + optimizer.zero_grad() + + # Forward and Backward Passes sae_in = activation_store.next_batch() sae_out, feature_acts, loss, mse_loss, l1_loss = sparse_autoencoder(sae_in) n_training_tokens += batch_size @@ -174,7 +211,7 @@ def train_sae_on_language_model( loss.backward() sparse_autoencoder.remove_gradient_parallel_to_decoder_directions() optimizer.step() - scheduler.step() + # checkpoint if at checkpoint frequency if n_checkpoints > 0 and n_training_tokens > checkpoint_thresholds[0]: @@ -262,45 +299,45 @@ def run_evals(sparse_autoencoder: SparseAutoencoder, activation_store: Activatio # Visualizations to show L0 / MSE distributions - l0 = (feature_acts > 0).float().sum(-1) - per_token_l2_loss = (sae_out - original_act).pow(2).sum(dim=-1).squeeze() + # l0 = (feature_acts > 0).float().sum(-1) + # per_token_l2_loss = (sae_out - original_act).pow(2).sum(dim=-1).squeeze() - fig = px.scatter( - x = per_token_l2_loss.flatten().cpu().numpy(), - y = l0.flatten().cpu().numpy(), - color = np.arange(per_token_l2_loss.shape[1]).repeat(per_token_l2_loss.shape[0]), - opacity=0.5, - labels = {"color": "position", "x": "MSE Loss", "y": "L0"}, - title = "L0 vs MSE Loss", - marginal_x="histogram", - marginal_y="histogram", - ) - wandb.log({"plots/l0_vs_mse_loss": wandb.Plotly(fig)}, step = n_training_steps) + # fig = px.scatter( + # x = per_token_l2_loss.flatten().cpu().numpy(), + # y = l0.flatten().cpu().numpy(), + # color = np.arange(per_token_l2_loss.shape[1]).repeat(per_token_l2_loss.shape[0]), + # opacity=0.5, + # labels = {"color": "position", "x": "MSE Loss", "y": "L0"}, + # title = "L0 vs MSE Loss", + # marginal_x="histogram", + # marginal_y="histogram", + # ) + # wandb.log({"plots/l0_vs_mse_loss": wandb.Plotly(fig)}, step = n_training_steps) - fig = px.scatter( - x = per_token_l2_loss.flatten().cpu().numpy(), - y = l2_norm_in.flatten().cpu().numpy(), - color = np.arange(per_token_l2_loss.shape[1]).repeat(per_token_l2_loss.shape[0]), - opacity=0.5, - labels={"color": "position", "x": "MSE Loss", "y": "L2 Norm"}, - title = "L2 Norm vs MSE Loss", - marginal_x="histogram", - marginal_y="histogram", - ) - wandb.log({"plots/l2_norm_vs_mse_loss": wandb.Plotly(fig)}, step = n_training_steps) + # fig = px.scatter( + # x = per_token_l2_loss.flatten().cpu().numpy(), + # y = l2_norm_in.flatten().cpu().numpy(), + # color = np.arange(per_token_l2_loss.shape[1]).repeat(per_token_l2_loss.shape[0]), + # opacity=0.5, + # labels={"color": "position", "x": "MSE Loss", "y": "L2 Norm"}, + # title = "L2 Norm vs MSE Loss", + # marginal_x="histogram", + # marginal_y="histogram", + # ) + # wandb.log({"plots/l2_norm_vs_mse_loss": wandb.Plotly(fig)}, step = n_training_steps) # if dealing with a head SAE, do the head metrics. if sparse_autoencoder.cfg.hook_point_head_index: # show patterns before/after - fig_patterns_original = px.imshow(patterns_original[0].numpy(), title="original attn scores", - color_continuous_midpoint=0, color_continuous_scale="RdBu") - fig_patterns_original.update_layout(coloraxis_showscale=False) # hide colorbar - wandb.log({"attention/patterns_original": wandb.Plotly(fig_patterns_original)}, step = n_training_steps) - fig_patterns_reconstructed = px.imshow(patterns_reconstructed[0].numpy(), title="reconstructed attn scores", - color_continuous_midpoint=0, color_continuous_scale="RdBu") - fig_patterns_reconstructed.update_layout(coloraxis_showscale=False) # hide colorbar - wandb.log({"attention/patterns_reconstructed": wandb.Plotly(fig_patterns_reconstructed)}, step = n_training_steps) + # fig_patterns_original = px.imshow(patterns_original[0].numpy(), title="original attn scores", + # color_continuous_midpoint=0, color_continuous_scale="RdBu") + # fig_patterns_original.update_layout(coloraxis_showscale=False) # hide colorbar + # wandb.log({"attention/patterns_original": wandb.Plotly(fig_patterns_original)}, step = n_training_steps) + # fig_patterns_reconstructed = px.imshow(patterns_reconstructed[0].numpy(), title="reconstructed attn scores", + # color_continuous_midpoint=0, color_continuous_scale="RdBu") + # fig_patterns_reconstructed.update_layout(coloraxis_showscale=False) # hide colorbar + # wandb.log({"attention/patterns_reconstructed": wandb.Plotly(fig_patterns_reconstructed)}, step = n_training_steps) kl_result_reconstructed = kl_divergence_attention(patterns_original, patterns_reconstructed) kl_result_reconstructed = kl_result_reconstructed.sum(dim=-1).numpy() @@ -349,12 +386,12 @@ def get_recons_loss(sparse_autoencder, model, activation_store, batch_tokens): def replacement_hook(mlp_post, hook, encoder): - mlp_post_reconstr = encoder(mlp_post)[0] - return mlp_post_reconstr + activations = encoder(mlp_post)[0].to(mlp_post.dtype) + return activations def mean_ablate_hook(mlp_post, hook): - mlp_post[:] = mlp_post.mean([0, 1]) + mlp_post[:] = mlp_post.mean([0, 1]).to(mlp_post.dtype) return mlp_post diff --git a/sae_training/utils.py b/sae_training/utils.py index 5b339b45..e3af6bc1 100644 --- a/sae_training/utils.py +++ b/sae_training/utils.py @@ -1,4 +1,5 @@ from typing import Tuple + import torch from transformer_lens import HookedTransformer diff --git a/tests/unit/test_sparse_autoencoder.py b/tests/unit/test_sparse_autoencoder.py index 953116f6..427aa409 100644 --- a/tests/unit/test_sparse_autoencoder.py +++ b/tests/unit/test_sparse_autoencoder.py @@ -4,7 +4,9 @@ import pytest import torch +from transformer_lens import HookedTransformer +from sae_training.activations_store import ActivationsStore from sae_training.sparse_autoencoder import SparseAutoencoder TEST_MODEL = "tiny-stories-1M" @@ -19,10 +21,12 @@ def cfg(): mock_config = SimpleNamespace() mock_config.model_name = TEST_MODEL mock_config.hook_point = "blocks.0.hook_mlp_out" - mock_config.hook_point_layer = 1 + mock_config.hook_point_layer = 0 + mock_config.hook_point_head_index = None mock_config.dataset_path = TEST_DATASET mock_config.is_dataset_tokenized = False - mock_config.d_in = 256 + mock_config.use_cached_activations = False + mock_config.d_in = 64 mock_config.expansion_factor = 2 mock_config.d_sae = mock_config.d_in * mock_config.expansion_factor mock_config.l1_coefficient = 2e-3 @@ -31,19 +35,21 @@ def cfg(): mock_config.context_size = 64 mock_config.feature_sampling_method = None mock_config.feature_sampling_window = 50 + mock_config.resample_batches = 4 mock_config.feature_reinit_scale = 0.1 mock_config.dead_feature_threshold = 1e-7 mock_config.n_batches_in_buffer = 10 mock_config.total_training_tokens = 1_000_000 - mock_config.store_batch_size = 2048 + mock_config.store_batch_size = 32 mock_config.log_to_wandb = False mock_config.wandb_project = "test_project" mock_config.wandb_entity = "test_entity" mock_config.wandb_log_frequency = 10 - mock_config.device = "cpu" + mock_config.device = "cuda" mock_config.seed = 24 mock_config.checkpoint_path = "test/checkpoints" - mock_config.dtype = torch.float32 + mock_config.dtype = torch.bfloat16 + # mock_config.dtype = torch.float32 return mock_config @@ -54,6 +60,14 @@ def sparse_autoencoder(cfg): """ return SparseAutoencoder(cfg) +@pytest.fixture +def model(): + return HookedTransformer.from_pretrained(TEST_MODEL) + +@pytest.fixture +def activation_store(cfg, model): + return ActivationsStore(cfg, model) + def test_sparse_autoencoder_init(cfg): sparse_autoencoder = SparseAutoencoder(cfg) @@ -154,7 +168,6 @@ def test_load_from_pretrained_pkl_gz(cfg): sparse_autoencoder_loaded_state_dict[key] # pylint: disable=unsubscriptable-object ) - def test_sparse_autoencoder_forward(sparse_autoencoder): batch_size = 32 @@ -183,7 +196,7 @@ def test_sparse_autoencoder_forward(sparse_autoencoder): assert mse_loss.dtype == sparse_autoencoder.dtype assert l1_loss.dtype == sparse_autoencoder.dtype -def test_sparse_autoencoder_resample_neurons(sparse_autoencoder): +def test_sparse_autoencoder_resample_neurons_l2(sparse_autoencoder): batch_size = 32 d_in =sparse_autoencoder.d_in @@ -219,7 +232,7 @@ def test_sparse_autoencoder_resample_neurons(sparse_autoencoder): alive_neurons = feature_sparsity >= sparse_autoencoder.cfg.dead_feature_threshold - n_resampled_neurons = sparse_autoencoder.resample_neurons(x, feature_sparsity, neuron_resample_scale, optimizer) + n_resampled_neurons = sparse_autoencoder.resample_neurons_l2(x, feature_sparsity, neuron_resample_scale, optimizer) # want to check the following: # 1. that the number of neurons reset is equal to the number of neurons that should be reset @@ -262,6 +275,89 @@ def test_sparse_autoencoder_resample_neurons(sparse_autoencoder): sparse_autoencoder.W_dec[is_dead, :] / sparse_autoencoder.W_dec[is_dead, :].norm(dim=1).unsqueeze(1) ) +def test_sparse_autoencoder_resample_neurons_anthropic(sparse_autoencoder, model, activation_store): + ''' + Not sure how to test this properly so for now + we'll just check that it runs without error. + + ''' + + batch_size = sparse_autoencoder.cfg.store_batch_size + d_in =sparse_autoencoder.d_in + d_sae = sparse_autoencoder.d_sae + neuron_resample_scale = sparse_autoencoder.cfg.feature_reinit_scale + feature_sparsity = torch.exp((torch.randn(d_sae) - 17)) + optimizer = torch.optim.Adam(sparse_autoencoder.parameters(), lr=1e-4) + + # Set optimizer state so we can tell when it is reset: + dummy_value = 5.0 + for dict_idx, (k, v) in enumerate(optimizer.state.items()): + for v_key in ["exp_avg", "exp_avg_sq"]: + if dict_idx == 0: # W_enc + assert k.data.shape == (d_in, d_sae) + v[v_key] = dummy_value + elif dict_idx == 1: # b_enc + assert k.data.shape == (d_sae,) + v[v_key] = dummy_value + elif dict_idx == 2: # W_dec + assert k.data.shape == (d_sae, d_in) + v[v_key]= dummy_value + elif dict_idx == 3: # b_dec + assert k.data.shape == (d_in,) + + dead_neuron_indices = (feature_sparsity < sparse_autoencoder.cfg.dead_feature_threshold).nonzero(as_tuple=False)[:, 0] + alive_neurons = (feature_sparsity >= sparse_autoencoder.cfg.dead_feature_threshold).nonzero(as_tuple=False)[:, 0] + + sparse_autoencoder.resample_neurons_anthropic( + dead_neuron_indices, + model, + optimizer, + activation_store + ) + + # # want to check the following: + # # 1. that the number of neurons reset is equal to the number of neurons that should be reset + # assert n_resampled_neurons == is_dead.sum().item() + + # # 2. for each neuron we reset: + # # a. the bias is zero + # assert torch.allclose( + # sparse_autoencoder.b_enc.data[is_dead], + # torch.zeros_like(sparse_autoencoder.b_enc.data[is_dead])) + # # b. the encoder weights have norm 0.2 * average of other weights. + # mean_decoder_norm = sparse_autoencoder.W_enc[:, alive_neurons].norm(dim=0).mean().item() + # assert torch.allclose( + # sparse_autoencoder.W_enc[:, is_dead].norm(dim=0), + # torch.ones(n_resampled_neurons) * 0.2 * mean_decoder_norm + # ) + # # c. the decoder weights have unit norm + # assert torch.allclose( + # sparse_autoencoder.W_dec[is_dead, :].norm(dim=1), + # torch.ones(n_resampled_neurons) + # ) + + # # d. the Adam parameters are reset + # for dict_idx, (k, v) in enumerate(optimizer.state.items()): + # for v_key in ["exp_avg", "exp_avg_sq"]: + # if dict_idx == 0: + # if k.data.shape != (d_in, d_sae): + # print( + # "Warning: it does not seem as if resetting the Adam parameters worked, there are shapes mismatches" + # ) + # if v[v_key][:, is_dead].abs().max().item() > 1e-6: + # print( + # "Warning: it does not seem as if resetting the Adam parameters worked" + # ) + + # # e. check that the decoder weights for reset neurons match the encoder weights for reset neurons + # # (given both are normalized) + # assert torch.allclose( + # (sparse_autoencoder.W_enc[:, is_dead] / sparse_autoencoder.W_enc[:, is_dead].norm(dim=0)).T, + # sparse_autoencoder.W_dec[is_dead, :] / sparse_autoencoder.W_dec[is_dead, :].norm(dim=1).unsqueeze(1) + # ) + + + @pytest.mark.skip("TODO") def test_sparse_eautoencoder_remove_gradient_parallel_to_decoder_directions(cfg): pass # TODO