└── transformer-autoencoder.ipynb /transformer-autoencoder.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": { 6 | "colab_type": "text", 7 | "id": "bMySaUidhvWx" 8 | }, 9 | "source": [ 10 | "# Autoencoders for text embeddings " 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 1, 16 | "metadata": { 17 | "ExecuteTime": { 18 | "end_time": "2019-03-20T18:01:29.479713Z", 19 | "start_time": "2019-03-20T18:01:25.337208Z" 20 | }, 21 | "colab": { 22 | "base_uri": "https://localhost:8080/", 23 | "height": 34 24 | }, 25 | "colab_type": "code", 26 | "id": "fDVWZDdWhvWy", 27 | "outputId": "0f3a7609-bdd1-4d62-d8e1-7bb0ae90f5ef", 28 | "pycharm": { 29 | "is_executing": false 30 | } 31 | }, 32 | "outputs": [ 33 | { 34 | "name": "stderr", 35 | "output_type": "stream", 36 | "text": [ 37 | "The pre-trained model you are loading is an uncased model but you have set `do_lower_case` to False. We are setting `do_lower_case=True` for you but you may want to check this behavior.\n" 38 | ] 39 | }, 40 | { 41 | "name": "stdout", 42 | "output_type": "stream", 43 | "text": [ 44 | "use_cuda: True, n_gpu: 4, devices: ['Tesla K80', 'Tesla K80', 'Tesla K80', 'Tesla K80']\n" 45 | ] 46 | } 47 | ], 48 | "source": [ 49 | "%reload_ext autoreload\n", 50 | "%autoreload 2\n", 51 | "%matplotlib inline\n", 52 | "%config InlineBackend.figure_format = 'retina'\n", 53 | "\n", 54 | "# ! pip install pytorch-pretrained-bert==0.6.2\n", 55 | "from pytorch_pretrained_bert import BertTokenizer, BertModel, BertForTokenClassification\n", 56 | "tokenizer = BertTokenizer.from_pretrained('bert-base-uncased', do_lower_case=False)\n", 57 | "\n", 58 | "from IPython.display import clear_output\n", 59 | "import re, math, time, itertools\n", 60 | "import copy\n", 61 | "from itertools import islice\n", 62 | "import numpy as np\n", 63 | "import pandas as pd\n", 64 | "import seaborn as sns\n", 65 | "import matplotlib.pyplot as plt\n", 66 | "from collections import Counter\n", 67 | "from tqdm import tnrange, tqdm_notebook\n", 68 | "\n", 69 | "from scipy.sparse import csr_matrix\n", 70 | "import sklearn\n", 71 | "from sklearn import metrics\n", 72 | "from sklearn.datasets import fetch_20newsgroups\n", 73 | "from sklearn.preprocessing import StandardScaler\n", 74 | "from sklearn.model_selection import train_test_split\n", 75 | "from sklearn.linear_model import SGDClassifier, LogisticRegression\n", 76 | "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", 77 | "\n", 78 | "import torch\n", 79 | "import torch.nn as nn\n", 80 | "import torch.nn.functional as F\n", 81 | "from torch.utils.data import DataLoader, TensorDataset\n", 82 | "from torch.autograd import Variable\n", 83 | "from torch.utils.data import TensorDataset, DataLoader, RandomSampler, SequentialSampler\n", 84 | "\n", 85 | "from fastai import *\n", 86 | "from fastai.text import *\n", 87 | "\n", 88 | "from torchtext import data, datasets\n", 89 | "\n", 90 | "# sns.set_context(\"paper\")\n", 91 | "use_cuda = torch.cuda.is_available()\n", 92 | "device = torch.device(\"cuda:0\" if use_cuda else \"cpu\")\n", 93 | "n_gpu = torch.cuda.device_count()\n", 94 | "print(f'use_cuda: {use_cuda}, n_gpu: {n_gpu}, devices: {[torch.cuda.get_device_name(i) for i in range(n_gpu)]}')" 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "metadata": { 100 | "colab_type": "text", 101 | "id": "-L_QO55chvW2" 102 | }, 103 | "source": [ 104 | "## Data" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 43, 110 | "metadata": { 111 | "colab": {}, 112 | "colab_type": "code", 113 | "id": "kZTjw9MRm2DF", 114 | "pycharm": { 115 | "is_executing": false 116 | } 117 | }, 118 | "outputs": [], 119 | "source": [ 120 | "# !wget http://ai.stanford.edu/~amaas/data/sentiment/aclImdb_v1.tar.gz\n", 121 | "# !gunzip aclImdb_v1.tar.gz" 122 | ] 123 | }, 124 | { 125 | "cell_type": "code", 126 | "execution_count": 7, 127 | "metadata": { 128 | "colab": {}, 129 | "colab_type": "code", 130 | "id": "xZqnHZCFpHVP", 131 | "pycharm": { 132 | "is_executing": false 133 | } 134 | }, 135 | "outputs": [], 136 | "source": [ 137 | "# !tar -xvf aclImdb_v1.tar" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": 6, 143 | "metadata": { 144 | "colab": {}, 145 | "colab_type": "code", 146 | "id": "sw1VMp9YBhez", 147 | "pycharm": { 148 | "is_executing": false 149 | } 150 | }, 151 | "outputs": [], 152 | "source": [ 153 | "def texts_from_folders(src, names):\n", 154 | " texts,labels = [],[]\n", 155 | " for idx,name in enumerate(names):\n", 156 | " path = os.path.join(src, name)\n", 157 | " for fname in sorted(os.listdir(path)):\n", 158 | " fpath = os.path.join(path, fname)\n", 159 | " texts.append(open(fpath).read())\n", 160 | " labels.append(idx)\n", 161 | " return texts,np.array(labels)\n", 162 | " \n", 163 | "PATH='aclImdb/'\n", 164 | "names = ['neg','pos']\n", 165 | "X_train, y_train = texts_from_folders(f'{PATH}train',names)\n", 166 | "X_val, y_val = texts_from_folders(f'{PATH}test',names)" 167 | ] 168 | }, 169 | { 170 | "cell_type": "code", 171 | "execution_count": 5, 172 | "metadata": { 173 | "ExecuteTime": { 174 | "end_time": "2019-03-20T18:01:33.859808Z", 175 | "start_time": "2019-03-20T18:01:32.455428Z" 176 | }, 177 | "colab": {}, 178 | "colab_type": "code", 179 | "id": "mKnwrmbFhvW5" 180 | }, 181 | "outputs": [], 182 | "source": [ 183 | "# news_tr = fetch_20newsgroups(subset='train', shuffle=True, random_state=42, remove=('headers', 'footers', 'quotes'))\n", 184 | "# news_test = fetch_20newsgroups(subset='test', shuffle=True, random_state=42, remove=('headers', 'footers', 'quotes'))\n", 185 | "# target_names = news_tr.target_names\n", 186 | "\n", 187 | "# expr = r'[^a-zA-Z0-9!.,?]'\n", 188 | "# parser = re.compile(expr)\n", 189 | "\n", 190 | "# def preprocess(sent): return parser.sub(r' ', sent).lower()\n", 191 | "\n", 192 | "# data_tr = list(map(preprocess, news_tr.data)); \n", 193 | "# data_test = list(map(preprocess, news_test.data)); data_tr[0]\n", 194 | "\n", 195 | "# X_train, y_train = data_tr, news_tr.target\n", 196 | "# X_val, X_test, y_val, y_test = train_test_split(data_test, news_test.target, test_size=0.5, random_state=42, stratify=news_test.target)\n", 197 | "# len(X_train), len(X_val), len(X_test)" 198 | ] 199 | }, 200 | { 201 | "cell_type": "markdown", 202 | "metadata": { 203 | "colab_type": "text", 204 | "id": "sqLteEeHhvW-" 205 | }, 206 | "source": [ 207 | "y_train мы никогда не будем использовать, X_train нужен в качестве тренировки автокодировщиков - self-supervised" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 2, 213 | "metadata": { 214 | "ExecuteTime": { 215 | "end_time": "2019-03-16T17:34:42.993836Z", 216 | "start_time": "2019-03-16T17:34:42.856475Z" 217 | }, 218 | "colab": {}, 219 | "colab_type": "code", 220 | "id": "iPp0R61vhvX-" 221 | }, 222 | "outputs": [], 223 | "source": [ 224 | "SAMPLE_SIZES = [100, 200, 500, 1000, 2000, 5000, 10000, 24998]\n", 225 | "\n", 226 | "def sample_data(x, y, size=100):\n", 227 | " size = size / len(x)\n", 228 | " _, x, _, y = train_test_split(x, y, test_size=size, random_state=42, stratify=y)\n", 229 | " return x, y \n", 230 | "\n", 231 | "def get_acc_on_samples(x_tr, y_train, x_v, y_val):\n", 232 | " accuracy_hist = []\n", 233 | " if type(x_tr) == scipy.sparse.csr.csr_matrix: \n", 234 | " sparse = True\n", 235 | " else:\n", 236 | " sparse = False\n", 237 | " if sparse: x_tr = x_tr.todense()\n", 238 | " for size in SAMPLE_SIZES:\n", 239 | " x, y = sample_data(x_tr, y_train, size)\n", 240 | " if sparse: x = csr_matrix(x)\n", 241 | " svm = SGDClassifier(loss=\"log\", max_iter=1000, tol=1e-3)\n", 242 | " svm.fit(x, y)\n", 243 | " pred = svm.predict(x_v)\n", 244 | " acc = sklearn.metrics.accuracy_score(y_val, pred)\n", 245 | " accuracy_hist.append(acc)\n", 246 | " return accuracy_hist\n", 247 | " \n", 248 | "def plot_new_hist(hist3, label):\n", 249 | " hist1, hist2 = ([0.65752, 0.74968, 0.78416, 0.80984, 0.83036, 0.858, 0.86852, 0.87552],\n", 250 | " [0.66448, 0.73196, 0.766, 0.79224, 0.82652, 0.85756, 0.8718, 0.88248])\n", 251 | " ax = plt.axes()\n", 252 | " plt.ylabel(\"Accuracy\")\n", 253 | " plt.xlabel(\"# of training examples\")\n", 254 | " plt.plot(np.array(SAMPLE_SIZES)[:, None],np.array(hist1)[:, None], label='tf-idf')\n", 255 | " plt.plot(np.array(SAMPLE_SIZES)[:, None],np.array(hist2)[:, None], label='bag')\n", 256 | " plt.plot(np.array(SAMPLE_SIZES)[:, None],np.array(hist3)[:, None], label=label)\n", 257 | " plt.legend()\n", 258 | " plt.grid()\n", 259 | " plt.xscale(\"log\")\n", 260 | " ax.set_xlim([0,25000])\n", 261 | " ax.set_ylim([0.5,1])\n", 262 | " x = np.array(SAMPLE_SIZES)\n", 263 | " plt.xticks(x, SAMPLE_SIZES[:-1]+[SAMPLE_SIZES[-1]+2]) #24998 fix" 264 | ] 265 | }, 266 | { 267 | "cell_type": "markdown", 268 | "metadata": { 269 | "colab_type": "text", 270 | "id": "arbbOZshhvXB" 271 | }, 272 | "source": [ 273 | "## Bert tokenization" 274 | ] 275 | }, 276 | { 277 | "cell_type": "code", 278 | "execution_count": 6, 279 | "metadata": { 280 | "colab": {}, 281 | "colab_type": "code", 282 | "id": "E1d88yVcBK0Z" 283 | }, 284 | "outputs": [], 285 | "source": [ 286 | "# sent = 'i was wondering if anyone out there could enlighten me on this car i saw the other day. it was a 2 door sports car, looked to be from the late 60s early 70s. it was called a bricklin. the doors were really small. in addition, the front bumper was separate from the rest of the body. this is all i know. if anyone can tellme a model name, engine specs, years of production, where this car is made, history, or whatever info you have on this funky looking car, please e mail.'\n", 287 | "# tokenized_texts = [tokenizer.tokenize(sent)]\n", 288 | "# print(tokenized_texts[0])" 289 | ] 290 | }, 291 | { 292 | "cell_type": "code", 293 | "execution_count": 5, 294 | "metadata": { 295 | "colab": { 296 | "base_uri": "https://localhost:8080/", 297 | "height": 282 298 | }, 299 | "colab_type": "code", 300 | "id": "oRXS67QZhvXJ", 301 | "outputId": "1feff401-bab4-4567-f701-4fdbf8c355fa", 302 | "pycharm": { 303 | "is_executing": false 304 | } 305 | }, 306 | "outputs": [ 307 | { 308 | "data": { 309 | "image/png": "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\n", 310 | "text/plain": [ 311 | "
" 312 | ] 313 | }, 314 | "metadata": { 315 | "image/png": { 316 | "height": 250, 317 | "width": 383 318 | }, 319 | "needs_background": "light" 320 | }, 321 | "output_type": "display_data" 322 | } 323 | ], 324 | "source": [ 325 | "def tokenize_text(text):\n", 326 | " res = [tokenizer.tokenize(d) for d in text] \n", 327 | " res = [['[CLS]'] + td[0:510] + ['[SEP]'] for td in res]\n", 328 | " return res\n", 329 | "X_train_b = tokenize_text(X_train)\n", 330 | "X_val_b = tokenize_text(X_val)\n", 331 | "plt.hist([len(d) for d in X_train_b], bins=100, range=(0, 1000));" 332 | ] 333 | }, 334 | { 335 | "cell_type": "markdown", 336 | "metadata": { 337 | "colab_type": "text", 338 | "heading_collapsed": true, 339 | "id": "baZXgN_LhvXX" 340 | }, 341 | "source": [ 342 | "## Bert Contextual embeddings" 343 | ] 344 | }, 345 | { 346 | "cell_type": "code", 347 | "execution_count": 181, 348 | "metadata": { 349 | "ExecuteTime": { 350 | "end_time": "2019-03-13T17:28:32.439641Z", 351 | "start_time": "2019-03-13T17:28:25.250006Z" 352 | }, 353 | "colab": { 354 | "base_uri": "https://localhost:8080/", 355 | "height": 34 356 | }, 357 | "colab_type": "code", 358 | "hidden": true, 359 | "id": "A8hE7pdJhvXX", 360 | "outputId": "99d0074c-1d20-4260-ba27-aa59087fb73a", 361 | "pycharm": { 362 | "is_executing": false 363 | } 364 | }, 365 | "outputs": [ 366 | { 367 | "data": { 368 | "text/plain": [ 369 | "DataParallel(\n", 370 | " (module): BertModel(\n", 371 | " (embeddings): BertEmbeddings(\n", 372 | " (word_embeddings): Embedding(30522, 768)\n", 373 | " (position_embeddings): Embedding(512, 768)\n", 374 | " (token_type_embeddings): Embedding(2, 768)\n", 375 | " (LayerNorm): BertLayerNorm()\n", 376 | " (dropout): Dropout(p=0.1)\n", 377 | " )\n", 378 | " (encoder): BertEncoder(\n", 379 | " (layer): ModuleList(\n", 380 | " (0): BertLayer(\n", 381 | " (attention): BertAttention(\n", 382 | " (self): BertSelfAttention(\n", 383 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 384 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 385 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 386 | " (dropout): Dropout(p=0.1)\n", 387 | " )\n", 388 | " (output): BertSelfOutput(\n", 389 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 390 | " (LayerNorm): BertLayerNorm()\n", 391 | " (dropout): Dropout(p=0.1)\n", 392 | " )\n", 393 | " )\n", 394 | " (intermediate): BertIntermediate(\n", 395 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 396 | " )\n", 397 | " (output): BertOutput(\n", 398 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 399 | " (LayerNorm): BertLayerNorm()\n", 400 | " (dropout): Dropout(p=0.1)\n", 401 | " )\n", 402 | " )\n", 403 | " (1): BertLayer(\n", 404 | " (attention): BertAttention(\n", 405 | " (self): BertSelfAttention(\n", 406 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 407 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 408 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 409 | " (dropout): Dropout(p=0.1)\n", 410 | " )\n", 411 | " (output): BertSelfOutput(\n", 412 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 413 | " (LayerNorm): BertLayerNorm()\n", 414 | " (dropout): Dropout(p=0.1)\n", 415 | " )\n", 416 | " )\n", 417 | " (intermediate): BertIntermediate(\n", 418 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 419 | " )\n", 420 | " (output): BertOutput(\n", 421 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 422 | " (LayerNorm): BertLayerNorm()\n", 423 | " (dropout): Dropout(p=0.1)\n", 424 | " )\n", 425 | " )\n", 426 | " (2): BertLayer(\n", 427 | " (attention): BertAttention(\n", 428 | " (self): BertSelfAttention(\n", 429 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 430 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 431 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 432 | " (dropout): Dropout(p=0.1)\n", 433 | " )\n", 434 | " (output): BertSelfOutput(\n", 435 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 436 | " (LayerNorm): BertLayerNorm()\n", 437 | " (dropout): Dropout(p=0.1)\n", 438 | " )\n", 439 | " )\n", 440 | " (intermediate): BertIntermediate(\n", 441 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 442 | " )\n", 443 | " (output): BertOutput(\n", 444 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 445 | " (LayerNorm): BertLayerNorm()\n", 446 | " (dropout): Dropout(p=0.1)\n", 447 | " )\n", 448 | " )\n", 449 | " (3): BertLayer(\n", 450 | " (attention): BertAttention(\n", 451 | " (self): BertSelfAttention(\n", 452 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 453 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 454 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 455 | " (dropout): Dropout(p=0.1)\n", 456 | " )\n", 457 | " (output): BertSelfOutput(\n", 458 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 459 | " (LayerNorm): BertLayerNorm()\n", 460 | " (dropout): Dropout(p=0.1)\n", 461 | " )\n", 462 | " )\n", 463 | " (intermediate): BertIntermediate(\n", 464 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 465 | " )\n", 466 | " (output): BertOutput(\n", 467 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 468 | " (LayerNorm): BertLayerNorm()\n", 469 | " (dropout): Dropout(p=0.1)\n", 470 | " )\n", 471 | " )\n", 472 | " (4): BertLayer(\n", 473 | " (attention): BertAttention(\n", 474 | " (self): BertSelfAttention(\n", 475 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 476 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 477 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 478 | " (dropout): Dropout(p=0.1)\n", 479 | " )\n", 480 | " (output): BertSelfOutput(\n", 481 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 482 | " (LayerNorm): BertLayerNorm()\n", 483 | " (dropout): Dropout(p=0.1)\n", 484 | " )\n", 485 | " )\n", 486 | " (intermediate): BertIntermediate(\n", 487 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 488 | " )\n", 489 | " (output): BertOutput(\n", 490 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 491 | " (LayerNorm): BertLayerNorm()\n", 492 | " (dropout): Dropout(p=0.1)\n", 493 | " )\n", 494 | " )\n", 495 | " (5): BertLayer(\n", 496 | " (attention): BertAttention(\n", 497 | " (self): BertSelfAttention(\n", 498 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 499 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 500 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 501 | " (dropout): Dropout(p=0.1)\n", 502 | " )\n", 503 | " (output): BertSelfOutput(\n", 504 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 505 | " (LayerNorm): BertLayerNorm()\n", 506 | " (dropout): Dropout(p=0.1)\n", 507 | " )\n", 508 | " )\n", 509 | " (intermediate): BertIntermediate(\n", 510 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 511 | " )\n", 512 | " (output): BertOutput(\n", 513 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 514 | " (LayerNorm): BertLayerNorm()\n", 515 | " (dropout): Dropout(p=0.1)\n", 516 | " )\n", 517 | " )\n", 518 | " (6): BertLayer(\n", 519 | " (attention): BertAttention(\n", 520 | " (self): BertSelfAttention(\n", 521 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 522 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 523 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 524 | " (dropout): Dropout(p=0.1)\n", 525 | " )\n", 526 | " (output): BertSelfOutput(\n", 527 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 528 | " (LayerNorm): BertLayerNorm()\n", 529 | " (dropout): Dropout(p=0.1)\n", 530 | " )\n", 531 | " )\n", 532 | " (intermediate): BertIntermediate(\n", 533 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 534 | " )\n", 535 | " (output): BertOutput(\n", 536 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 537 | " (LayerNorm): BertLayerNorm()\n", 538 | " (dropout): Dropout(p=0.1)\n", 539 | " )\n", 540 | " )\n", 541 | " (7): BertLayer(\n", 542 | " (attention): BertAttention(\n", 543 | " (self): BertSelfAttention(\n", 544 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 545 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 546 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 547 | " (dropout): Dropout(p=0.1)\n", 548 | " )\n", 549 | " (output): BertSelfOutput(\n", 550 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 551 | " (LayerNorm): BertLayerNorm()\n", 552 | " (dropout): Dropout(p=0.1)\n", 553 | " )\n", 554 | " )\n", 555 | " (intermediate): BertIntermediate(\n", 556 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 557 | " )\n", 558 | " (output): BertOutput(\n", 559 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 560 | " (LayerNorm): BertLayerNorm()\n", 561 | " (dropout): Dropout(p=0.1)\n", 562 | " )\n", 563 | " )\n", 564 | " (8): BertLayer(\n", 565 | " (attention): BertAttention(\n", 566 | " (self): BertSelfAttention(\n", 567 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 568 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 569 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 570 | " (dropout): Dropout(p=0.1)\n", 571 | " )\n", 572 | " (output): BertSelfOutput(\n", 573 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 574 | " (LayerNorm): BertLayerNorm()\n", 575 | " (dropout): Dropout(p=0.1)\n", 576 | " )\n", 577 | " )\n", 578 | " (intermediate): BertIntermediate(\n", 579 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 580 | " )\n", 581 | " (output): BertOutput(\n", 582 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 583 | " (LayerNorm): BertLayerNorm()\n", 584 | " (dropout): Dropout(p=0.1)\n", 585 | " )\n", 586 | " )\n", 587 | " (9): BertLayer(\n", 588 | " (attention): BertAttention(\n", 589 | " (self): BertSelfAttention(\n", 590 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 591 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 592 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 593 | " (dropout): Dropout(p=0.1)\n", 594 | " )\n", 595 | " (output): BertSelfOutput(\n", 596 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 597 | " (LayerNorm): BertLayerNorm()\n", 598 | " (dropout): Dropout(p=0.1)\n", 599 | " )\n", 600 | " )\n", 601 | " (intermediate): BertIntermediate(\n", 602 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 603 | " )\n", 604 | " (output): BertOutput(\n", 605 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 606 | " (LayerNorm): BertLayerNorm()\n", 607 | " (dropout): Dropout(p=0.1)\n", 608 | " )\n", 609 | " )\n", 610 | " (10): BertLayer(\n", 611 | " (attention): BertAttention(\n", 612 | " (self): BertSelfAttention(\n", 613 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 614 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 615 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 616 | " (dropout): Dropout(p=0.1)\n", 617 | " )\n", 618 | " (output): BertSelfOutput(\n", 619 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 620 | " (LayerNorm): BertLayerNorm()\n", 621 | " (dropout): Dropout(p=0.1)\n", 622 | " )\n", 623 | " )\n", 624 | " (intermediate): BertIntermediate(\n", 625 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 626 | " )\n", 627 | " (output): BertOutput(\n", 628 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 629 | " (LayerNorm): BertLayerNorm()\n", 630 | " (dropout): Dropout(p=0.1)\n", 631 | " )\n", 632 | " )\n", 633 | " (11): BertLayer(\n", 634 | " (attention): BertAttention(\n", 635 | " (self): BertSelfAttention(\n", 636 | " (query): Linear(in_features=768, out_features=768, bias=True)\n", 637 | " (key): Linear(in_features=768, out_features=768, bias=True)\n", 638 | " (value): Linear(in_features=768, out_features=768, bias=True)\n", 639 | " (dropout): Dropout(p=0.1)\n", 640 | " )\n", 641 | " (output): BertSelfOutput(\n", 642 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 643 | " (LayerNorm): BertLayerNorm()\n", 644 | " (dropout): Dropout(p=0.1)\n", 645 | " )\n", 646 | " )\n", 647 | " (intermediate): BertIntermediate(\n", 648 | " (dense): Linear(in_features=768, out_features=3072, bias=True)\n", 649 | " )\n", 650 | " (output): BertOutput(\n", 651 | " (dense): Linear(in_features=3072, out_features=768, bias=True)\n", 652 | " (LayerNorm): BertLayerNorm()\n", 653 | " (dropout): Dropout(p=0.1)\n", 654 | " )\n", 655 | " )\n", 656 | " )\n", 657 | " )\n", 658 | " (pooler): BertPooler(\n", 659 | " (dense): Linear(in_features=768, out_features=768, bias=True)\n", 660 | " (activation): Tanh()\n", 661 | " )\n", 662 | " )\n", 663 | ")" 664 | ] 665 | }, 666 | "execution_count": 181, 667 | "metadata": {}, 668 | "output_type": "execute_result" 669 | } 670 | ], 671 | "source": [ 672 | "model = BertModel.from_pretrained('bert-base-uncased')\n", 673 | "model.eval()\n", 674 | "if n_gpu > 1: model = torch.nn.DataParallel(model)\n", 675 | "model.to(device)" 676 | ] 677 | }, 678 | { 679 | "cell_type": "code", 680 | "execution_count": 10, 681 | "metadata": { 682 | "ExecuteTime": { 683 | "end_time": "2019-03-13T23:29:09.405217Z", 684 | "start_time": "2019-03-13T23:29:09.284640Z" 685 | }, 686 | "colab": {}, 687 | "colab_type": "code", 688 | "hidden": true, 689 | "id": "d9Wqib8yhvXZ", 690 | "pycharm": { 691 | "is_executing": false 692 | } 693 | }, 694 | "outputs": [], 695 | "source": [ 696 | "def get_bert_word_emb(text_array):\n", 697 | " indexed_tokens_data = [tokenizer.convert_tokens_to_ids(td) for td in text_array]\n", 698 | " segments_ids_data = [[0 for _ in it] for it in indexed_tokens_data]\n", 699 | " tokens_tensor_data = [torch.tensor([it], device=device) for it in indexed_tokens_data]\n", 700 | " segments_tensors_data = [torch.tensor([si], device=device) for si in segments_ids_data]\n", 701 | " embs = torch.zeros([len(text_array), 512, 768], device=device)\n", 702 | " with torch.no_grad():\n", 703 | " for i in range(len(tokens_tensor_data)):\n", 704 | " encoded_layers, _ = model(tokens_tensor_data[i], segments_tensors_data[i])\n", 705 | " num_words = encoded_layers[0].shape[1]\n", 706 | " embs[i, :num_words, :] = encoded_layers[11][0]\n", 707 | " if i % 1000 == 0: \n", 708 | " print(i)\n", 709 | " print(strftime(\"%Y-%m-%d %H:%M:%S\", localtime()))\n", 710 | " return embs" 711 | ] 712 | }, 713 | { 714 | "cell_type": "code", 715 | "execution_count": 11, 716 | "metadata": { 717 | "ExecuteTime": { 718 | "end_time": "2019-03-12T16:45:09.203599Z", 719 | "start_time": "2019-03-12T14:50:08.628827Z" 720 | }, 721 | "colab": {}, 722 | "colab_type": "code", 723 | "hidden": true, 724 | "id": "lty_3Nd3hvXc", 725 | "pycharm": { 726 | "is_executing": false 727 | } 728 | }, 729 | "outputs": [], 730 | "source": [ 731 | "def get_bert_doc_emb(text_array):\n", 732 | " indexed_tokens_data = [tokenizer.convert_tokens_to_ids(td) for td in text_array]\n", 733 | " segments_ids_data = [[0 for _ in it] for it in indexed_tokens_data]\n", 734 | " tokens_tensor_data = [torch.tensor([it]).to(device) for it in indexed_tokens_data]\n", 735 | " segments_tensors_data = [torch.tensor([si]).to(device) for si in segments_ids_data]\n", 736 | " doc_embeddings = []\n", 737 | " with torch.no_grad():\n", 738 | " for i in tnrange(len(tokens_tensor_data)):\n", 739 | " encoded_layers, _ = model(tokens_tensor_data[i], segments_tensors_data[i])\n", 740 | " doc_embeddings.append(encoded_layers[11][0, 0,:]) # get last embeding of [CLS] token\n", 741 | " return doc_embeddings" 742 | ] 743 | }, 744 | { 745 | "cell_type": "code", 746 | "execution_count": 167, 747 | "metadata": {}, 748 | "outputs": [], 749 | "source": [] 750 | }, 751 | { 752 | "cell_type": "code", 753 | "execution_count": 55, 754 | "metadata": {}, 755 | "outputs": [], 756 | "source": [ 757 | "# doc_embeddings = []\n", 758 | "# with torch.no_grad():\n", 759 | "# for tokens in tqdm_notebook(X_train_b):\n", 760 | "# t = torch.tensor(tokenizer.convert_tokens_to_ids(tokens), dtype=torch.long).to(device)\n", 761 | "# encoded_layers, _ = model(input_ids=t.unsqueeze_(0))\n", 762 | "# doc_embeddings.append(encoded_layers[11][0, 0,:])" 763 | ] 764 | }, 765 | { 766 | "cell_type": "code", 767 | "execution_count": 7, 768 | "metadata": {}, 769 | "outputs": [], 770 | "source": [ 771 | "# tr_tensors = [torch.tensor([tokenizer.convert_tokens_to_ids(i)]).to(device) for i in X_train_b]\n", 772 | "# val_tensors = [torch.tensor([tokenizer.convert_tokens_to_ids(i)]).to(device) for i in X_val_b]" 773 | ] 774 | }, 775 | { 776 | "cell_type": "code", 777 | "execution_count": 40, 778 | "metadata": {}, 779 | "outputs": [], 780 | "source": [ 781 | "# def my_collate(batch):\n", 782 | "# data = [item[0] for item in batch]\n", 783 | "# target = [item[1] for item in batch]\n", 784 | "# target = torch.LongTensor(target)\n", 785 | "# return [data, target]" 786 | ] 787 | }, 788 | { 789 | "cell_type": "code", 790 | "execution_count": 168, 791 | "metadata": {}, 792 | "outputs": [], 793 | "source": [ 794 | "class MyDataset(Dataset):\n", 795 | " def __init__(self, x, y):\n", 796 | " texts = torch.zeros(25000, 512, dtype=torch.long)\n", 797 | " for i, t in enumerate(x):\n", 798 | " t = torch.tensor(tokenizer.convert_tokens_to_ids(t), dtype=torch.long)\n", 799 | " texts[i, :t.size(0)] = t\n", 800 | " self.data = texts\n", 801 | " self.y = y\n", 802 | "\n", 803 | " def __getitem__(self, index):\n", 804 | " return self.data[index], self.y[index]\n", 805 | "\n", 806 | " def __len__(self):\n", 807 | " return len(self.data)\n", 808 | "\n", 809 | "batch_size = 4\n", 810 | "loader = DataLoader(dataset=MyDataset(X_val_b, y_val),\n", 811 | " batch_size=batch_size)\n", 812 | "# val_loader = DataLoader(dataset=MyDataset(X_val_b, y_val),\n", 813 | "# batch_size=4,\n", 814 | "# collate_fn=my_collate)" 815 | ] 816 | }, 817 | { 818 | "cell_type": "code", 819 | "execution_count": 182, 820 | "metadata": {}, 821 | "outputs": [], 822 | "source": [ 823 | "def forward(self, input_ids, token_type_ids=None, attention_mask=None, output_all_encoded_layers=True):\n", 824 | " input_ids = input_ids[0][input_ids[0].nonzero()].transpose(0,1)\n", 825 | " if attention_mask is None:\n", 826 | " attention_mask = torch.ones_like(input_ids)\n", 827 | " if token_type_ids is None:\n", 828 | " token_type_ids = torch.zeros_like(input_ids)\n", 829 | "\n", 830 | " # We create a 3D attention mask from a 2D tensor mask.\n", 831 | " # Sizes are [batch_size, 1, 1, to_seq_length]\n", 832 | " # So we can broadcast to [batch_size, num_heads, from_seq_length, to_seq_length]\n", 833 | " # this attention mask is more simple than the triangular masking of causal attention\n", 834 | " # used in OpenAI GPT, we just need to prepare the broadcast dimension here.\n", 835 | " extended_attention_mask = attention_mask.unsqueeze(1).unsqueeze(2)\n", 836 | "\n", 837 | " # Since attention_mask is 1.0 for positions we want to attend and 0.0 for\n", 838 | " # masked positions, this operation will create a tensor which is 0.0 for\n", 839 | " # positions we want to attend and -10000.0 for masked positions.\n", 840 | " # Since we are adding it to the raw scores before the softmax, this is\n", 841 | " # effectively the same as removing these entirely.\n", 842 | " extended_attention_mask = extended_attention_mask.to(dtype=next(self.parameters()).dtype) # fp16 compatibility\n", 843 | " extended_attention_mask = (1.0 - extended_attention_mask) * -10000.0\n", 844 | "\n", 845 | " embedding_output = self.embeddings(input_ids, token_type_ids)\n", 846 | " encoded_layers = self.encoder(embedding_output,\n", 847 | " extended_attention_mask,\n", 848 | " output_all_encoded_layers=output_all_encoded_layers)\n", 849 | " sequence_output = encoded_layers[-1]\n", 850 | " pooled_output = self.pooler(sequence_output)\n", 851 | " if not output_all_encoded_layers:\n", 852 | " encoded_layers = encoded_layers[-1]\n", 853 | " return encoded_layers[11][0, 0,:].unsqueeze_(0)\n", 854 | "\n", 855 | "BertModel.forward = forward" 856 | ] 857 | }, 858 | { 859 | "cell_type": "code", 860 | "execution_count": 183, 861 | "metadata": {}, 862 | "outputs": [ 863 | { 864 | "data": { 865 | "application/vnd.jupyter.widget-view+json": { 866 | "model_id": "b47436f13ef94122a5d7f4c71fc2be9a", 867 | "version_major": 2, 868 | "version_minor": 0 869 | }, 870 | "text/plain": [ 871 | "HBox(children=(IntProgress(value=0, max=6250), HTML(value='')))" 872 | ] 873 | }, 874 | "metadata": {}, 875 | "output_type": "display_data" 876 | } 877 | ], 878 | "source": [ 879 | "doc_embeddings = []\n", 880 | "with torch.no_grad():\n", 881 | " for data in tqdm_notebook(loader):\n", 882 | " inp = data[0].to(device)\n", 883 | " code = model(inp)\n", 884 | " doc_embeddings.append(code)" 885 | ] 886 | }, 887 | { 888 | "cell_type": "code", 889 | "execution_count": 184, 890 | "metadata": {}, 891 | "outputs": [], 892 | "source": [ 893 | "vl_doc = torch.stack(doc_embeddings)" 894 | ] 895 | }, 896 | { 897 | "cell_type": "code", 898 | "execution_count": 185, 899 | "metadata": {}, 900 | "outputs": [], 901 | "source": [ 902 | "vl_doc = vl_doc.reshape(25000, 768)\n", 903 | "vl_doc = vl_doc.cpu().numpy()" 904 | ] 905 | }, 906 | { 907 | "cell_type": "code", 908 | "execution_count": 20, 909 | "metadata": { 910 | "colab": { 911 | "base_uri": "https://localhost:8080/", 912 | "height": 49, 913 | "resources": { 914 | "http://localhost:8080/nbextensions/google.colab/colabwidgets/controls.css": { 915 | "data": "LyogQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uCiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTW9kaWZpZWQgQlNEIExpY2Vuc2UuCiAqLwoKIC8qIFdlIGltcG9ydCBhbGwgb2YgdGhlc2UgdG9nZXRoZXIgaW4gYSBzaW5nbGUgY3NzIGZpbGUgYmVjYXVzZSB0aGUgV2VicGFjawpsb2FkZXIgc2VlcyBvbmx5IG9uZSBmaWxlIGF0IGEgdGltZS4gVGhpcyBhbGxvd3MgcG9zdGNzcyB0byBzZWUgdGhlIHZhcmlhYmxlCmRlZmluaXRpb25zIHdoZW4gdGhleSBhcmUgdXNlZC4gKi8KCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnwgQ29weXJpZ2h0IChjKSBKdXB5dGVyIERldmVsb3BtZW50IFRlYW0uCnwgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNb2RpZmllZCBCU0QgTGljZW5zZS4KfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoKIC8qClRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSB0aGUgSnVweXRlckxhYiBwcm9qZWN0IHRvIGRlZmluZSBkZWZhdWx0IHN0eWxpbmcgZm9yCndoZW4gdGhlIHdpZGdldCBzdHlsaW5nIGlzIGNvbXBpbGVkIGRvd24gdG8gZWxpbWluYXRlIENTUyB2YXJpYWJsZXMuIFdlIG1ha2Ugb25lCmNoYW5nZSAtIHdlIGNvbW1lbnQgb3V0IHRoZSBmb250IGltcG9ydCBiZWxvdy4KKi8KCiAvKioKICogVGhlIG1hdGVyaWFsIGRlc2lnbiBjb2xvcnMgYXJlIGFkYXB0ZWQgZnJvbSBnb29nbGUtbWF0ZXJpYWwtY29sb3IgdjEuMi42CiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9kYW5sZXZhbi9nb29nbGUtbWF0ZXJpYWwtY29sb3IKICogaHR0cHM6Ly9naXRodWIuY29tL2RhbmxldmFuL2dvb2dsZS1tYXRlcmlhbC1jb2xvci9ibG9iL2Y2N2NhNWY0MDI4YjJmMWIzNDg2MmY2NGIwY2E2NzMyM2Y5MWIwODgvZGlzdC9wYWxldHRlLnZhci5jc3MKICoKICogVGhlIGxpY2Vuc2UgZm9yIHRoZSBtYXRlcmlhbCBkZXNpZ24gY29sb3IgQ1NTIHZhcmlhYmxlcyBpcyBhcyBmb2xsb3dzIChzZWUKICogaHR0cHM6Ly9naXRodWIuY29tL2RhbmxldmFuL2dvb2dsZS1tYXRlcmlhbC1jb2xvci9ibG9iL2Y2N2NhNWY0MDI4YjJmMWIzNDg2MmY2NGIwY2E2NzMyM2Y5MWIwODgvTElDRU5TRSkKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNCBEYW4gTGUgVmFuCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCiAvKgpUaGUgZm9sbG93aW5nIENTUyB2YXJpYWJsZXMgZGVmaW5lIHRoZSBtYWluLCBwdWJsaWMgQVBJIGZvciBzdHlsaW5nIEp1cHl0ZXJMYWIuClRoZXNlIHZhcmlhYmxlcyBzaG91bGQgYmUgdXNlZCBieSBhbGwgcGx1Z2lucyB3aGVyZXZlciBwb3NzaWJsZS4gSW4gb3RoZXIKd29yZHMsIHBsdWdpbnMgc2hvdWxkIG5vdCBkZWZpbmUgY3VzdG9tIGNvbG9ycywgc2l6ZXMsIGV0YyB1bmxlc3MgYWJzb2x1dGVseQpuZWNlc3NhcnkuIFRoaXMgZW5hYmxlcyB1c2VycyB0byBjaGFuZ2UgdGhlIHZpc3VhbCB0aGVtZSBvZiBKdXB5dGVyTGFiCmJ5IGNoYW5naW5nIHRoZXNlIHZhcmlhYmxlcy4KCk1hbnkgdmFyaWFibGVzIGFwcGVhciBpbiBhbiBvcmRlcmVkIHNlcXVlbmNlICgwLDEsMiwzKS4gVGhlc2Ugc2VxdWVuY2VzCmFyZSBkZXNpZ25lZCB0byB3b3JrIHdlbGwgdG9nZXRoZXIsIHNvIGZvciBleGFtcGxlLCBgLS1qcC1ib3JkZXItY29sb3IxYCBzaG91bGQKYmUgdXNlZCB3aXRoIGAtLWpwLWxheW91dC1jb2xvcjFgLiBUaGUgbnVtYmVycyBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6CgoqIDA6IHN1cGVyLXByaW1hcnksIHJlc2VydmVkIGZvciBzcGVjaWFsIGVtcGhhc2lzCiogMTogcHJpbWFyeSwgbW9zdCBpbXBvcnRhbnQgdW5kZXIgbm9ybWFsIHNpdHVhdGlvbnMKKiAyOiBzZWNvbmRhcnksIG5leHQgbW9zdCBpbXBvcnRhbnQgdW5kZXIgbm9ybWFsIHNpdHVhdGlvbnMKKiAzOiB0ZXJ0aWFyeSwgbmV4dCBtb3N0IGltcG9ydGFudCB1bmRlciBub3JtYWwgc2l0dWF0aW9ucwoKVGhyb3VnaG91dCBKdXB5dGVyTGFiLCB3ZSBhcmUgbW9zdGx5IGZvbGxvd2luZyBwcmluY2lwbGVzIGZyb20gR29vZ2xlJ3MKTWF0ZXJpYWwgRGVzaWduIHdoZW4gc2VsZWN0aW5nIGNvbG9ycy4gV2UgYXJlIG5vdCwgaG93ZXZlciwgZm9sbG93aW5nCmFsbCBvZiBNRCBhcyBpdCBpcyBub3Qgb3B0aW1pemVkIGZvciBkZW5zZSwgaW5mb3JtYXRpb24gcmljaCBVSXMuCiovCgogLyoKICogT3B0aW9uYWwgbW9ub3NwYWNlIGZvbnQgZm9yIGlucHV0L291dHB1dCBwcm9tcHQuCiAqLwoKIC8qIENvbW1lbnRlZCBvdXQgaW4gaXB5d2lkZ2V0cyBzaW5jZSB3ZSBkb24ndCBuZWVkIGl0LiAqLwoKIC8qIEBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvK01vbm8nKTsgKi8KCiAvKgogKiBBZGRlZCBmb3IgY29tcGFiaXRpbGl0eSB3aXRoIG91dHB1dCBhcmVhCiAqLwoKIDpyb290IHsKCiAgLyogQm9yZGVycwoKICBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcywgc3BlY2lmeSB0aGUgdmlzdWFsIHN0eWxpbmcgb2YgYm9yZGVycyBpbiBKdXB5dGVyTGFiLgogICAqLwoKICAvKiBVSSBGb250cwoKICBUaGUgVUkgZm9udCBDU1MgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0aGUgdHlwb2dyYXBoeSBhbGwgb2YgdGhlIEp1cHl0ZXJMYWIKICB1c2VyIGludGVyZmFjZSBlbGVtZW50cyB0aGF0IGFyZSBub3QgZGlyZWN0bHkgdXNlciBnZW5lcmF0ZWQgY29udGVudC4KICAqLyAvKiBCYXNlIGZvbnQgc2l6ZSAqLyAvKiBFbnN1cmVzIHB4IHBlcmZlY3QgRm9udEF3ZXNvbWUgaWNvbnMgKi8KCiAgLyogVXNlIHRoZXNlIGZvbnQgY29sb3JzIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgbWFpbiBsYXlvdXQgY29sb3JzLgogICAgIEluIGEgbGlnaHQgdGhlbWUsIHRoZXNlIGdvIGZyb20gZGFyayB0byBsaWdodC4KICAqLwoKICAvKiBVc2UgdGhlc2UgYWdhaW5zdCB0aGUgYnJhbmQvYWNjZW50L3dhcm4vZXJyb3IgY29sb3JzLgogICAgIFRoZXNlIHdpbGwgdHlwaWNhbGx5IGdvIGZyb20gbGlnaHQgdG8gZGFya2VyLCBpbiBib3RoIGEgZGFyayBhbmQgbGlnaHQgdGhlbWUKICAgKi8KCiAgLyogQ29udGVudCBGb250cwoKICBDb250ZW50IGZvbnQgdmFyaWFibGVzIGFyZSB1c2VkIGZvciB0eXBvZ3JhcGh5IG9mIHVzZXIgZ2VuZXJhdGVkIGNvbnRlbnQuCiAgKi8gLyogQmFzZSBmb250IHNpemUgKi8KCgogIC8qIExheW91dAoKICBUaGUgZm9sbG93aW5nIGFyZSB0aGUgbWFpbiBsYXlvdXQgY29sb3JzIHVzZSBpbiBKdXB5dGVyTGFiLiBJbiBhIGxpZ2h0CiAgdGhlbWUgdGhlc2Ugd291bGQgZ28gZnJvbSBsaWdodCB0byBkYXJrLgogICovCgogIC8qIEJyYW5kL2FjY2VudCAqLwoKICAvKiBTdGF0ZSBjb2xvcnMgKHdhcm4sIGVycm9yLCBzdWNjZXNzLCBpbmZvKSAqLwoKICAvKiBDZWxsIHNwZWNpZmljIHN0eWxlcyAqLwogIC8qIEEgY3VzdG9tIGJsZW5kIG9mIE1EIGdyZXkgYW5kIGJsdWUgNjAwCiAgICogU2VlIGh0dHBzOi8vbWV5ZXJ3ZWIuY29tL2VyaWMvdG9vbHMvY29sb3ItYmxlbmQvIzU0NkU3QToxRTg4RTU6NTpoZXggKi8KICAvKiBBIGN1c3RvbSBibGVuZCBvZiBNRCBncmV5IGFuZCBvcmFuZ2UgNjAwCiAgICogaHR0cHM6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jb2xvci1ibGVuZC8jNTQ2RTdBOkY0NTExRTo1OmhleCAqLwoKICAvKiBOb3RlYm9vayBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgLyogQ29uc29sZSBzcGVjaWZpYyBzdHlsZXMgKi8KCiAgLyogVG9vbGJhciBzcGVjaWZpYyBzdHlsZXMgKi8KfQoKIC8qIENvcHlyaWdodCAoYykgSnVweXRlciBEZXZlbG9wbWVudCBUZWFtLgogKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIE1vZGlmaWVkIEJTRCBMaWNlbnNlLgogKi8KCiAvKgogKiBXZSBhc3N1bWUgdGhhdCB0aGUgQ1NTIHZhcmlhYmxlcyBpbgogKiBodHRwczovL2dpdGh1Yi5jb20vanVweXRlcmxhYi9qdXB5dGVybGFiL2Jsb2IvbWFzdGVyL3NyYy9kZWZhdWx0LXRoZW1lL3ZhcmlhYmxlcy5jc3MKICogaGF2ZSBiZWVuIGRlZmluZWQuCiAqLwoKIC8qIFRoaXMgZmlsZSBoYXMgY29kZSBkZXJpdmVkIGZyb20gUGhvc3Bob3JKUyBDU1MgZmlsZXMsIGFzIG5vdGVkIGJlbG93LiBUaGUgbGljZW5zZSBmb3IgdGhpcyBQaG9zcGhvckpTIGNvZGUgaXM6CgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgUGhvc3Bob3JKUyBDb250cmlidXRvcnMKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCiogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCgoqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCgoqIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMKICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCgpUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQpJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQpGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTApEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgpTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgpDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLApPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQpPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKKi8KCiAvKgogKiBUaGUgZm9sbG93aW5nIHNlY3Rpb24gaXMgZGVyaXZlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9waG9zcGhvcmpzL3Bob3NwaG9yL2Jsb2IvMjNiOWQwNzVlYmM1YjczYWIxNDhiNmViZmMyMGFmOTdmODU3MTRjNC9wYWNrYWdlcy93aWRnZXRzL3N0eWxlL3RhYmJhci5jc3MgCiAqIFdlJ3ZlIHNjb3BlZCB0aGUgcnVsZXMgc28gdGhhdCB0aGV5IGFyZSBjb25zaXN0ZW50IHdpdGggZXhhY3RseSBvdXIgY29kZS4KICovCgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIHsKICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICBkaXNwbGF5OiBmbGV4OwogIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7CiAgLW1vei11c2VyLXNlbGVjdDogbm9uZTsKICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7CiAgdXNlci1zZWxlY3Q6IG5vbmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXJbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIHsKICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7CiAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhcltkYXRhLW9yaWVudGF0aW9uPSd2ZXJ0aWNhbCddIHsKICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOwogIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgPiAucC1UYWJCYXItY29udGVudCB7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgZGlzcGxheTogZmxleDsKICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXJbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddID4gLnAtVGFiQmFyLWNvbnRlbnQgewogIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbDsKICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93Owp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gPiAucC1UYWJCYXItY29udGVudCB7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIgewogIGRpc3BsYXk6IC13ZWJraXQtYm94OwogIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogIGRpc3BsYXk6IGZsZXg7CiAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAtbXMtZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICBvdmVyZmxvdzogaGlkZGVuOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJJY29uLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkNsb3NlSWNvbiB7CiAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgICAgLW1zLWZsZXg6IDAgMCBhdXRvOwogICAgICAgICAgZmxleDogMCAwIGF1dG87Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkxhYmVsIHsKICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAtbXMtZmxleDogMSAxIGF1dG87CiAgICAgICAgICBmbGV4OiAxIDEgYXV0bzsKICBvdmVyZmxvdzogaGlkZGVuOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYi5wLW1vZC1oaWRkZW4gewogIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhci5wLW1vZC1kcmFnZ2luZyAucC1UYWJCYXItdGFiIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmdbZGF0YS1vcmllbnRhdGlvbj0naG9yaXpvbnRhbCddIC5wLVRhYkJhci10YWIgewogIGxlZnQ6IDA7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBsZWZ0IDE1MG1zIGVhc2U7CiAgdHJhbnNpdGlvbjogbGVmdCAxNTBtcyBlYXNlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyLnAtbW9kLWRyYWdnaW5nW2RhdGEtb3JpZW50YXRpb249J3ZlcnRpY2FsJ10gLnAtVGFiQmFyLXRhYiB7CiAgdG9wOiAwOwogIC13ZWJraXQtdHJhbnNpdGlvbjogdG9wIDE1MG1zIGVhc2U7CiAgdHJhbnNpdGlvbjogdG9wIDE1MG1zIGVhc2U7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIucC1tb2QtZHJhZ2dpbmcgLnAtVGFiQmFyLXRhYi5wLW1vZC1kcmFnZ2luZyB7CiAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lOwogIHRyYW5zaXRpb246IG5vbmU7Cn0KCiAvKiBFbmQgdGFiYmFyLmNzcyAqLwoKIDpyb290IHsgLyogbWFyZ2luIGJldHdlZW4gaW5saW5lIGVsZW1lbnRzICovCgogICAgLyogRnJvbSBNYXRlcmlhbCBEZXNpZ24gTGl0ZSAqLwp9CgogLmp1cHl0ZXItd2lkZ2V0cyB7CiAgICBtYXJnaW46IDJweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGNvbG9yOiBibGFjazsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy5qdXB5dGVyLXdpZGdldHMtZGlzY29ubmVjdGVkOjpiZWZvcmUgewogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICBoZWlnaHQ6IDI4cHg7Cn0KCiAuanAtT3V0cHV0LXJlc3VsdCA+IC5qdXB5dGVyLXdpZGdldHMgewogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCiAvKiB2Ym94IGFuZCBoYm94ICovCgogLndpZGdldC1pbmxpbmUtaGJveCB7CiAgICAvKiBIb3Jpem9udGFsIHdpZGdldHMgKi8KICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAtd2Via2l0LWJveC1hbGlnbjogYmFzZWxpbmU7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGJhc2VsaW5lOwogICAgICAgICAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7Cn0KCiAud2lkZ2V0LWlubGluZS12Ym94IHsKICAgIC8qIFZlcnRpY2FsIFdpZGdldHMgKi8KICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgogLndpZGdldC1ib3ggewogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBtYXJnaW46IDA7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKIC53aWRnZXQtZ3JpZGJveCB7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBkaXNwbGF5OiBncmlkOwogICAgbWFyZ2luOiAwOwogICAgb3ZlcmZsb3c6IGF1dG87Cn0KCiAud2lkZ2V0LWhib3ggewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsOwogICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7CiAgICAgICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7Cn0KCiAud2lkZ2V0LXZib3ggewogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLyogR2VuZXJhbCBCdXR0b24gU3R5bGluZyAqLwoKIC5qdXB5dGVyLWJ1dHRvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAxMHB4OwogICAgcGFkZGluZy10b3A6IDBweDsKICAgIHBhZGRpbmctYm90dG9tOiAwcHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgY3Vyc29yOiBwb2ludGVyOwoKICAgIGhlaWdodDogMjhweDsKICAgIGJvcmRlcjogMHB4IHNvbGlkOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7CgogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVFRTsKICAgIGJvcmRlci1jb2xvcjogI0UwRTBFMDsKICAgIGJvcmRlcjogbm9uZTsKfQoKIC5qdXB5dGVyLWJ1dHRvbiBpLmZhIHsKICAgIG1hcmdpbi1yaWdodDogNHB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCiAuanVweXRlci1idXR0b246ZW1wdHk6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICJcMjAwYiI7IC8qIHplcm8td2lkdGggc3BhY2UgKi8KfQoKIC5qdXB5dGVyLXdpZGdldHMuanVweXRlci1idXR0b246ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLmp1cHl0ZXItYnV0dG9uIGkuZmEuY2VudGVyIHsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKIC5qdXB5dGVyLWJ1dHRvbjpob3ZlcjplbmFibGVkLCAuanVweXRlci1idXR0b246Zm9jdXM6ZW5hYmxlZCB7CiAgICAvKiBNRCBMaXRlIDJkcCBzaGFkb3cgKi8KICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMiksCiAgICAgICAgICAgICAgICAwIDFweCA1cHggMCByZ2JhKDAsIDAsIDAsIC4xMik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjIpLAogICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwp9CgogLmp1cHl0ZXItYnV0dG9uOmFjdGl2ZSwgLmp1cHl0ZXItYnV0dG9uLm1vZC1hY3RpdmUgewogICAgLyogTUQgTGl0ZSA0ZHAgc2hhZG93ICovCiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgIDAgMXB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIC4xMiksCiAgICAgICAgICAgICAgICAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIC4yKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSwKICAgICAgICAgICAgICAgIDAgMnB4IDRweCAtMXB4IHJnYmEoMCwgMCwgMCwgLjIpOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0JEQkRCRDsKfQoKIC5qdXB5dGVyLWJ1dHRvbjpmb2N1czplbmFibGVkIHsKICAgIG91dGxpbmU6IDFweCBzb2xpZCAjNjRCNUY2Owp9CgogLyogQnV0dG9uICJQcmltYXJ5IiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5IHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjE5NkYzOwp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5Lm1vZC1hY3RpdmUgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTk3NkQyOwp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1wcmltYXJ5OmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMxOTc2RDI7Cn0KCiAvKiBCdXR0b24gIlN1Y2Nlc3MiIFN0eWxpbmcgKi8KCiAuanVweXRlci1idXR0b24ubW9kLXN1Y2Nlc3MgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICM0Q0FGNTA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXN1Y2Nlc3MubW9kLWFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzODhFM0M7CiB9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1zdWNjZXNzOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMzODhFM0M7CiB9CgogLyogQnV0dG9uICJJbmZvIiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEuMCk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCQ0Q0Owp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvLm1vZC1hY3RpdmUgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5N0E3Owp9CgogLmp1cHl0ZXItYnV0dG9uLm1vZC1pbmZvOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDk3QTc7Cn0KCiAvKiBCdXR0b24gIldhcm5pbmciIFN0eWxpbmcgKi8KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmcgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk4MDA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmcubW9kLWFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGNTdDMDA7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLXdhcm5pbmc6YWN0aXZlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0Y1N0MwMDsKfQoKIC8qIEJ1dHRvbiAiRGFuZ2VyIiBTdHlsaW5nICovCgogLmp1cHl0ZXItYnV0dG9uLm1vZC1kYW5nZXIgewogICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMS4wKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDQzMzY7Cn0KCiAuanVweXRlci1idXR0b24ubW9kLWRhbmdlci5tb2QtYWN0aXZlIHsKICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDEpOwogICAgYmFja2dyb3VuZC1jb2xvcjogI0QzMkYyRjsKfQoKIC5qdXB5dGVyLWJ1dHRvbi5tb2QtZGFuZ2VyOmFjdGl2ZSB7CiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAxKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNEMzJGMkY7Cn0KCiAvKiBXaWRnZXQgQnV0dG9uKi8KCiAud2lkZ2V0LWJ1dHRvbiwgLndpZGdldC10b2dnbGUtYnV0dG9uIHsKICAgIHdpZHRoOiAxNDhweDsKfQoKIC8qIFdpZGdldCBMYWJlbCBTdHlsaW5nICovCgogLyogT3ZlcnJpZGUgQm9vdHN0cmFwIGxhYmVsIGNzcyAqLwoKIC5qdXB5dGVyLXdpZGdldHMgbGFiZWwgewogICAgbWFyZ2luLWJvdHRvbTogMDsKICAgIG1hcmdpbi1ib3R0b206IGluaXRpYWw7Cn0KCiAud2lkZ2V0LWxhYmVsLWJhc2ljIHsKICAgIC8qIEJhc2ljIExhYmVsICovCiAgICBjb2xvcjogYmxhY2s7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWxhYmVsIHsKICAgIC8qIExhYmVsICovCiAgICBjb2xvcjogYmxhY2s7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWlubGluZS1oYm94IC53aWRnZXQtbGFiZWwgewogICAgLyogSG9yaXpvbnRhbCBXaWRnZXQgTGFiZWwgKi8KICAgIGNvbG9yOiBibGFjazsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgICB3aWR0aDogODBweDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwp9CgogLndpZGdldC1pbmxpbmUtdmJveCAud2lkZ2V0LWxhYmVsIHsKICAgIC8qIFZlcnRpY2FsIFdpZGdldCBMYWJlbCAqLwogICAgY29sb3I6IGJsYWNrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAvKiBXaWRnZXQgUmVhZG91dCBTdHlsaW5nICovCgogLndpZGdldC1yZWFkb3V0IHsKICAgIGNvbG9yOiBibGFjazsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIGhlaWdodDogMjhweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCiAud2lkZ2V0LXJlYWRvdXQub3ZlcmZsb3cgewogICAgLyogT3ZlcmZsb3dpbmcgUmVhZG91dCAqLwoKICAgIC8qIEZyb20gTWF0ZXJpYWwgRGVzaWduIExpdGUKICAgICAgICBzaGFkb3cta2V5LXVtYnJhLW9wYWNpdHk6IDAuMjsKICAgICAgICBzaGFkb3cta2V5LXBlbnVtYnJhLW9wYWNpdHk6IDAuMTQ7CiAgICAgICAgc2hhZG93LWFtYmllbnQtc2hhZG93LW9wYWNpdHk6IDAuMTI7CiAgICAgKi8KICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAuMiksCiAgICAgICAgICAgICAgICAgICAgICAgIDAgM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjE0KSwKICAgICAgICAgICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwoKICAgIGJveC1zaGFkb3c6IDAgMnB4IDJweCAwIHJnYmEoMCwgMCwgMCwgLjIpLAogICAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMTQpLAogICAgICAgICAgICAgICAgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAuMTIpOwp9CgogLndpZGdldC1pbmxpbmUtaGJveCAud2lkZ2V0LXJlYWRvdXQgewogICAgLyogSG9yaXpvbnRhbCBSZWFkb3V0ICovCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBtYXgtd2lkdGg6IDE0OHB4OwogICAgbWluLXdpZHRoOiA3MnB4OwogICAgbWFyZ2luLWxlZnQ6IDRweDsKfQoKIC53aWRnZXQtaW5saW5lLXZib3ggLndpZGdldC1yZWFkb3V0IHsKICAgIC8qIFZlcnRpY2FsIFJlYWRvdXQgKi8KICAgIG1hcmdpbi10b3A6IDRweDsKICAgIC8qIGFzIHdpZGUgYXMgdGhlIHdpZGdldCAqLwogICAgd2lkdGg6IGluaGVyaXQ7Cn0KCiAvKiBXaWRnZXQgQ2hlY2tib3ggU3R5bGluZyAqLwoKIC53aWRnZXQtY2hlY2tib3ggewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWNoZWNrYm94IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gewogICAgbWFyZ2luOiAwcHggOHB4IDBweCAwcHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIGZvbnQtc2l6ZTogbGFyZ2U7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMDsKICAgICAgICBmbGV4LXNocmluazogMDsKICAgIC1tcy1mbGV4LWl0ZW0tYWxpZ246IGNlbnRlcjsKICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7Cn0KCiAvKiBXaWRnZXQgVmFsaWQgU3R5bGluZyAqLwoKIC53aWRnZXQtdmFsaWQgewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7CiAgICB3aWR0aDogMTQ4cHg7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCiAud2lkZ2V0LXZhbGlkIGk6YmVmb3JlIHsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgbWFyZ2luLXJpZ2h0OiA0cHg7CiAgICBtYXJnaW4tbGVmdDogNHB4OwoKICAgIC8qIGZyb20gdGhlIGZhIGNsYXNzIGluIEZvbnRBd2Vzb21lOiBodHRwczovL2dpdGh1Yi5jb20vRm9ydEF3ZXNvbWUvRm9udC1Bd2Vzb21lL2Jsb2IvNDkxMDBjN2MzYTdiNThkNTBiYWE3MWVmZWYxMWFmNDFhNjZiMDNkMy9jc3MvZm9udC1hd2Vzb21lLmNzcyNMMTQgKi8KICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQ6IG5vcm1hbCBub3JtYWwgbm9ybWFsIDE0cHgvMSBGb250QXdlc29tZTsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHRleHQtcmVuZGVyaW5nOiBhdXRvOwogICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOwp9CgogLndpZGdldC12YWxpZC5tb2QtdmFsaWQgaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBjIjsKICAgIGNvbG9yOiBncmVlbjsKfQoKIC53aWRnZXQtdmFsaWQubW9kLWludmFsaWQgaTpiZWZvcmUgewogICAgY29udGVudDogIlxmMDBkIjsKICAgIGNvbG9yOiByZWQ7Cn0KCiAud2lkZ2V0LXZhbGlkLm1vZC12YWxpZCAud2lkZ2V0LXZhbGlkLXJlYWRvdXQgewogICAgZGlzcGxheTogbm9uZTsKfQoKIC8qIFdpZGdldCBUZXh0IGFuZCBUZXh0QXJlYSBTdHlpbmcgKi8KCiAud2lkZ2V0LXRleHRhcmVhLCAud2lkZ2V0LXRleHQgewogICAgd2lkdGg6IDMwMHB4Owp9CgogLndpZGdldC10ZXh0IGlucHV0W3R5cGU9InRleHQiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9Im51bWJlciJdewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkLCAud2lkZ2V0LXRleHQgaW5wdXRbdHlwZT0ibnVtYmVyIl06ZGlzYWJsZWQsIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWE6ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLndpZGdldC10ZXh0IGlucHV0W3R5cGU9InRleHQiXSwgLndpZGdldC10ZXh0IGlucHV0W3R5cGU9Im51bWJlciJdLCAud2lkZ2V0LXRleHRhcmVhIHRleHRhcmVhIHsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovCiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKfQoKIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWEgewogICAgaGVpZ2h0OiBpbmhlcml0OwogICAgd2lkdGg6IGluaGVyaXQ7Cn0KCiAud2lkZ2V0LXRleHQgaW5wdXQ6Zm9jdXMsIC53aWRnZXQtdGV4dGFyZWEgdGV4dGFyZWE6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLyogV2lkZ2V0IFNsaWRlciAqLwoKIC53aWRnZXQtc2xpZGVyIC51aS1zbGlkZXIgewogICAgLyogU2xpZGVyIFRyYWNrICovCiAgICBib3JkZXI6IDFweCBzb2xpZCAjQkRCREJEOwogICAgYmFja2dyb3VuZDogI0JEQkRCRDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1yYWRpdXM6IDBweDsKfQoKIC53aWRnZXQtc2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1oYW5kbGUgewogICAgLyogU2xpZGVyIEhhbmRsZSAqLwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OyAvKiBmb2N1c2VkIHNsaWRlciBoYW5kbGVzIGFyZSBjb2xvcmVkIC0gc2VlIGJlbG93ICovCiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB6LWluZGV4OiAxOwogICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgLyogT3ZlcnJpZGUganF1ZXJ5LXVpICovCn0KCiAvKiBPdmVycmlkZSBqcXVlcnktdWkgKi8KCiAud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmhvdmVyLCAud2lkZ2V0LXNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlOmZvY3VzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjMjE5NkYzOwp9CgogLndpZGdldC1zbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZTphY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzIxOTZGMzsKICAgIGJvcmRlci1jb2xvcjogIzIxOTZGMzsKICAgIHotaW5kZXg6IDI7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4yKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwp9CgogLndpZGdldC1zbGlkZXIgIC51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZSB7CiAgICAvKiBJbnRlcnZhbCBiZXR3ZWVuIHRoZSB0d28gc3BlY2lmaWVkIHZhbHVlIG9mIGEgZG91YmxlIHNsaWRlciAqLwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYmFja2dyb3VuZDogIzIxOTZGMzsKICAgIHotaW5kZXg6IDA7Cn0KCiAvKiBTaGFwZXMgb2YgU2xpZGVyIEhhbmRsZXMgKi8KCiAud2lkZ2V0LWhzbGlkZXIgLnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZSB7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTZweDsKICAgIG1hcmdpbi10b3A6IC03cHg7CiAgICBtYXJnaW4tbGVmdDogLTdweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIHRvcDogMDsKfQoKIC53aWRnZXQtdnNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlIHsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNnB4OwogICAgbWFyZ2luLWJvdHRvbTogLTdweDsKICAgIG1hcmdpbi1sZWZ0OiAtN3B4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgbGVmdDogMDsKfQoKIC53aWRnZXQtaHNsaWRlciAudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2UgewogICAgaGVpZ2h0OiA4cHg7CiAgICBtYXJnaW4tdG9wOiAtM3B4Owp9CgogLndpZGdldC12c2xpZGVyIC51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZSB7CiAgICB3aWR0aDogOHB4OwogICAgbWFyZ2luLWxlZnQ6IC0zcHg7Cn0KCiAvKiBIb3Jpem9udGFsIFNsaWRlciAqLwoKIC53aWRnZXQtaHNsaWRlciB7CiAgICB3aWR0aDogMzAwcHg7CiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKCiAgICAvKiBPdmVycmlkZSB0aGUgYWxpZ24taXRlbXMgYmFzZWxpbmUuIFRoaXMgd2F5LCB0aGUgZGVzY3JpcHRpb24gYW5kIHJlYWRvdXQKICAgIHN0aWxsIHNlZW0gdG8gYWxpZ24gdGhlaXIgYmFzZWxpbmUgcHJvcGVybHksIGFuZCB3ZSBkb24ndCBoYXZlIHRvIGhhdmUKICAgIGFsaWduLXNlbGY6IHN0cmV0Y2ggaW4gdGhlIC5zbGlkZXItY29udGFpbmVyLiAqLwogICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlcjsKICAgICAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwp9CgogLndpZGdldHMtc2xpZGVyIC5zbGlkZXItY29udGFpbmVyIHsKICAgIG92ZXJmbG93OiB2aXNpYmxlOwp9CgogLndpZGdldC1oc2xpZGVyIC5zbGlkZXItY29udGFpbmVyIHsKICAgIGhlaWdodDogMjhweDsKICAgIG1hcmdpbi1sZWZ0OiA2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDZweDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAxNDhweDsKICAgICAgICAgICAgZmxleDogMSAxIDE0OHB4Owp9CgogLndpZGdldC1oc2xpZGVyIC51aS1zbGlkZXIgewogICAgLyogSW5uZXIsIGludmlzaWJsZSBzbGlkZSBkaXYgKi8KICAgIGhlaWdodDogNHB4OwogICAgbWFyZ2luLXRvcDogMTJweDsKICAgIHdpZHRoOiAxMDAlOwp9CgogLyogVmVydGljYWwgU2xpZGVyICovCgogLndpZGdldC12Ym94IC53aWRnZXQtbGFiZWwgewogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXZzbGlkZXIgewogICAgLyogVmVydGljYWwgU2xpZGVyICovCiAgICBoZWlnaHQ6IDIwMHB4OwogICAgd2lkdGg6IDcycHg7Cn0KCiAud2lkZ2V0LXZzbGlkZXIgLnNsaWRlci1jb250YWluZXIgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleDogMSAxIDE0OHB4OwogICAgICAgICAgICBmbGV4OiAxIDEgMTQ4cHg7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgIG1hcmdpbi10b3A6IDZweDsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwp9CgogLndpZGdldC12c2xpZGVyIC51aS1zbGlkZXItdmVydGljYWwgewogICAgLyogSW5uZXIsIGludmlzaWJsZSBzbGlkZSBkaXYgKi8KICAgIHdpZHRoOiA0cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgIG1hcmdpbi1yaWdodDogYXV0bzsKfQoKIC8qIFdpZGdldCBQcm9ncmVzcyBTdHlsaW5nICovCgogLnByb2dyZXNzLWJhciB7CiAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CiAgICB0cmFuc2l0aW9uOiBub25lOwp9CgogLnByb2dyZXNzLWJhciB7CiAgICBoZWlnaHQ6IDI4cHg7Cn0KCiAucHJvZ3Jlc3MtYmFyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICMyMTk2RjM7Cn0KCiAucHJvZ3Jlc3MtYmFyLXN1Y2Nlc3MgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzRDQUY1MDsKfQoKIC5wcm9ncmVzcy1iYXItaW5mbyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBCQ0Q0Owp9CgogLnByb2dyZXNzLWJhci13YXJuaW5nIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGRjk4MDA7Cn0KCiAucHJvZ3Jlc3MtYmFyLWRhbmdlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjQ0MzM2Owp9CgogLnByb2dyZXNzIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNFRUVFRUU7CiAgICBib3JkZXI6IG5vbmU7CiAgICAtd2Via2l0LWJveC1zaGFkb3c6IG5vbmU7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCiAvKiBIb3Jpc29udGFsIFByb2dyZXNzICovCgogLndpZGdldC1ocHJvZ3Jlc3MgewogICAgLyogUHJvZ3Jlc3MgQmFyICovCiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIHdpZHRoOiAzMDBweDsKICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKCn0KCiAud2lkZ2V0LWhwcm9ncmVzcyAucHJvZ3Jlc3MgewogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICAgICAgZmxleC1ncm93OiAxOwogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4OwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLyogT3ZlcnJpZGUgYm9vdHN0cmFwIHN0eWxlICovCiAgICBoZWlnaHQ6IGF1dG87CiAgICBoZWlnaHQ6IGluaXRpYWw7Cn0KCiAvKiBWZXJ0aWNhbCBQcm9ncmVzcyAqLwoKIC53aWRnZXQtdnByb2dyZXNzIHsKICAgIGhlaWdodDogMjAwcHg7CiAgICB3aWR0aDogNzJweDsKfQoKIC53aWRnZXQtdnByb2dyZXNzIC5wcm9ncmVzcyB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICB3aWR0aDogMjBweDsKICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKIC8qIFNlbGVjdCBXaWRnZXQgU3R5bGluZyAqLwoKIC53aWRnZXQtZHJvcGRvd24gewogICAgaGVpZ2h0OiAyOHB4OwogICAgd2lkdGg6IDMwMHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0IHsKICAgIHBhZGRpbmctcmlnaHQ6IDIwcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjOUU5RTlFOwogICAgYm9yZGVyLXJhZGl1czogMDsKICAgIGhlaWdodDogaW5oZXJpdDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXg6IDEgMSAxNDhweDsKICAgICAgICAgICAgZmxleDogMSAxIDE0OHB4OwogICAgbWluLXdpZHRoOiAwOyAvKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgZmxleGJveCB0byBzaHJpbmsgdGhpcyBpbnB1dCAqLwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lOwogICAgICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuOCk7CiAgICBmb250LXNpemU6IDEzcHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CglhcHBlYXJhbmNlOiBub25lOwoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJLW1vei1hcHBlYXJhbmNlOiBub25lOwogICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKCWJhY2tncm91bmQtc2l6ZTogMjBweDsKCWJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGNlbnRlcjsKICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpZFhSbUxUZ2lQejRLUENFdExTQkhaVzVsY21GMGIzSTZJRUZrYjJKbElFbHNiSFZ6ZEhKaGRHOXlJREU1TGpJdU1Td2dVMVpISUVWNGNHOXlkQ0JRYkhWbkxVbHVJQzRnVTFaSElGWmxjbk5wYjI0NklEWXVNREFnUW5WcGJHUWdNQ2tnSUMwdFBnbzhjM1puSUhabGNuTnBiMjQ5SWpFdU1TSWdhV1E5SWt4aGVXVnlYekVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lJSGc5SWpCd2VDSWdlVDBpTUhCNElnb0pJSFpwWlhkQ2IzZzlJakFnTUNBeE9DQXhPQ0lnYzNSNWJHVTlJbVZ1WVdKc1pTMWlZV05yWjNKdmRXNWtPbTVsZHlBd0lEQWdNVGdnTVRnN0lpQjRiV3c2YzNCaFkyVTlJbkJ5WlhObGNuWmxJajRLUEhOMGVXeGxJSFI1Y0dVOUluUmxlSFF2WTNOeklqNEtDUzV6ZERCN1ptbHNiRHB1YjI1bE8zMEtQQzl6ZEhsc1pUNEtQSEJoZEdnZ1pEMGlUVFV1TWl3MUxqbE1PU3c1TGpkc015NDRMVE11T0d3eExqSXNNUzR5YkMwMExqa3NOV3d0TkM0NUxUVk1OUzR5TERVdU9Yb2lMejRLUEhCaGRHZ2dZMnhoYzNNOUluTjBNQ0lnWkQwaVRUQXRNQzQyYURFNGRqRTRTREJXTFRBdU5ub2lMejRLUEM5emRtYytDZyIpOwp9CgogLndpZGdldC1kcm9wZG93biA+IHNlbGVjdDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NEI1RjY7Cn0KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0OmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIFRvIGRpc2FibGUgdGhlIGRvdHRlZCBib3JkZXIgaW4gRmlyZWZveCBhcm91bmQgc2VsZWN0IGNvbnRyb2xzLgogICBTZWUgaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMTg4NTMwMDIgKi8KCiAud2lkZ2V0LWRyb3Bkb3duID4gc2VsZWN0Oi1tb3otZm9jdXNyaW5nIHsKICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgIHRleHQtc2hhZG93OiAwIDAgMCAjMDAwOwp9CgogLyogU2VsZWN0IGFuZCBTZWxlY3RNdWx0aXBsZSAqLwoKIC53aWRnZXQtc2VsZWN0IHsKICAgIHdpZHRoOiAzMDBweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwoKICAgIC8qIEJlY2F1c2UgRmlyZWZveCBkZWZpbmVzIHRoZSBiYXNlbGluZSBvZiBhIHNlbGVjdCBhcyB0aGUgYm90dG9tIG9mIHRoZQogICAgY29udHJvbCwgd2UgYWxpZ24gdGhlIGVudGlyZSBjb250cm9sIHRvIHRoZSB0b3AgYW5kIGFkZCBwYWRkaW5nIHRvIHRoZQogICAgc2VsZWN0IHRvIGdldCBhbiBhcHByb3hpbWF0ZSBmaXJzdCBsaW5lIGJhc2VsaW5lIGFsaWdubWVudC4gKi8KICAgIC13ZWJraXQtYm94LWFsaWduOiBzdGFydDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RhcnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0Owp9CgogLndpZGdldC1zZWxlY3QgPiBzZWxlY3QgewogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleDogMSAxIDE0OHB4OwogICAgICAgICAgICBmbGV4OiAxIDEgMTQ4cHg7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBvdmVyZmxvdzogYXV0bzsKICAgIGhlaWdodDogaW5oZXJpdDsKCiAgICAvKiBCZWNhdXNlIEZpcmVmb3ggZGVmaW5lcyB0aGUgYmFzZWxpbmUgb2YgYSBzZWxlY3QgYXMgdGhlIGJvdHRvbSBvZiB0aGUKICAgIGNvbnRyb2wsIHdlIGFsaWduIHRoZSBlbnRpcmUgY29udHJvbCB0byB0aGUgdG9wIGFuZCBhZGQgcGFkZGluZyB0byB0aGUKICAgIHNlbGVjdCB0byBnZXQgYW4gYXBwcm94aW1hdGUgZmlyc3QgbGluZSBiYXNlbGluZSBhbGlnbm1lbnQuICovCiAgICBwYWRkaW5nLXRvcDogNXB4Owp9CgogLndpZGdldC1zZWxlY3QgPiBzZWxlY3Q6Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLndpZ2V0LXNlbGVjdCA+IHNlbGVjdCA+IG9wdGlvbiB7CiAgICBwYWRkaW5nLWxlZnQ6IDRweDsKICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgLyogbGluZS1oZWlnaHQgZG9lc24ndCB3b3JrIG9uIHNvbWUgYnJvd3NlcnMgZm9yIHNlbGVjdCBvcHRpb25zICovCiAgICBwYWRkaW5nLXRvcDogY2FsYygyOHB4IC0gdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpIC8gMik7CiAgICBwYWRkaW5nLWJvdHRvbTogY2FsYygyOHB4IC0gdmFyKC0tanAtd2lkZ2V0cy1mb250LXNpemUpIC8gMik7Cn0KCiAvKiBUb2dnbGUgQnV0dG9ucyBTdHlsaW5nICovCgogLndpZGdldC10b2dnbGUtYnV0dG9ucyB7CiAgICBsaW5lLWhlaWdodDogMjhweDsKfQoKIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbnMgLndpZGdldC10b2dnbGUtYnV0dG9uIHsKICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICBtYXJnaW4tcmlnaHQ6IDJweDsKfQoKIC53aWRnZXQtdG9nZ2xlLWJ1dHRvbnMgLmp1cHl0ZXItYnV0dG9uOmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIFJhZGlvIEJ1dHRvbnMgU3R5bGluZyAqLwoKIC53aWRnZXQtcmFkaW8gewogICAgd2lkdGg6IDMwMHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LXJhZGlvLWJveCB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoOwogICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKfQoKIC53aWRnZXQtcmFkaW8tYm94IGxhYmVsIHsKICAgIGhlaWdodDogMjBweDsKICAgIGxpbmUtaGVpZ2h0OiAyMHB4OwogICAgZm9udC1zaXplOiAxM3B4Owp9CgogLndpZGdldC1yYWRpby1ib3ggaW5wdXQgewogICAgaGVpZ2h0OiAyMHB4OwogICAgbGluZS1oZWlnaHQ6IDIwcHg7CiAgICBtYXJnaW46IDAgOHB4IDAgMXB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCiAvKiBDb2xvciBQaWNrZXIgU3R5bGluZyAqLwoKIC53aWRnZXQtY29sb3JwaWNrZXIgewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWNvbG9ycGlja2VyID4gLndpZGdldC1jb2xvcnBpY2tlci1pbnB1dCB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIG1pbi13aWR0aDogNzJweDsKfQoKIC53aWRnZXQtY29sb3JwaWNrZXIgaW5wdXRbdHlwZT0iY29sb3IiXSB7CiAgICB3aWR0aDogMjhweDsKICAgIGhlaWdodDogMjhweDsKICAgIHBhZGRpbmc6IDAgMnB4OyAvKiBtYWtlIHRoZSBjb2xvciBzcXVhcmUgYWN0dWFsbHkgc3F1YXJlIG9uIENocm9tZSBvbiBPUyBYICovCiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIC13ZWJraXQtYm94LWZsZXg6IDA7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDA7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMDsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAwOwogICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50Owp9CgogLndpZGdldC1jb2xvcnBpY2tlci5jb25jaXNlIGlucHV0W3R5cGU9ImNvbG9yIl0gewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjOUU5RTlFOwp9CgogLndpZGdldC1jb2xvcnBpY2tlciBpbnB1dFt0eXBlPSJjb2xvciJdOmZvY3VzLCAud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NEI1RjY7Cn0KCiAud2lkZ2V0LWNvbG9ycGlja2VyIGlucHV0W3R5cGU9InRleHQiXSB7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDI4cHg7CiAgICBsaW5lLWhlaWdodDogMjhweDsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGZvbnQtc2l6ZTogMTNweDsKICAgIHBhZGRpbmc6IDRweCA4cHg7CiAgICBtaW4td2lkdGg6IDA7IC8qIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBmbGV4Ym94IHRvIHNocmluayB0aGlzIGlucHV0ICovCiAgICAtbXMtZmxleC1uZWdhdGl2ZTogMTsKICAgICAgICBmbGV4LXNocmluazogMTsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKIC53aWRnZXQtY29sb3JwaWNrZXIgaW5wdXRbdHlwZT0idGV4dCJdOmRpc2FibGVkIHsKICAgIG9wYWNpdHk6IDAuNjsKfQoKIC8qIERhdGUgUGlja2VyIFN0eWxpbmcgKi8KCiAud2lkZ2V0LWRhdGVwaWNrZXIgewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiAyOHB4OwogICAgbGluZS1oZWlnaHQ6IDI4cHg7Cn0KCiAud2lkZ2V0LWRhdGVwaWNrZXIgaW5wdXRbdHlwZT0iZGF0ZSJdIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIC1tcy1mbGV4LW5lZ2F0aXZlOiAxOwogICAgICAgIGZsZXgtc2hyaW5rOiAxOwogICAgbWluLXdpZHRoOiAwOyAvKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgZmxleGJveCB0byBzaHJpbmsgdGhpcyBpbnB1dCAqLwogICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAyOHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgZm9udC1zaXplOiAxM3B4OwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKIC53aWRnZXQtZGF0ZXBpY2tlciBpbnB1dFt0eXBlPSJkYXRlIl06Zm9jdXMgewogICAgYm9yZGVyLWNvbG9yOiAjNjRCNUY2Owp9CgogLndpZGdldC1kYXRlcGlja2VyIGlucHV0W3R5cGU9ImRhdGUiXTppbnZhbGlkIHsKICAgIGJvcmRlci1jb2xvcjogI0ZGOTgwMDsKfQoKIC53aWRnZXQtZGF0ZXBpY2tlciBpbnB1dFt0eXBlPSJkYXRlIl06ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLyogUGxheSBXaWRnZXQgKi8KCiAud2lkZ2V0LXBsYXkgewogICAgd2lkdGg6IDE0OHB4OwogICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICAtd2Via2l0LWJveC1hbGlnbjogc3RyZXRjaDsKICAgICAgICAtbXMtZmxleC1hbGlnbjogc3RyZXRjaDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7Cn0KCiAud2lkZ2V0LXBsYXkgLmp1cHl0ZXItYnV0dG9uIHsKICAgIC13ZWJraXQtYm94LWZsZXg6IDE7CiAgICAgICAgLW1zLWZsZXgtcG9zaXRpdmU6IDE7CiAgICAgICAgICAgIGZsZXgtZ3JvdzogMTsKICAgIGhlaWdodDogYXV0bzsKfQoKIC53aWRnZXQtcGxheSAuanVweXRlci1idXR0b246ZGlzYWJsZWQgewogICAgb3BhY2l0eTogMC42Owp9CgogLyogVGFiIFdpZGdldCAqLwoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7CiAgICAvKiBOZWNlc3Nhcnkgc28gdGhhdCBhIHRhYiBjYW4gYmUgc2hpZnRlZCBkb3duIHRvIG92ZXJsYXkgdGhlIGJvcmRlciBvZiB0aGUgYm94IGJlbG93LiAqLwogICAgb3ZlcmZsb3cteDogdmlzaWJsZTsKICAgIG92ZXJmbG93LXk6IHZpc2libGU7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgPiAucC1UYWJCYXItY29udGVudCB7CiAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgdGFiIGdyb3dzIGZyb20gYm90dG9tIHVwICovCiAgICAtd2Via2l0LWJveC1hbGlnbjogZW5kOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBlbmQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKICAgIG1pbi13aWR0aDogMDsKICAgIG1pbi1oZWlnaHQ6IDA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAud2lkZ2V0LXRhYi1jb250ZW50cyB7CiAgICB3aWR0aDogMTAwJTsKICAgIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIG1hcmdpbjogMDsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICAtd2Via2l0LWJveC1mbGV4OiAxOwogICAgICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxOwogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICBvdmVyZmxvdzogYXV0bzsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciB7CiAgICBmb250OiAxM3B4IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICBtaW4taGVpZ2h0OiAyNXB4Owp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIgewogICAgLXdlYmtpdC1ib3gtZmxleDogMDsKICAgICAgICAtbXMtZmxleDogMCAxIDE0NHB4OwogICAgICAgICAgICBmbGV4OiAwIDEgMTQ0cHg7CiAgICBtaW4td2lkdGg6IDM1cHg7CiAgICBtaW4taGVpZ2h0OiAyNXB4OwogICAgbGluZS1oZWlnaHQ6IDI0cHg7CiAgICBtYXJnaW4tbGVmdDogLTFweDsKICAgIHBhZGRpbmc6IDBweCAxMHB4OwogICAgYmFja2dyb3VuZDogI0VFRUVFRTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC41KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItYm90dG9tOiBub25lOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWIucC1tb2QtY3VycmVudCB7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAxLjApOwogICAgLyogV2Ugd2FudCB0aGUgYmFja2dyb3VuZCB0byBtYXRjaCB0aGUgdGFiIGNvbnRlbnQgYmFja2dyb3VuZCAqLwogICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICBtaW4taGVpZ2h0OiAyNnB4OwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMXB4KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7CiAgICBvdmVyZmxvdzogdmlzaWJsZTsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1UYWJCYXItdGFiLnAtbW9kLWN1cnJlbnQ6YmVmb3JlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogLTFweDsKICAgIGxlZnQ6IC0xcHg7CiAgICBjb250ZW50OiAnJzsKICAgIGhlaWdodDogMnB4OwogICAgd2lkdGg6IGNhbGMoMTAwJSArIDJweCk7CiAgICBiYWNrZ3JvdW5kOiAjMjE5NkYzOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWI6Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLWxlZnQ6IDA7Cn0KCiAuanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYjpob3Zlcjpub3QoLnAtbW9kLWN1cnJlbnQpIHsKICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLW1vZC1jbG9zYWJsZSA+IC5wLVRhYkJhci10YWJDbG9zZUljb24gewogICAgbWFyZ2luLWxlZnQ6IDRweDsKfQoKIC5qdXB5dGVyLXdpZGdldHMud2lkZ2V0LXRhYiA+IC5wLVRhYkJhciAucC1tb2QtY2xvc2FibGUgPiAucC1UYWJCYXItdGFiQ2xvc2VJY29uOmJlZm9yZSB7CiAgICBmb250LWZhbWlseTogRm9udEF3ZXNvbWU7CiAgICBjb250ZW50OiAnXGYwMGQnOyAvKiBjbG9zZSAqLwp9CgogLmp1cHl0ZXItd2lkZ2V0cy53aWRnZXQtdGFiID4gLnAtVGFiQmFyIC5wLVRhYkJhci10YWJJY29uLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkxhYmVsLAouanVweXRlci13aWRnZXRzLndpZGdldC10YWIgPiAucC1UYWJCYXIgLnAtVGFiQmFyLXRhYkNsb3NlSWNvbiB7CiAgICBsaW5lLWhlaWdodDogMjRweDsKfQoKIC8qIEFjY29yZGlvbiBXaWRnZXQgKi8KCiAucC1Db2xsYXBzZSB7CiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94OwogICAgZGlzcGxheTogZmxleDsKICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDsKICAgICAgICAtbXMtZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIC13ZWJraXQtYm94LWFsaWduOiBzdHJldGNoOwogICAgICAgIC1tcy1mbGV4LWFsaWduOiBzdHJldGNoOwogICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKfQoKIC5wLUNvbGxhcHNlLWhlYWRlciB7CiAgICBwYWRkaW5nOiA0cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBjb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFRUVFOwogICAgYm9yZGVyOiAxcHggc29saWQgIzlFOUU5RTsKICAgIHBhZGRpbmc6IDEwcHggMTVweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgogLnAtQ29sbGFwc2UtaGVhZGVyOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgLjgpOwp9CgogLnAtQ29sbGFwc2Utb3BlbiA+IC5wLUNvbGxhcHNlLWhlYWRlciB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDEuMCk7CiAgICBjdXJzb3I6IGRlZmF1bHQ7CiAgICBib3JkZXItYm90dG9tOiBub25lOwp9CgogLnAtQ29sbGFwc2UgLnAtQ29sbGFwc2UtaGVhZGVyOjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMGRhXDAwQTAnOyAgLyogY2FyZXQtcmlnaHQsIG5vbi1icmVha2luZyBzcGFjZSAqLwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgZm9udDogbm9ybWFsIG5vcm1hbCBub3JtYWwgMTRweC8xIEZvbnRBd2Vzb21lOwogICAgZm9udC1zaXplOiBpbmhlcml0OwogICAgdGV4dC1yZW5kZXJpbmc6IGF1dG87CiAgICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKICAgIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7Cn0KCiAucC1Db2xsYXBzZS1vcGVuID4gLnAtQ29sbGFwc2UtaGVhZGVyOjpiZWZvcmUgewogICAgY29udGVudDogJ1xmMGQ3XDAwQTAnOyAvKiBjYXJldC1kb3duLCBub24tYnJlYWtpbmcgc3BhY2UgKi8KfQoKIC5wLUNvbGxhcHNlLWNvbnRlbnRzIHsKICAgIHBhZGRpbmc6IDE1cHg7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC44KTsKICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgIzlFOUU5RTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5RTlFOUU7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzlFOUU5RTsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgogLnAtQWNjb3JkaW9uIHsKICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwogICAgZGlzcGxheTogLW1zLWZsZXhib3g7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKICAgIC13ZWJraXQtYm94LWRpcmVjdGlvbjogbm9ybWFsOwogICAgICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgLXdlYmtpdC1ib3gtYWxpZ246IHN0cmV0Y2g7CiAgICAgICAgLW1zLWZsZXgtYWxpZ246IHN0cmV0Y2g7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwp9CgogLnAtQWNjb3JkaW9uIC5wLUNvbGxhcHNlIHsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCiAucC1BY2NvcmRpb24gLnAtQ29sbGFwc2UgKyAucC1Db2xsYXBzZSB7CiAgICBtYXJnaW4tdG9wOiA0cHg7Cn0KCiAvKiBIVE1MIHdpZGdldCAqLwoKIC53aWRnZXQtaHRtbCwgLndpZGdldC1odG1sbWF0aCB7CiAgICBmb250LXNpemU6IDEzcHg7Cn0KCiAud2lkZ2V0LWh0bWwgPiAud2lkZ2V0LWh0bWwtY29udGVudCwgLndpZGdldC1odG1sbWF0aCA+IC53aWRnZXQtaHRtbC1jb250ZW50IHsKICAgIC8qIEZpbGwgb3V0IHRoZSBhcmVhIGluIHRoZSBIVE1MIHdpZGdldCAqLwogICAgLW1zLWZsZXgtaXRlbS1hbGlnbjogc3RyZXRjaDsKICAgICAgICBhbGlnbi1zZWxmOiBzdHJldGNoOwogICAgLXdlYmtpdC1ib3gtZmxleDogMTsKICAgICAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTsKICAgICAgICAgICAgZmxleC1ncm93OiAxOwogICAgLW1zLWZsZXgtbmVnYXRpdmU6IDE7CiAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAvKiBNYWtlcyBzdXJlIHRoZSBiYXNlbGluZSBpcyBzdGlsbCBhbGlnbmVkIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KICAgIGxpbmUtaGVpZ2h0OiAyOHB4OwogICAgLyogTWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIGFic29sdXRlbHktcG9zaXRpb25lZCBlbGVtZW50cyBpbiB0aGUgaHRtbCAqLwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgovKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSWk0dUwyNXZaR1ZmYlc5a2RXeGxjeTlBYW5Wd2VYUmxjaTEzYVdSblpYUnpMMk52Ym5SeWIyeHpMMk56Y3k5M2FXUm5aWFJ6TG1OemN5SXNJaTR1TDI1dlpHVmZiVzlrZFd4bGN5OUFhblZ3ZVhSbGNpMTNhV1JuWlhSekwyTnZiblJ5YjJ4ekwyTnpjeTlzWVdKMllYSnBZV0pzWlhNdVkzTnpJaXdpTGk0dmJtOWtaVjl0YjJSMWJHVnpMMEJxZFhCNWRHVnlMWGRwWkdkbGRITXZZMjl1ZEhKdmJITXZZM056TDIxaGRHVnlhV0ZzWTI5c2IzSnpMbU56Y3lJc0lpNHVMMjV2WkdWZmJXOWtkV3hsY3k5QWFuVndlWFJsY2kxM2FXUm5aWFJ6TDJOdmJuUnliMnh6TDJOemN5OTNhV1JuWlhSekxXSmhjMlV1WTNOeklpd2lMaTR2Ym05a1pWOXRiMlIxYkdWekwwQnFkWEI1ZEdWeUxYZHBaR2RsZEhNdlkyOXVkSEp2YkhNdlkzTnpMM0JvYjNOd2FHOXlMbU56Y3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFUczdSMEZGUnpzN1EwRkZSanM3YTBOQlJXbERPenREUTA1c1F6czdPeXRGUVVjclJUczdRMEZGTDBVN096czdSVUZKUlRzN1EwTlVSanM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3UjBFMlFrYzdPME5FYUVKSU96czdPenM3T3pzN096czdPenM3T3pzN08wVkJiVUpGT3p0RFFVZEdPenRIUVVWSE96dERRVU5HTEhsRVFVRjVSRHM3UTBGRE1VUXNlVVZCUVhsRk96dERRVVY2UlRzN1IwRkZSenM3UTBGUFNEczdSVUZGUlRzN08wdEJSMGM3TzBWQlVVZzdPenM3U1VGSlJTeERRVWwzUWl4dlFrRkJiMElzUTBGSGFFSXNNRU5CUVRCRE96dEZRVWQ0UlRzN1NVRkZSVHM3UlVGUFJqczdTMEZGUnpzN1JVRlBTRHM3TzBsQlIwVXNRMEZYZDBJc2IwSkJRVzlDT3pzN1JVRlZPVU03T3pzN1NVRkpSVHM3UlVGUFJpeHJRa0ZCYTBJN08wVkJXV3hDTEN0RFFVRXJRenM3UlVGelFpOURMREJDUVVFd1FqdEZRV0V4UWpzMFJVRkRNRVU3UlVGRk1VVTdkMFZCUTNORk96dEZRVWQwUlN3NFFrRkJPRUk3TzBWQlN6bENMRFpDUVVFMlFqczdSVUZKTjBJc05rSkJRVFpDTzBOQlVUbENPenREUlhwTlJEczdSMEZGUnpzN1EwRkZTRHM3T3p0SFFVbEhPenREUTFKSU96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdSVUU0UWtVN08wTkJSVVk3T3p0SFFVZEhPenREUVVWSU8wVkJRMFVzY1VKQlFXTTdSVUZCWkN4eFFrRkJZenRGUVVGa0xHTkJRV003UlVGRFpDd3dRa0ZCTUVJN1JVRkRNVUlzZFVKQlFYVkNPMFZCUTNaQ0xITkNRVUZ6UWp0RlFVTjBRaXhyUWtGQmEwSTdRMEZEYmtJN08wTkJSMFE3UlVGRFJTd3JRa0ZCYjBJN1JVRkJjRUlzT0VKQlFXOUNPMDFCUVhCQ0xIZENRVUZ2UWp0VlFVRndRaXh2UWtGQmIwSTdRMEZEY2tJN08wTkJSMFE3UlVGRFJTdzJRa0ZCZFVJN1JVRkJka0lzT0VKQlFYVkNPMDFCUVhaQ0xESkNRVUYxUWp0VlFVRjJRaXgxUWtGQmRVSTdRMEZEZUVJN08wTkJSMFE3UlVGRFJTeFZRVUZWTzBWQlExWXNWMEZCVnp0RlFVTllMSEZDUVVGak8wVkJRV1FzY1VKQlFXTTdSVUZCWkN4alFVRmpPMFZCUTJRc2IwSkJRV1U3VFVGQlppeHRRa0ZCWlR0VlFVRm1MR1ZCUVdVN1JVRkRaaXh6UWtGQmMwSTdRMEZEZGtJN08wTkJSMFE3UlVGRFJTd3JRa0ZCYjBJN1JVRkJjRUlzT0VKQlFXOUNPMDFCUVhCQ0xIZENRVUZ2UWp0VlFVRndRaXh2UWtGQmIwSTdRMEZEY2tJN08wTkJSMFE3UlVGRFJTdzJRa0ZCZFVJN1JVRkJka0lzT0VKQlFYVkNPMDFCUVhaQ0xESkNRVUYxUWp0VlFVRjJRaXgxUWtGQmRVSTdRMEZEZUVJN08wTkJSMFE3UlVGRFJTeHhRa0ZCWXp0RlFVRmtMSEZDUVVGak8wVkJRV1FzWTBGQll6dEZRVU5rTEN0Q1FVRnZRanRGUVVGd1FpdzRRa0ZCYjBJN1RVRkJjRUlzZDBKQlFXOUNPMVZCUVhCQ0xHOUNRVUZ2UWp0RlFVTndRaXdyUWtGQmRVSTdWVUZCZGtJc2RVSkJRWFZDTzBWQlEzWkNMR2xDUVVGcFFqdERRVU5zUWpzN1EwRkhSRHM3UlVGRlJTeHZRa0ZCWlR0TlFVRm1MRzFDUVVGbE8xVkJRV1lzWlVGQlpUdERRVU5vUWpzN1EwRkhSRHRGUVVORkxHOUNRVUZsTzAxQlFXWXNiVUpCUVdVN1ZVRkJaaXhsUVVGbE8wVkJRMllzYVVKQlFXbENPMFZCUTJwQ0xHOUNRVUZ2UWp0RFFVTnlRanM3UTBGSFJEdEZRVU5GTEhsQ1FVRjVRanREUVVNeFFqczdRMEZIUkR0RlFVTkZMRzFDUVVGdFFqdERRVU53UWpzN1EwRkhSRHRGUVVORkxGRkJRVkU3UlVGRFVpeHZRMEZCTkVJN1JVRkJOVUlzTkVKQlFUUkNPME5CUXpkQ096dERRVWRFTzBWQlEwVXNUMEZCVHp0RlFVTlFMRzFEUVVFeVFqdEZRVUV6UWl3eVFrRkJNa0k3UTBGRE5VSTdPME5CUjBRN1JVRkRSU3g1UWtGQmFVSTdSVUZCYWtJc2FVSkJRV2xDTzBOQlEyeENPenREUVVWRUxHOUNRVUZ2UWpzN1EwUTVSM0JDTEZGQlZYRkRMRzlEUVVGdlF6czdTVUV5UW5KRkxDdENRVUVyUWp0RFFVbHNRenM3UTBGRlJEdEpRVU5KTEZsQlFXbERPMGxCUTJwRExDdENRVUYxUWp0WlFVRjJRaXgxUWtGQmRVSTdTVUZEZGtJc1lVRkJLMEk3U1VGREwwSXNhMEpCUVd0Q08wTkJRM0pDT3p0RFFVVkVPMGxCUTBrc2EwSkJRVFpETzBsQlF6ZERMR0ZCUVhkRE8wTkJRek5ET3p0RFFVVkVPMGxCUTBrc1pVRkJaVHRKUVVObUxHZENRVUZuUWp0RFFVTnVRanM3UTBGRlJDeHRRa0ZCYlVJN08wTkJSVzVDTzBsQlEwa3NkMEpCUVhkQ08wbEJRM2hDTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDd3JRa0ZCYjBJN1NVRkJjRUlzT0VKQlFXOUNPMUZCUVhCQ0xIZENRVUZ2UWp0WlFVRndRaXh2UWtGQmIwSTdTVUZEY0VJc05FSkJRWE5DTzFGQlFYUkNMSGxDUVVGelFqdFpRVUYwUWl4elFrRkJjMEk3UTBGRGVrSTdPME5CUlVRN1NVRkRTU3h6UWtGQmMwSTdTVUZEZEVJc0swSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl4eFFrRkJZenRKUVVGa0xIRkNRVUZqTzBsQlFXUXNZMEZCWXp0SlFVTmtMRFpDUVVGMVFqdEpRVUYyUWl3NFFrRkJkVUk3VVVGQmRrSXNNa0pCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanRKUVVOMlFpd3dRa0ZCYjBJN1VVRkJjRUlzZFVKQlFXOUNPMWxCUVhCQ0xHOUNRVUZ2UWp0RFFVTjJRanM3UTBGRlJEdEpRVU5KTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDeFZRVUZWTzBsQlExWXNaVUZCWlR0RFFVTnNRanM3UTBGRlJEdEpRVU5KTEN0Q1FVRjFRanRaUVVGMlFpeDFRa0ZCZFVJN1NVRkRka0lzWTBGQll6dEpRVU5rTEZWQlFWVTdTVUZEVml4bFFVRmxPME5CUTJ4Q096dERRVVZFTzBsQlEwa3NLMEpCUVc5Q08wbEJRWEJDTERoQ1FVRnZRanRSUVVGd1FpeDNRa0ZCYjBJN1dVRkJjRUlzYjBKQlFXOUNPME5CUTNaQ096dERRVVZFTzBsQlEwa3NOa0pCUVhWQ08wbEJRWFpDTERoQ1FVRjFRanRSUVVGMlFpd3lRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPME5CUXpGQ096dERRVVZFTERSQ1FVRTBRanM3UTBGRk5VSTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNiMEpCUVc5Q08wbEJRM0JDTEdsQ1FVRnBRanRKUVVOcVFpeHZRa0ZCYjBJN1NVRkRjRUlzYzBKQlFYTkNPMGxCUTNSQ0xHOUNRVUZ2UWp0SlFVTndRaXhwUWtGQmFVSTdTVUZEYWtJc2QwSkJRWGRDTzBsQlEzaENMRzFDUVVGdFFqdEpRVU51UWl4blFrRkJkVU03U1VGRGRrTXNaMEpCUVdkQ096dEpRVVZvUWl4aFFVRjNRenRKUVVONFF5eHJRa0ZCYTBJN1NVRkRiRUlzYTBKQlFUWkRPMGxCUXpkRExIbENRVUZwUWp0WlFVRnFRaXhwUWtGQmFVSTdPMGxCUldwQ0xIbENRVUZuUXp0SlFVTm9ReXd3UWtGQk1FTTdTVUZETVVNc2MwSkJRWE5ETzBsQlEzUkRMR0ZCUVdFN1EwRkRhRUk3TzBOQlJVUTdTVUZEU1N4clFrRkJPRU03U1VGRE9VTXNjVUpCUVhGQ08wTkJRM2hDT3p0RFFVVkVPMGxCUTBrc2FVSkJRV2xDTEVOQlFVTXNjMEpCUVhOQ08wTkJRek5ET3p0RFFVVkVPMGxCUTBrc1lVRkJORU03UTBGREwwTTdPME5CUlVRN1NVRkRTU3huUWtGQlowSTdRMEZEYmtJN08wTkJSVVE3U1VGRFNTeDNRa0ZCZDBJN1NVRkRlRUk3T3l0RFFVVXJSVHRaUVVZdlJUczdLME5CUlN0Rk8wTkJRMnhHT3p0RFFVVkVPMGxCUTBrc2QwSkJRWGRDTzBsQlEzaENPenRwUkVGRk5rVTdXVUZHTjBVN08ybEVRVVUyUlR0SlFVTTNSU3g1UWtGQlowTTdTVUZEYUVNc01FSkJRVEJETzBOQlF6ZERPenREUVVWRU8wbEJRMGtzTWtKQlFUaEVPME5CUTJwRk96dERRVVZFTERoQ1FVRTRRanM3UTBGRk9VSTdTVUZEU1N4blEwRkJkME03U1VGRGVFTXNNRUpCUVhsRE8wTkJRelZET3p0RFFVVkVPMGxCUTBrc09FSkJRWGRETzBsQlEzaERMREJDUVVGNVF6dERRVU0xUXpzN1EwRkZSRHRKUVVOSkxEaENRVUYzUXp0SlFVTjRReXd3UWtGQmVVTTdRMEZETlVNN08wTkJSVVFzT0VKQlFUaENPenREUVVVNVFqdEpRVU5KTEdkRFFVRjNRenRKUVVONFF5d3dRa0ZCTWtNN1EwRkRPVU03TzBOQlJVUTdTVUZEU1N3NFFrRkJkME03U1VGRGVFTXNNRUpCUVRKRE8wVkJRemRET3p0RFFVVkdPMGxCUTBrc09FSkJRWGRETzBsQlEzaERMREJDUVVFeVF6dEZRVU0zUXpzN1EwRkZSQ3d5UWtGQk1rSTdPME5CUlRWQ08wbEJRMGtzWjBOQlFYZERPMGxCUTNoRExEQkNRVUYzUXp0RFFVTXpRenM3UTBGRlJEdEpRVU5KTERoQ1FVRjNRenRKUVVONFF5d3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUTdTVUZEU1N3NFFrRkJkME03U1VGRGVFTXNNRUpCUVhkRE8wTkJRek5ET3p0RFFVVkVMRGhDUVVFNFFqczdRMEZGT1VJN1NVRkRTU3huUTBGQmQwTTdTVUZEZUVNc01FSkJRWGRETzBOQlF6TkRPenREUVVWRU8wbEJRMGtzT0VKQlFYZERPMGxCUTNoRExEQkNRVUYzUXp0RFFVTXpRenM3UTBGRlJEdEpRVU5KTERoQ1FVRjNRenRKUVVONFF5d3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUXNOa0pCUVRaQ096dERRVVUzUWp0SlFVTkpMR2REUVVGM1F6dEpRVU40UXl3d1FrRkJlVU03UTBGRE5VTTdPME5CUlVRN1NVRkRTU3c0UWtGQmQwTTdTVUZEZUVNc01FSkJRWGxETzBOQlF6VkRPenREUVVWRU8wbEJRMGtzT0VKQlFYZERPMGxCUTNoRExEQkNRVUY1UXp0RFFVTTFRenM3UTBGRlJDeHJRa0ZCYTBJN08wTkJSV3hDTzBsQlEwa3NZVUZCTkVNN1EwRkRMME03TzBOQlJVUXNNRUpCUVRCQ096dERRVVV4UWl4clEwRkJhME03TzBOQlEyeERPMGxCUTBrc2FVSkJRWFZDTzBsQlFYWkNMSFZDUVVGMVFqdERRVU14UWpzN1EwRkZSRHRKUVVOSkxHbENRVUZwUWp0SlFVTnFRaXhoUVVGeFF6dEpRVU55UXl4blFrRkJkVU03U1VGRGRrTXNhVUpCUVdsQ08wbEJRMnBDTEhkQ1FVRjNRanRKUVVONFFpeHZRa0ZCYjBJN1NVRkRjRUlzYTBKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NWMEZCVnp0SlFVTllMR0ZCUVhGRE8wbEJRM0pETEdkQ1FVRjFRenRKUVVOMlF5eHBRa0ZCYVVJN1NVRkRha0lzZDBKQlFYZENPMGxCUTNoQ0xHOUNRVUZ2UWp0SlFVTndRaXhyUWtGQk5rTTdRMEZEYUVRN08wTkJSVVE3U1VGRFNTdzJRa0ZCTmtJN1NVRkROMElzWVVGQmNVTTdTVUZEY2tNc2EwSkJRV3RDTzBsQlEyeENMR3RDUVVFd1JEdEpRVU14UkN4WlFVRTBRenRKUVVNMVF5eHhRa0ZCWlR0UlFVRm1MR1ZCUVdVN1EwRkRiRUk3TzBOQlJVUTdTVUZEU1N3eVFrRkJNa0k3U1VGRE0wSXNZVUZCY1VNN1NVRkRja01zYlVKQlFXMUNPMGxCUTI1Q0xHdENRVUUyUXp0RFFVTm9SRHM3UTBGRlJDdzBRa0ZCTkVJN08wTkJSVFZDTzBsQlEwa3NZVUZCZFVNN1NVRkRka01zWjBKQlFYVkRPMGxCUTNaRExHRkJRWGRETzBsQlEzaERMR3RDUVVFMlF6dEpRVU0zUXl4cFFrRkJhVUk3U1VGRGFrSXNiMEpCUVc5Q08wbEJRM0JDTEcxQ1FVRnRRanREUVVOMFFqczdRMEZGUkR0SlFVTkpMSGxDUVVGNVFqczdTVUZGZWtJN096czdUMEZKUnp0SlFVTklPenQxUkVGRmIwUTdPMGxCVFhCRU96c3JRMEZGTkVNN1EwRkRMME03TzBOQlJVUTdTVUZEU1N4M1FrRkJkMEk3U1VGRGVFSXNiVUpCUVcxQ08wbEJRMjVDTEdsQ1FVRm5SRHRKUVVOb1JDeG5Ra0ZCSzBNN1NVRkRMME1zYVVKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NjMEpCUVhOQ08wbEJRM1JDTEdkQ1FVRTBRenRKUVVNMVF5d3lRa0ZCTWtJN1NVRkRNMElzWlVGQlpUdERRVU5zUWpzN1EwRkZSQ3cyUWtGQk5rSTdPME5CUlRkQ08wbEJRMGtzWVVGQmMwTTdTVUZEZEVNc1lVRkJkME03U1VGRGVFTXNhMEpCUVRaRE8wTkJRMmhFT3p0RFFVVkVPMGxCUTBrc2QwSkJRV2RGTzBsQlEyaEZMR3RDUVVFMlF6dEpRVU0zUXl4cFFrRkJhVUk3U1VGRGFrSXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4eFFrRkJaVHRSUVVGbUxHVkJRV1U3U1VGRFppdzBRa0ZCYlVJN1VVRkJia0lzYlVKQlFXMUNPME5CUTNSQ096dERRVVZFTERCQ1FVRXdRanM3UTBGRk1VSTdTVUZEU1N4aFFVRjNRenRKUVVONFF5eHJRa0ZCTmtNN1NVRkROME1zWVVGQk5FTTdTVUZETlVNc1owSkJRWFZETzBOQlF6RkRPenREUVVWRU8wbEJRMGtzYTBKQlFUWkRPMGxCUXpkRExHdENRVUU0UXp0SlFVTTVReXhwUWtGQk5rTTdPMGxCUlRkRExEQktRVUV3U2p0SlFVTXhTaXh6UWtGQmMwSTdTVUZEZEVJc09FTkJRVGhETzBsQlF6bERMRzFDUVVGdFFqdEpRVU51UWl4eFFrRkJjVUk3U1VGRGNrSXNiME5CUVc5RE8wbEJRM0JETEcxRFFVRnRRenREUVVOMFF6czdRMEZGUkR0SlFVTkpMR2xDUVVGcFFqdEpRVU5xUWl4aFFVRmhPME5CUTJoQ096dERRVVZFTzBsQlEwa3NhVUpCUVdsQ08wbEJRMnBDTEZkQlFWYzdRMEZEWkRzN1EwRkZSRHRKUVVOSkxHTkJRV003UTBGRGFrSTdPME5CUlVRc2NVTkJRWEZET3p0RFFVVnlRenRKUVVOSkxHRkJRWE5ETzBOQlEzcERPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdTVUZEZUVNc2EwSkJRVFpETzBOQlEyaEVPenREUVVWRU8wbEJRMGtzWVVGQk5FTTdRMEZETDBNN08wTkJSVVE3U1VGRFNTd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xEQkNRVUYzUmp0SlFVTjRSaXgzUWtGQk1rUTdTVUZETTBRc2VVSkJRWEZETzBsQlEzSkRMR2RDUVVGMVF6dEpRVU4yUXl4cFFrRkJjMFk3U1VGRGRFWXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4aFFVRmhMRU5CUVVNc2FVVkJRV2xGTzBsQlF5OUZMSEZDUVVGbE8xRkJRV1lzWlVGQlpUdEpRVU5tTEhsQ1FVRjVRanREUVVNMVFqczdRMEZGUkR0SlFVTkpMR2RDUVVGblFqdEpRVU5vUWl4bFFVRmxPME5CUTJ4Q096dERRVVZFTzBsQlEwa3NjMEpCUVhsRU8wTkJRelZFT3p0RFFVVkVMRzFDUVVGdFFqczdRMEZGYmtJN1NVRkRTU3hyUWtGQmEwSTdTVUZEYkVJc01FSkJRVFJGTzBsQlF6VkZMRzlDUVVGdlF6dEpRVU53UXl3clFrRkJkVUk3V1VGQmRrSXNkVUpCUVhWQ08wbEJRM1pDTEcxQ1FVRnRRanRKUVVOdVFpeHRRa0ZCYlVJN1EwRkRkRUk3TzBOQlJVUTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNlVUpCUVhsQ0xFTkJRVU1zYjBSQlFXOUVPMGxCUXpsRkxHMUNRVUZ0UWp0SlFVTnVRaXgzUWtGQmJVVTdTVUZEYmtVc01FSkJRV2xITzBsQlEycEhMQ3RDUVVGMVFqdFpRVUYyUWl4MVFrRkJkVUk3U1VGRGRrSXNWMEZCVnp0SlFVTllMSFZDUVVGMVFpeERRVUZETEhkQ1FVRjNRanREUVVOdVJEczdRMEZGUkN4M1FrRkJkMEk3TzBOQlEzaENPMGxCUTBrc01FSkJRU3RFTzBsQlF5OUVMREJDUVVGcFJ6dERRVU53UnpzN1EwRkZSRHRKUVVOSkxEQkNRVUVyUkR0SlFVTXZSQ3h6UWtGQk1rUTdTVUZETTBRc1YwRkJWenRKUVVOWUxEaENRVUZ6UWp0WlFVRjBRaXh6UWtGQmMwSTdRMEZEZWtJN08wTkJSVVE3U1VGRFNTeHBSVUZCYVVVN1NVRkRha1VzYlVKQlFXMUNPMGxCUTI1Q0xHOUNRVUY1UkR0SlFVTjZSQ3hYUVVGWE8wTkJRMlE3TzBOQlJVUXNPRUpCUVRoQ096dERRVVU1UWp0SlFVTkpMRmxCUVRSRE8wbEJRelZETEdGQlFUWkRPMGxCUXpkRExHbENRVUZuU2p0SlFVTm9TaXhyUWtGQmNVYzdTVUZEY2tjc2JVSkJRVzFDTzBsQlEyNUNMRTlCUVU4N1EwRkRWanM3UTBGRlJEdEpRVU5KTEZsQlFUUkRPMGxCUXpWRExHRkJRVFpETzBsQlF6ZERMRzlDUVVGMVJ6dEpRVU4yUnl4clFrRkJhVW83U1VGRGFrb3NiVUpCUVcxQ08wbEJRMjVDTEZGQlFWRTdRMEZEV0RzN1EwRkZSRHRKUVVOSkxGbEJRVFpFTzBsQlF6ZEVMR2xDUVVGNVNqdERRVU0xU2pzN1EwRkZSRHRKUVVOSkxGZEJRVFJFTzBsQlF6VkVMR3RDUVVFd1NqdERRVU0zU2pzN1EwRkZSQ3gxUWtGQmRVSTdPME5CUlhaQ08wbEJRMGtzWVVGQmMwTTdTVUZEZEVNc1lVRkJkME03U1VGRGVFTXNhMEpCUVRaRE96dEpRVVUzUXpzN2IwUkJSV2RFTzBsQlEyaEVMREJDUVVGdlFqdFJRVUZ3UWl4MVFrRkJiMEk3V1VGQmNFSXNiMEpCUVc5Q08wTkJRM1pDT3p0RFFVVkVPMGxCUTBrc2EwSkJRV3RDTzBOQlEzSkNPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdTVUZEZUVNc2FVSkJRWGRITzBsQlEzaEhMR3RDUVVGNVJ6dEpRVU42Unl4dlFrRkJLME03VVVGQkwwTXNiMEpCUVN0RE8xbEJRUzlETEdkQ1FVRXJRenREUVVOc1JEczdRMEZGUkR0SlFVTkpMR2REUVVGblF6dEpRVU5vUXl4WlFVRnBSRHRKUVVOcVJDeHBRa0ZCYlVjN1NVRkRia2NzV1VGQldUdERRVU5tT3p0RFFVVkVMSEZDUVVGeFFqczdRMEZGY2tJN1NVRkRTU3hoUVVGM1F6dEpRVU40UXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h4UWtGQmNVSTdTVUZEY2tJc1kwRkJNRU03U1VGRE1VTXNXVUZCTWtNN1EwRkRPVU03TzBOQlJVUTdTVUZEU1N4dlFrRkJLME03VVVGQkwwTXNiMEpCUVN0RE8xbEJRUzlETEdkQ1FVRXJRenRKUVVNdlF5eHJRa0ZCYTBJN1NVRkRiRUlzYlVKQlFXMUNPMGxCUTI1Q0xHMUNRVUV3Unp0SlFVTXhSeXhuUWtGQmRVYzdTVUZEZGtjc2NVSkJRV003U1VGQlpDeHhRa0ZCWXp0SlFVRmtMR05CUVdNN1NVRkRaQ3cyUWtGQmRVSTdTVUZCZGtJc09FSkJRWFZDTzFGQlFYWkNMREpDUVVGMVFqdFpRVUYyUWl4MVFrRkJkVUk3UTBGRE1VSTdPME5CUlVRN1NVRkRTU3huUTBGQlowTTdTVUZEYUVNc1YwRkJaMFE3U1VGRGFFUXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4clFrRkJhMEk3U1VGRGJFSXNiVUpCUVcxQ08wTkJRM1JDT3p0RFFVVkVMRFpDUVVFMlFqczdRMEZGTjBJN1NVRkRTU3g1UWtGQmVVSTdTVUZKZWtJc2FVSkJRV2xDTzBOQlEzQkNPenREUVVWRU8wbEJRMGtzWVVGQmQwTTdRMEZETTBNN08wTkJSVVE3U1VGRFNTd3dRa0ZCZVVNN1EwRkROVU03TzBOQlJVUTdTVUZEU1N3d1FrRkJNa003UTBGRE9VTTdPME5CUlVRN1NVRkRTU3d3UWtGQmQwTTdRMEZETTBNN08wTkJSVVE3U1VGRFNTd3dRa0ZCZDBNN1EwRkRNME03TzBOQlJVUTdTVUZEU1N3d1FrRkJlVU03UTBGRE5VTTdPME5CUlVRN1NVRkRTU3d3UWtGQk1FTTdTVUZETVVNc1lVRkJZVHRKUVVOaUxIbENRVUZwUWp0WlFVRnFRaXhwUWtGQmFVSTdRMEZEY0VJN08wTkJSVVFzZVVKQlFYbENPenREUVVWNlFqdEpRVU5KTEd0Q1FVRnJRanRKUVVOc1FpeGhRVUYzUXp0SlFVTjRReXhyUWtGQk5rTTdTVUZETjBNc1lVRkJjME03U1VGRGRFTXNNRUpCUVc5Q08xRkJRWEJDTEhWQ1FVRnZRanRaUVVGd1FpeHZRa0ZCYjBJN08wTkJSWFpDT3p0RFFVVkVPMGxCUTBrc2IwSkJRV0U3VVVGQllpeHhRa0ZCWVR0WlFVRmlMR0ZCUVdFN1NVRkRZaXhuUWtGQk5FTTdTVUZETlVNc2JVSkJRU3RETzBsQlF5OURMRFpDUVVGdlFqdFJRVUZ3UWl4dlFrRkJiMEk3U1VGRGNFSXNPRUpCUVRoQ08wbEJRemxDTEdGQlFXZENPMGxCUVdoQ0xHZENRVUZuUWp0RFFVTnVRanM3UTBGRlJDeDFRa0ZCZFVJN08wTkJSWFpDTzBsQlEwa3NZMEZCTUVNN1NVRkRNVU1zV1VGQk1rTTdRMEZET1VNN08wTkJSVVE3U1VGRFNTeHZRa0ZCWVR0UlFVRmlMSEZDUVVGaE8xbEJRV0lzWVVGQllUdEpRVU5pTEZsQlFUUkRPMGxCUXpWRExHdENRVUZyUWp0SlFVTnNRaXh0UWtGQmJVSTdTVUZEYmtJc2FVSkJRV2xDTzBOQlEzQkNPenREUVVWRUxESkNRVUV5UWpzN1EwRkZNMEk3U1VGRFNTeGhRVUYzUXp0SlFVTjRReXhoUVVGelF6dEpRVU4wUXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h2UWtGQmIwSTdTVUZEY0VJc01FSkJRWGRHTzBsQlEzaEdMR2xDUVVGcFFqdEpRVU5xUWl4blFrRkJaMEk3U1VGRGFFSXNiMEpCUVN0RE8xRkJRUzlETEc5Q1FVRXJRenRaUVVFdlF5eG5Ra0ZCSzBNN1NVRkRMME1zWVVGQllTeERRVUZETEdsRlFVRnBSVHRKUVVNdlJTd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xIbENRVUY1UWp0SlFVTjZRaXg1UWtGQmFVSTdXVUZCYWtJc2FVSkJRV2xDTzBsQlEycENMSGRDUVVFeVJEdEpRVU16UkN4NVFrRkJjVU03U1VGRGNrTXNaMEpCUVhWRE8wbEJRM1pETEc5Q1FVRnZRanRKUVVOd1FpeHJRa0ZCZVVRN1EwRkROVVFzYVVKQlFXbENPME5CUTJwQ0xIbENRVUY1UWp0RFFVTjZRaXh6UWtGQmMwSTdTVUZEYmtJc05rSkJRVFpDTzBOQlEyaERMSE5DUVVGelFqdERRVU4wUWl4clEwRkJhME03U1VGREwwSXNhM1ZDUVVGdFJEdERRVU4wUkRzN1EwRkRSRHRKUVVOSkxITkNRVUY1UkR0RFFVTTFSRHM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPME5CUXk5RE96dERRVVZFT3paRFFVTTJRenM3UTBGRE4wTTdTVUZEU1N4dFFrRkJiVUk3U1VGRGJrSXNkMEpCUVhkQ08wTkJRek5DT3p0RFFVVkVMQ3RDUVVFclFqczdRMEZGTDBJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4clFrRkJOa003TzBsQlJUZERPenRyUlVGRk9FUTdTVUZET1VRc2VVSkJRWGRDTzFGQlFYaENMSE5DUVVGM1FqdFpRVUY0UWl4M1FrRkJkMEk3UTBGRE0wSTdPME5CUlVRN1NVRkRTU3d3UWtGQmQwWTdTVUZEZUVZc2QwSkJRVEpFTzBsQlF6TkVMSGxDUVVGeFF6dEpRVU55UXl4blFrRkJkVU03U1VGRGRrTXNiMEpCUVN0RE8xRkJRUzlETEc5Q1FVRXJRenRaUVVFdlF5eG5Ra0ZCSzBNN1NVRkRMME1zZVVKQlFYbENPMGxCUTNwQ0xHVkJRV1U3U1VGRFppeG5Ra0ZCWjBJN08wbEJSV2hDT3p0clJVRkZPRVE3U1VGRE9VUXNhVUpCUVdsQ08wTkJRM0JDT3p0RFFVVkVPMGxCUTBrc2MwSkJRWGxFTzBOQlF6VkVPenREUVVWRU8wbEJRMGtzYTBKQlFUaERPMGxCUXpsRExHdENRVUUyUXp0SlFVTTNReXhyUlVGQmEwVTdTVUZEYkVVc01FUkJRV2xHTzBsQlEycEdMRFpFUVVGdlJqdERRVU4yUmpzN1EwRkpSQ3cwUWtGQk5FSTdPME5CUlRWQ08wbEJRMGtzYTBKQlFUWkRPME5CUTJoRU96dERRVVZFTzBsQlEwa3NhVUpCUVhORE8wbEJRM1JETEd0Q1FVRjFRenREUVVNeFF6czdRMEZGUkR0SlFVTkpMR0ZCUVRSRE8wTkJReTlET3p0RFFVVkVMREpDUVVFeVFqczdRMEZGTTBJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4clFrRkJOa003UTBGRGFFUTdPME5CUlVRN1NVRkRTU3h4UWtGQll6dEpRVUZrTEhGQ1FVRmpPMGxCUVdRc1kwRkJZenRKUVVOa0xEWkNRVUYxUWp0SlFVRjJRaXc0UWtGQmRVSTdVVUZCZGtJc01rSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl3eVFrRkJjVUk3VVVGQmNrSXNkMEpCUVhGQ08xbEJRWEpDTEhGQ1FVRnhRanRKUVVOeVFpd3JRa0ZCZFVJN1dVRkJka0lzZFVKQlFYVkNPMGxCUTNaQ0xHOUNRVUZoTzFGQlFXSXNjVUpCUVdFN1dVRkJZaXhoUVVGaE8wbEJRMklzYlVKQlFUaEVPME5CUTJwRk96dERRVVZFTzBsQlEwa3NZVUZCTkVNN1NVRkROVU1zYTBKQlFXbEVPMGxCUTJwRUxHZENRVUYxUXp0RFFVTXhRenM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPMGxCUXpWRExHdENRVUZwUkR0SlFVTnFSQ3h2UWtGQk5FUTdTVUZETlVRc1dVRkJXVHREUVVObU96dERRVVZFTERCQ1FVRXdRanM3UTBGRk1VSTdTVUZEU1N4aFFVRnpRenRKUVVOMFF5eGhRVUYzUXp0SlFVTjRReXhyUWtGQk5rTTdRMEZEYUVRN08wTkJSVVE3U1VGRFNTeHZRa0ZCWVR0UlFVRmlMSEZDUVVGaE8xbEJRV0lzWVVGQllUdEpRVU5pTEhGQ1FVRmxPMUZCUVdZc1pVRkJaVHRKUVVObUxHZENRVUVyUXp0RFFVTnNSRHM3UTBGRlJEdEpRVU5KTEZsQlFYVkRPMGxCUTNaRExHRkJRWGRETzBsQlEzaERMR1ZCUVdVc1EwRkJReXcyUkVGQk5rUTdTVUZETjBVc2EwSkJRWEZFTzBsQlEzSkVMSGxDUVVGeFF6dEpRVU55UXl3d1FrRkJkMFk3U1VGRGVFWXNhMEpCUVd0Q08wbEJRMnhDTEc5Q1FVRmhPMUZCUVdJc2NVSkJRV0U3V1VGQllpeGhRVUZoTzBsQlEySXNjVUpCUVdVN1VVRkJaaXhsUVVGbE8wbEJRMllzSzBKQlFYVkNPMWxCUVhaQ0xIVkNRVUYxUWp0SlFVTjJRaXcyUWtGQmIwSTdVVUZCY0VJc2IwSkJRVzlDTzBsQlEzQkNMSGxDUVVGNVFqdERRVU0xUWpzN1EwRkZSRHRKUVVOSkxDdENRVUUyUmp0RFFVTm9SenM3UTBGRlJEdEpRVU5KTEhOQ1FVRjVSRHREUVVNMVJEczdRMEZGUkR0SlFVTkpMRzlDUVVGaE8xRkJRV0lzY1VKQlFXRTdXVUZCWWl4aFFVRmhPMGxCUTJJc2VVSkJRWGxDTzBsQlEzcENMR0ZCUVhkRE8wbEJRM2hETEd0Q1FVRTJRenRKUVVNM1F5eHJRa0ZCY1VRN1NVRkRja1FzZVVKQlFYRkRPMGxCUTNKRExEQkNRVUYzUmp0SlFVTjRSaXhuUWtGQmRVTTdTVUZEZGtNc2FVSkJRWE5HTzBsQlEzUkdMR0ZCUVdFc1EwRkJReXhwUlVGQmFVVTdTVUZETDBVc2NVSkJRV1U3VVVGQlppeGxRVUZsTzBsQlEyWXNLMEpCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanREUVVNeFFqczdRMEZGUkR0SlFVTkpMR0ZCUVRSRE8wTkJReTlET3p0RFFVVkVMSGxDUVVGNVFqczdRMEZGZWtJN1NVRkRTU3hoUVVGelF6dEpRVU4wUXl4aFFVRjNRenRKUVVONFF5eHJRa0ZCTmtNN1EwRkRhRVE3TzBOQlJVUTdTVUZEU1N4dlFrRkJZVHRSUVVGaUxIRkNRVUZoTzFsQlFXSXNZVUZCWVR0SlFVTmlMSEZDUVVGbE8xRkJRV1lzWlVGQlpUdEpRVU5tTEdGQlFXRXNRMEZCUXl4cFJVRkJhVVU3U1VGREwwVXNlVUpCUVhsQ08wbEJRM3BDTEdGQlFYZERPMGxCUTNoRExEQkNRVUYzUmp0SlFVTjRSaXgzUWtGQk1rUTdTVUZETTBRc2VVSkJRWEZETzBsQlEzSkRMR2RDUVVGMVF6dEpRVU4yUXl4cFFrRkJjMFk3U1VGRGRFWXNLMEpCUVhWQ08xbEJRWFpDTEhWQ1FVRjFRanREUVVNeFFqczdRMEZGUkR0SlFVTkpMSE5DUVVGNVJEdERRVU0xUkRzN1EwRkZSRHRKUVVOSkxITkNRVUZ2UXp0RFFVTjJRenM3UTBGRlJEdEpRVU5KTEdGQlFUUkRPME5CUXk5RE96dERRVVZFTEdsQ1FVRnBRanM3UTBGRmFrSTdTVUZEU1N4aFFVRTBRenRKUVVNMVF5eHhRa0ZCWXp0SlFVRmtMSEZDUVVGak8wbEJRV1FzWTBGQll6dEpRVU5rTERKQ1FVRnhRanRSUVVGeVFpeDNRa0ZCY1VJN1dVRkJja0lzY1VKQlFYRkNPME5CUTNoQ096dERRVVZFTzBsQlEwa3NiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4aFFVRmhPME5CUTJoQ096dERRVVZFTzBsQlEwa3NZVUZCTkVNN1EwRkRMME03TzBOQlJVUXNaMEpCUVdkQ096dERRVVZvUWp0SlFVTkpMSEZDUVVGak8wbEJRV1FzY1VKQlFXTTdTVUZCWkN4alFVRmpPMGxCUTJRc05rSkJRWFZDTzBsQlFYWkNMRGhDUVVGMVFqdFJRVUYyUWl3eVFrRkJkVUk3V1VGQmRrSXNkVUpCUVhWQ08wTkJRekZDT3p0RFFVVkVPMGxCUTBrc2VVWkJRWGxHTzBsQlEzcEdMRzlDUVVGdlFqdEpRVU53UWl4dlFrRkJiMEk3UTBGRGRrSTdPME5CUlVRN1NVRkRTU3hwUkVGQmFVUTdTVUZEYWtRc2RVSkJRWE5DTzFGQlFYUkNMRzlDUVVGelFqdFpRVUYwUWl4elFrRkJjMEk3U1VGRGRFSXNZVUZCWVR0SlFVTmlMR05CUVdNN1EwRkRha0k3TzBOQlJVUTdTVUZEU1N4WlFVRlpPMGxCUTFvc0swSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl4VlFVRlZPMGxCUTFZc2EwSkJRVzlETzBsQlEzQkRMSGxDUVVGblF6dEpRVU5vUXl3d1FrRkJOa1E3U1VGRE4wUXNZMEZCTmtNN1NVRkROME1zYjBKQlFXRTdVVUZCWWl4eFFrRkJZVHRaUVVGaUxHRkJRV0U3U1VGRFlpeGxRVUZsTzBOQlEyeENPenREUVVWRU8wbEJRMGtzZDBOQlFTdEVPMGxCUXk5RUxHbENRVUZ0Ump0RFFVTjBSanM3UTBGRlJEdEpRVU5KTEc5Q1FVRnBSRHRSUVVGcVJDeHZRa0ZCYVVRN1dVRkJha1FzWjBKQlFXbEVPMGxCUTJwRUxHZENRVUZuUWp0SlFVTm9RaXhwUWtGQmJVWTdTVUZEYmtZc2EwSkJRWEZFTzBsQlEzSkVMR3RDUVVFclF6dEpRVU12UXl4clFrRkJhMEk3U1VGRGJFSXNiMEpCUVc5RE8wbEJRM0JETEhsQ1FVRm5RenRKUVVOb1F5d3dRa0ZCTmtRN1NVRkROMFFzYjBKQlFXOUNPMGxCUTNCQ0xHMUNRVUZ0UWp0RFFVTjBRanM3UTBGRlJEdEpRVU5KTERCQ1FVRm5RenRKUVVOb1F5eG5SVUZCWjBVN1NVRkRhRVVzYTBKQlFXOURPMGxCUTNCRExHbENRVUYxUmp0SlFVTjJSaXh0UTBGQk9FTTdXVUZCT1VNc01rSkJRVGhETzBsQlF6bERMR3RDUVVGclFqdERRVU55UWpzN1EwRkZSRHRKUVVOSkxHMUNRVUZ0UWp0SlFVTnVRaXhWUVVGMVF6dEpRVU4yUXl4WFFVRjNRenRKUVVONFF5eFpRVUZaTzBsQlExb3NXVUZCYjBRN1NVRkRjRVFzZDBKQlFTdERPMGxCUXk5RExHOUNRVUZ0UXp0RFFVTjBRenM3UTBGRlJEdEpRVU5KTEdWQlFXVTdRMEZEYkVJN08wTkJSVVE3U1VGRFNTeHJRa0ZCYjBNN1NVRkRjRU1zZVVKQlFXZERPME5CUTI1RE96dERRVVZFTzBsQlEwa3NhVUpCUVdsQ08wTkJRM0JDT3p0RFFVVkVPMGxCUTBrc2VVSkJRWGxDTzBsQlEzcENMR2xDUVVGcFFpeERRVUZETEZkQlFWYzdRMEZEYUVNN08wTkJSVVE3T3p0SlFVZEpMR3RDUVVGeFJEdERRVU40UkRzN1EwRkZSQ3h6UWtGQmMwSTdPME5CUlhSQ08wbEJRMGtzY1VKQlFXTTdTVUZCWkN4eFFrRkJZenRKUVVGa0xHTkJRV003U1VGRFpDdzJRa0ZCZFVJN1NVRkJka0lzT0VKQlFYVkNPMUZCUVhaQ0xESkNRVUYxUWp0WlFVRjJRaXgxUWtGQmRVSTdTVUZEZGtJc01rSkJRWEZDTzFGQlFYSkNMSGRDUVVGeFFqdFpRVUZ5UWl4eFFrRkJjVUk3UTBGRGVFSTdPME5CUlVRN1NVRkRTU3hoUVVGNVF6dEpRVU42UXl4blFrRkJaMEk3U1VGRGFFSXNlVUpCUVdkRE8wbEJRMmhETERCQ1FVRXdRenRKUVVNeFF5d3dRa0ZCY1VVN1NVRkRja1VzYlVKQlFTdEdPMGxCUXk5R0xHdENRVUZyUWp0RFFVTnlRanM3UTBGRlJEdEpRVU5KTEhkQ1FVRXdRenRKUVVNeFF5eDVRa0ZCWjBNN1EwRkRia003TzBOQlJVUTdTVUZEU1N4M1FrRkJNRU03U1VGRE1VTXNNRUpCUVdkRE8wbEJRMmhETEdkQ1FVRm5RanRKUVVOb1FpeHZRa0ZCYjBJN1EwRkRka0k3TzBOQlJVUTdTVUZEU1N4elFrRkJjMElzUlVGQlJTeHhRMEZCY1VNN1NVRkROMFFzYzBKQlFYTkNPMGxCUTNSQ0xEaERRVUU0UXp0SlFVTTVReXh0UWtGQmJVSTdTVUZEYmtJc2NVSkJRWEZDTzBsQlEzSkNMRzlEUVVGdlF6dEpRVU53UXl4dFEwRkJiVU03UTBGRGRFTTdPME5CUlVRN1NVRkRTU3h6UWtGQmMwSXNRMEZCUXl4dlEwRkJiME03UTBGRE9VUTdPME5CUlVRN1NVRkRTU3hqUVVFMlF6dEpRVU0zUXl4M1FrRkJNRU03U1VGRE1VTXNlVUpCUVdkRE8wbEJRMmhETEN0Q1FVRXdSVHRKUVVNeFJTeG5RMEZCTWtVN1NVRkRNMFVzYVVOQlFUUkZPMGxCUXpWRkxHVkJRV1U3UTBGRGJFSTdPME5CUlVRN1NVRkRTU3h4UWtGQll6dEpRVUZrTEhGQ1FVRmpPMGxCUVdRc1kwRkJZenRKUVVOa0xEWkNRVUYxUWp0SlFVRjJRaXc0UWtGQmRVSTdVVUZCZGtJc01rSkJRWFZDTzFsQlFYWkNMSFZDUVVGMVFqdEpRVU4yUWl3eVFrRkJjVUk3VVVGQmNrSXNkMEpCUVhGQ08xbEJRWEpDTEhGQ1FVRnhRanREUVVONFFqczdRMEZGUkR0SlFVTkpMR2xDUVVGcFFqdERRVU53UWpzN1EwRkZSRHRKUVVOSkxHZENRVUZuUWp0RFFVTnVRanM3UTBGSlJDeHBRa0ZCYVVJN08wTkJSV3BDTzBsQlEwa3NaMEpCUVhWRE8wTkJRekZET3p0RFFVVkVPMGxCUTBrc01FTkJRVEJETzBsQlF6RkRMRFpDUVVGdlFqdFJRVUZ3UWl4dlFrRkJiMEk3U1VGRGNFSXNiMEpCUVdFN1VVRkJZaXh4UWtGQllUdFpRVUZpTEdGQlFXRTdTVUZEWWl4eFFrRkJaVHRSUVVGbUxHVkJRV1U3U1VGRFppeHJSVUZCYTBVN1NVRkRiRVVzYTBKQlFUWkRPMGxCUXpkRExIbEZRVUY1UlR0SlFVTjZSU3h0UWtGQmJVSTdRMEZEZEVJaUxDSm1hV3hsSWpvaVkyOXVkSEp2YkhNdVkzTnpJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpTHlvZ1EyOXdlWEpwWjJoMElDaGpLU0JLZFhCNWRHVnlJRVJsZG1Wc2IzQnRaVzUwSUZSbFlXMHVYRzRnS2lCRWFYTjBjbWxpZFhSbFpDQjFibVJsY2lCMGFHVWdkR1Z5YlhNZ2IyWWdkR2hsSUUxdlpHbG1hV1ZrSUVKVFJDQk1hV05sYm5ObExseHVJQ292WEc1Y2JpQXZLaUJYWlNCcGJYQnZjblFnWVd4c0lHOW1JSFJvWlhObElIUnZaMlYwYUdWeUlHbHVJR0VnYzJsdVoyeGxJR056Y3lCbWFXeGxJR0psWTJGMWMyVWdkR2hsSUZkbFluQmhZMnRjYm14dllXUmxjaUJ6WldWeklHOXViSGtnYjI1bElHWnBiR1VnWVhRZ1lTQjBhVzFsTGlCVWFHbHpJR0ZzYkc5M2N5QndiM04wWTNOeklIUnZJSE5sWlNCMGFHVWdkbUZ5YVdGaWJHVmNibVJsWm1sdWFYUnBiMjV6SUhkb1pXNGdkR2hsZVNCaGNtVWdkWE5sWkM0Z0tpOWNibHh1UUdsdGNHOXlkQ0JjSWk0dmJHRmlkbUZ5YVdGaWJHVnpMbU56YzF3aU8xeHVRR2x0Y0c5eWRDQmNJaTR2ZDJsa1oyVjBjeTFpWVhObExtTnpjMXdpTzF4dUlpd2lMeW90TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExWeHVmQ0JEYjNCNWNtbG5hSFFnS0dNcElFcDFjSGwwWlhJZ1JHVjJaV3h2Y0cxbGJuUWdWR1ZoYlM1Y2Jud2dSR2x6ZEhKcFluVjBaV1FnZFc1a1pYSWdkR2hsSUhSbGNtMXpJRzltSUhSb1pTQk5iMlJwWm1sbFpDQkNVMFFnVEdsalpXNXpaUzVjYm53dExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRLaTljYmx4dUx5cGNibFJvYVhNZ1ptbHNaU0JwY3lCamIzQnBaV1FnWm5KdmJTQjBhR1VnU25Wd2VYUmxja3hoWWlCd2NtOXFaV04wSUhSdklHUmxabWx1WlNCa1pXWmhkV3gwSUhOMGVXeHBibWNnWm05eVhHNTNhR1Z1SUhSb1pTQjNhV1JuWlhRZ2MzUjViR2x1WnlCcGN5QmpiMjF3YVd4bFpDQmtiM2R1SUhSdklHVnNhVzFwYm1GMFpTQkRVMU1nZG1GeWFXRmliR1Z6TGlCWFpTQnRZV3RsSUc5dVpWeHVZMmhoYm1kbElDMGdkMlVnWTI5dGJXVnVkQ0J2ZFhRZ2RHaGxJR1p2Ym5RZ2FXMXdiM0owSUdKbGJHOTNMbHh1S2k5Y2JseHVRR2x0Y0c5eWRDQmNJaTR2YldGMFpYSnBZV3hqYjJ4dmNuTXVZM056WENJN1hHNWNiaThxWEc1VWFHVWdabTlzYkc5M2FXNW5JRU5UVXlCMllYSnBZV0pzWlhNZ1pHVm1hVzVsSUhSb1pTQnRZV2x1TENCd2RXSnNhV01nUVZCSklHWnZjaUJ6ZEhsc2FXNW5JRXAxY0hsMFpYSk1ZV0l1WEc1VWFHVnpaU0IyWVhKcFlXSnNaWE1nYzJodmRXeGtJR0psSUhWelpXUWdZbmtnWVd4c0lIQnNkV2RwYm5NZ2QyaGxjbVYyWlhJZ2NHOXpjMmxpYkdVdUlFbHVJRzkwYUdWeVhHNTNiM0prY3l3Z2NHeDFaMmx1Y3lCemFHOTFiR1FnYm05MElHUmxabWx1WlNCamRYTjBiMjBnWTI5c2IzSnpMQ0J6YVhwbGN5d2daWFJqSUhWdWJHVnpjeUJoWW5OdmJIVjBaV3g1WEc1dVpXTmxjM05oY25rdUlGUm9hWE1nWlc1aFlteGxjeUIxYzJWeWN5QjBieUJqYUdGdVoyVWdkR2hsSUhacGMzVmhiQ0IwYUdWdFpTQnZaaUJLZFhCNWRHVnlUR0ZpWEc1aWVTQmphR0Z1WjJsdVp5QjBhR1Z6WlNCMllYSnBZV0pzWlhNdVhHNWNiazFoYm5rZ2RtRnlhV0ZpYkdWeklHRndjR1ZoY2lCcGJpQmhiaUJ2Y21SbGNtVmtJSE5sY1hWbGJtTmxJQ2d3TERFc01pd3pLUzRnVkdobGMyVWdjMlZ4ZFdWdVkyVnpYRzVoY21VZ1pHVnphV2R1WldRZ2RHOGdkMjl5YXlCM1pXeHNJSFJ2WjJWMGFHVnlMQ0J6YnlCbWIzSWdaWGhoYlhCc1pTd2dZQzB0YW5BdFltOXlaR1Z5TFdOdmJHOXlNV0FnYzJodmRXeGtYRzVpWlNCMWMyVmtJSGRwZEdnZ1lDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1XQXVJRlJvWlNCdWRXMWlaWEp6SUdoaGRtVWdkR2hsSUdadmJHeHZkMmx1WnlCdFpXRnVhVzVuY3pwY2JseHVLaUF3T2lCemRYQmxjaTF3Y21sdFlYSjVMQ0J5WlhObGNuWmxaQ0JtYjNJZ2MzQmxZMmxoYkNCbGJYQm9ZWE5wYzF4dUtpQXhPaUJ3Y21sdFlYSjVMQ0J0YjNOMElHbHRjRzl5ZEdGdWRDQjFibVJsY2lCdWIzSnRZV3dnYzJsMGRXRjBhVzl1YzF4dUtpQXlPaUJ6WldOdmJtUmhjbmtzSUc1bGVIUWdiVzl6ZENCcGJYQnZjblJoYm5RZ2RXNWtaWElnYm05eWJXRnNJSE5wZEhWaGRHbHZibk5jYmlvZ016b2dkR1Z5ZEdsaGNua3NJRzVsZUhRZ2JXOXpkQ0JwYlhCdmNuUmhiblFnZFc1a1pYSWdibTl5YldGc0lITnBkSFZoZEdsdmJuTmNibHh1VkdoeWIzVm5hRzkxZENCS2RYQjVkR1Z5VEdGaUxDQjNaU0JoY21VZ2JXOXpkR3g1SUdadmJHeHZkMmx1WnlCd2NtbHVZMmx3YkdWeklHWnliMjBnUjI5dloyeGxKM05jYmsxaGRHVnlhV0ZzSUVSbGMybG5iaUIzYUdWdUlITmxiR1ZqZEdsdVp5QmpiMnh2Y25NdUlGZGxJR0Z5WlNCdWIzUXNJR2h2ZDJWMlpYSXNJR1p2Ykd4dmQybHVaMXh1WVd4c0lHOW1JRTFFSUdGeklHbDBJR2x6SUc1dmRDQnZjSFJwYldsNlpXUWdabTl5SUdSbGJuTmxMQ0JwYm1admNtMWhkR2x2YmlCeWFXTm9JRlZKY3k1Y2Jpb3ZYRzVjYmx4dUx5cGNiaUFxSUU5d2RHbHZibUZzSUcxdmJtOXpjR0ZqWlNCbWIyNTBJR1p2Y2lCcGJuQjFkQzl2ZFhSd2RYUWdjSEp2YlhCMExseHVJQ292WEc0Z0x5b2dRMjl0YldWdWRHVmtJRzkxZENCcGJpQnBjSGwzYVdSblpYUnpJSE5wYm1ObElIZGxJR1J2YmlkMElHNWxaV1FnYVhRdUlDb3ZYRzR2S2lCQWFXMXdiM0owSUhWeWJDZ25hSFIwY0hNNkx5OW1iMjUwY3k1bmIyOW5iR1ZoY0dsekxtTnZiUzlqYzNNL1ptRnRhV3g1UFZKdlltOTBieXROYjI1dkp5azdJQ292WEc1Y2JpOHFYRzRnS2lCQlpHUmxaQ0JtYjNJZ1kyOXRjR0ZpYVhScGJHbDBlU0IzYVhSb0lHOTFkSEIxZENCaGNtVmhYRzRnS2k5Y2JqcHliMjkwSUh0Y2JpQWdMUzFxY0MxcFkyOXVMWE5sWVhKamFEb2dibTl1WlR0Y2JpQWdMUzFxY0MxMWFTMXpaV3hsWTNRdFkyRnlaWFE2SUc1dmJtVTdYRzU5WEc1Y2JseHVPbkp2YjNRZ2UxeHVYRzRnSUM4cUlFSnZjbVJsY25OY2JseHVJQ0JVYUdVZ1ptOXNiRzkzYVc1bklIWmhjbWxoWW14bGN5d2djM0JsWTJsbWVTQjBhR1VnZG1semRXRnNJSE4wZVd4cGJtY2diMllnWW05eVpHVnljeUJwYmlCS2RYQjVkR1Z5VEdGaUxseHVJQ0FnS2k5Y2JseHVJQ0F0TFdwd0xXSnZjbVJsY2kxM2FXUjBhRG9nTVhCNE8xeHVJQ0F0TFdwd0xXSnZjbVJsY2kxamIyeHZjakE2SUhaaGNpZ3RMVzFrTFdkeVpYa3ROekF3S1R0Y2JpQWdMUzFxY0MxaWIzSmtaWEl0WTI5c2IzSXhPaUIyWVhJb0xTMXRaQzFuY21WNUxUVXdNQ2s3WEc0Z0lDMHRhbkF0WW05eVpHVnlMV052Ykc5eU1qb2dkbUZ5S0MwdGJXUXRaM0psZVMwek1EQXBPMXh1SUNBdExXcHdMV0p2Y21SbGNpMWpiMnh2Y2pNNklIWmhjaWd0TFcxa0xXZHlaWGt0TVRBd0tUdGNibHh1SUNBdktpQlZTU0JHYjI1MGMxeHVYRzRnSUZSb1pTQlZTU0JtYjI1MElFTlRVeUIyWVhKcFlXSnNaWE1nWVhKbElIVnpaV1FnWm05eUlIUm9aU0IwZVhCdlozSmhjR2g1SUdGc2JDQnZaaUIwYUdVZ1NuVndlWFJsY2t4aFlseHVJQ0IxYzJWeUlHbHVkR1Z5Wm1GalpTQmxiR1Z0Wlc1MGN5QjBhR0YwSUdGeVpTQnViM1FnWkdseVpXTjBiSGtnZFhObGNpQm5aVzVsY21GMFpXUWdZMjl1ZEdWdWRDNWNiaUFnS2k5Y2JseHVJQ0F0TFdwd0xYVnBMV1p2Ym5RdGMyTmhiR1V0Wm1GamRHOXlPaUF4TGpJN1hHNGdJQzB0YW5BdGRXa3RabTl1ZEMxemFYcGxNRG9nWTJGc1l5aDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1M5MllYSW9MUzFxY0MxMWFTMW1iMjUwTFhOallXeGxMV1poWTNSdmNpa3BPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRjMmw2WlRFNklERXpjSGc3SUM4cUlFSmhjMlVnWm05dWRDQnphWHBsSUNvdlhHNGdJQzB0YW5BdGRXa3RabTl1ZEMxemFYcGxNam9nWTJGc1l5aDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1NwMllYSW9MUzFxY0MxMWFTMW1iMjUwTFhOallXeGxMV1poWTNSdmNpa3BPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRjMmw2WlRNNklHTmhiR01vZG1GeUtDMHRhbkF0ZFdrdFptOXVkQzF6YVhwbE1pa3FkbUZ5S0MwdGFuQXRkV2t0Wm05dWRDMXpZMkZzWlMxbVlXTjBiM0lwS1R0Y2JpQWdMUzFxY0MxMWFTMXBZMjl1TFdadmJuUXRjMmw2WlRvZ01UUndlRHNnTHlvZ1JXNXpkWEpsY3lCd2VDQndaWEptWldOMElFWnZiblJCZDJWemIyMWxJR2xqYjI1eklDb3ZYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMW1ZVzFwYkhrNklGd2lTR1ZzZG1WMGFXTmhJRTVsZFdWY0lpd2dTR1ZzZG1WMGFXTmhMQ0JCY21saGJDd2djMkZ1Y3kxelpYSnBaanRjYmx4dUlDQXZLaUJWYzJVZ2RHaGxjMlVnWm05dWRDQmpiMnh2Y25NZ1lXZGhhVzV6ZENCMGFHVWdZMjl5Y21WemNHOXVaR2x1WnlCdFlXbHVJR3hoZVc5MWRDQmpiMnh2Y25NdVhHNGdJQ0FnSUVsdUlHRWdiR2xuYUhRZ2RHaGxiV1VzSUhSb1pYTmxJR2R2SUdaeWIyMGdaR0Z5YXlCMGJ5QnNhV2RvZEM1Y2JpQWdLaTljYmx4dUlDQXRMV3B3TFhWcExXWnZiblF0WTI5c2IzSXdPaUJ5WjJKaEtEQXNNQ3d3TERFdU1DazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMWpiMnh2Y2pFNklISm5ZbUVvTUN3d0xEQXNNQzQ0S1R0Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFdOdmJHOXlNam9nY21kaVlTZ3dMREFzTUN3d0xqVXBPMXh1SUNBdExXcHdMWFZwTFdadmJuUXRZMjlzYjNJek9pQnlaMkpoS0RBc01Dd3dMREF1TXlrN1hHNWNiaUFnTHlvZ1ZYTmxJSFJvWlhObElHRm5ZV2x1YzNRZ2RHaGxJR0p5WVc1a0wyRmpZMlZ1ZEM5M1lYSnVMMlZ5Y205eUlHTnZiRzl5Y3k1Y2JpQWdJQ0FnVkdobGMyVWdkMmxzYkNCMGVYQnBZMkZzYkhrZ1oyOGdabkp2YlNCc2FXZG9kQ0IwYnlCa1lYSnJaWElzSUdsdUlHSnZkR2dnWVNCa1lYSnJJR0Z1WkNCc2FXZG9kQ0IwYUdWdFpWeHVJQ0FnS2k5Y2JseHVJQ0F0TFdwd0xXbHVkbVZ5YzJVdGRXa3RabTl1ZEMxamIyeHZjakE2SUhKblltRW9NalUxTERJMU5Td3lOVFVzTVNrN1hHNGdJQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNVG9nY21kaVlTZ3lOVFVzTWpVMUxESTFOU3d4TGpBcE8xeHVJQ0F0TFdwd0xXbHVkbVZ5YzJVdGRXa3RabTl1ZEMxamIyeHZjakk2SUhKblltRW9NalUxTERJMU5Td3lOVFVzTUM0M0tUdGNiaUFnTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l6T2lCeVoySmhLREkxTlN3eU5UVXNNalUxTERBdU5TazdYRzVjYmlBZ0x5b2dRMjl1ZEdWdWRDQkdiMjUwYzF4dVhHNGdJRU52Ym5SbGJuUWdabTl1ZENCMllYSnBZV0pzWlhNZ1lYSmxJSFZ6WldRZ1ptOXlJSFI1Y0c5bmNtRndhSGtnYjJZZ2RYTmxjaUJuWlc1bGNtRjBaV1FnWTI5dWRHVnVkQzVjYmlBZ0tpOWNibHh1SUNBdExXcHdMV052Ym5SbGJuUXRabTl1ZEMxemFYcGxPaUF4TTNCNE8xeHVJQ0F0TFdwd0xXTnZiblJsYm5RdGJHbHVaUzFvWldsbmFIUTZJREV1TlR0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJd09pQmliR0ZqYXp0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeE9pQmliR0ZqYXp0Y2JpQWdMUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeU9pQjJZWElvTFMxdFpDMW5jbVY1TFRjd01DazdYRzRnSUMwdGFuQXRZMjl1ZEdWdWRDMW1iMjUwTFdOdmJHOXlNem9nZG1GeUtDMHRiV1F0WjNKbGVTMDFNREFwTzF4dVhHNGdJQzB0YW5BdGRXa3RabTl1ZEMxelkyRnNaUzFtWVdOMGIzSTZJREV1TWp0Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFhOcGVtVXdPaUJqWVd4aktIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdGMybDZaVEVwTDNaaGNpZ3RMV3B3TFhWcExXWnZiblF0YzJOaGJHVXRabUZqZEc5eUtTazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMXphWHBsTVRvZ01UTndlRHNnTHlvZ1FtRnpaU0JtYjI1MElITnBlbVVnS2k5Y2JpQWdMUzFxY0MxMWFTMW1iMjUwTFhOcGVtVXlPaUJqWVd4aktIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdGMybDZaVEVwS25aaGNpZ3RMV3B3TFhWcExXWnZiblF0YzJOaGJHVXRabUZqZEc5eUtTazdYRzRnSUMwdGFuQXRkV2t0Wm05dWRDMXphWHBsTXpvZ1kyRnNZeWgyWVhJb0xTMXFjQzExYVMxbWIyNTBMWE5wZW1VeUtTcDJZWElvTFMxcWNDMTFhUzFtYjI1MExYTmpZV3hsTFdaaFkzUnZjaWtwTzF4dVhHNGdJQzB0YW5BdFkyOWtaUzFtYjI1MExYTnBlbVU2SURFemNIZzdYRzRnSUMwdGFuQXRZMjlrWlMxc2FXNWxMV2hsYVdkb2REb2dNUzR6TURjN1hHNGdJQzB0YW5BdFkyOWtaUzF3WVdSa2FXNW5PaUExY0hnN1hHNGdJQzB0YW5BdFkyOWtaUzFtYjI1MExXWmhiV2xzZVRvZ2JXOXViM053WVdObE8xeHVYRzVjYmlBZ0x5b2dUR0Y1YjNWMFhHNWNiaUFnVkdobElHWnZiR3h2ZDJsdVp5QmhjbVVnZEdobElHMWhhVzRnYkdGNWIzVjBJR052Ykc5eWN5QjFjMlVnYVc0Z1NuVndlWFJsY2t4aFlpNGdTVzRnWVNCc2FXZG9kRnh1SUNCMGFHVnRaU0IwYUdWelpTQjNiM1ZzWkNCbmJ5Qm1jbTl0SUd4cFoyaDBJSFJ2SUdSaGNtc3VYRzRnSUNvdlhHNWNiaUFnTFMxcWNDMXNZWGx2ZFhRdFkyOXNiM0l3T2lCM2FHbDBaVHRjYmlBZ0xTMXFjQzFzWVhsdmRYUXRZMjlzYjNJeE9pQjNhR2wwWlR0Y2JpQWdMUzFxY0Mxc1lYbHZkWFF0WTI5c2IzSXlPaUIyWVhJb0xTMXRaQzFuY21WNUxUSXdNQ2s3WEc0Z0lDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU16b2dkbUZ5S0MwdGJXUXRaM0psZVMwME1EQXBPMXh1WEc0Z0lDOHFJRUp5WVc1a0wyRmpZMlZ1ZENBcUwxeHVYRzRnSUMwdGFuQXRZbkpoYm1RdFkyOXNiM0l3T2lCMllYSW9MUzF0WkMxaWJIVmxMVGN3TUNrN1hHNGdJQzB0YW5BdFluSmhibVF0WTI5c2IzSXhPaUIyWVhJb0xTMXRaQzFpYkhWbExUVXdNQ2s3WEc0Z0lDMHRhbkF0WW5KaGJtUXRZMjlzYjNJeU9pQjJZWElvTFMxdFpDMWliSFZsTFRNd01DazdYRzRnSUMwdGFuQXRZbkpoYm1RdFkyOXNiM0l6T2lCMllYSW9MUzF0WkMxaWJIVmxMVEV3TUNrN1hHNWNiaUFnTFMxcWNDMWhZMk5sYm5RdFkyOXNiM0l3T2lCMllYSW9MUzF0WkMxbmNtVmxiaTAzTURBcE8xeHVJQ0F0TFdwd0xXRmpZMlZ1ZEMxamIyeHZjakU2SUhaaGNpZ3RMVzFrTFdkeVpXVnVMVFV3TUNrN1hHNGdJQzB0YW5BdFlXTmpaVzUwTFdOdmJHOXlNam9nZG1GeUtDMHRiV1F0WjNKbFpXNHRNekF3S1R0Y2JpQWdMUzFxY0MxaFkyTmxiblF0WTI5c2IzSXpPaUIyWVhJb0xTMXRaQzFuY21WbGJpMHhNREFwTzF4dVhHNGdJQzhxSUZOMFlYUmxJR052Ykc5eWN5QW9kMkZ5Yml3Z1pYSnliM0lzSUhOMVkyTmxjM01zSUdsdVptOHBJQ292WEc1Y2JpQWdMUzFxY0MxM1lYSnVMV052Ykc5eU1Eb2dkbUZ5S0MwdGJXUXRiM0poYm1kbExUY3dNQ2s3WEc0Z0lDMHRhbkF0ZDJGeWJpMWpiMnh2Y2pFNklIWmhjaWd0TFcxa0xXOXlZVzVuWlMwMU1EQXBPMXh1SUNBdExXcHdMWGRoY200dFkyOXNiM0l5T2lCMllYSW9MUzF0WkMxdmNtRnVaMlV0TXpBd0tUdGNiaUFnTFMxcWNDMTNZWEp1TFdOdmJHOXlNem9nZG1GeUtDMHRiV1F0YjNKaGJtZGxMVEV3TUNrN1hHNWNiaUFnTFMxcWNDMWxjbkp2Y2kxamIyeHZjakE2SUhaaGNpZ3RMVzFrTFhKbFpDMDNNREFwTzF4dUlDQXRMV3B3TFdWeWNtOXlMV052Ykc5eU1Ub2dkbUZ5S0MwdGJXUXRjbVZrTFRVd01DazdYRzRnSUMwdGFuQXRaWEp5YjNJdFkyOXNiM0l5T2lCMllYSW9MUzF0WkMxeVpXUXRNekF3S1R0Y2JpQWdMUzFxY0MxbGNuSnZjaTFqYjJ4dmNqTTZJSFpoY2lndExXMWtMWEpsWkMweE1EQXBPMXh1WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqQTZJSFpoY2lndExXMWtMV2R5WldWdUxUY3dNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqRTZJSFpoY2lndExXMWtMV2R5WldWdUxUVXdNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqSTZJSFpoY2lndExXMWtMV2R5WldWdUxUTXdNQ2s3WEc0Z0lDMHRhbkF0YzNWalkyVnpjeTFqYjJ4dmNqTTZJSFpoY2lndExXMWtMV2R5WldWdUxURXdNQ2s3WEc1Y2JpQWdMUzFxY0MxcGJtWnZMV052Ykc5eU1Eb2dkbUZ5S0MwdGJXUXRZM2xoYmkwM01EQXBPMXh1SUNBdExXcHdMV2x1Wm04dFkyOXNiM0l4T2lCMllYSW9MUzF0WkMxamVXRnVMVFV3TUNrN1hHNGdJQzB0YW5BdGFXNW1ieTFqYjJ4dmNqSTZJSFpoY2lndExXMWtMV041WVc0dE16QXdLVHRjYmlBZ0xTMXFjQzFwYm1adkxXTnZiRzl5TXpvZ2RtRnlLQzB0YldRdFkzbGhiaTB4TURBcE8xeHVYRzRnSUM4cUlFTmxiR3dnYzNCbFkybG1hV01nYzNSNWJHVnpJQ292WEc1Y2JpQWdMUzFxY0MxalpXeHNMWEJoWkdScGJtYzZJRFZ3ZUR0Y2JpQWdMUzFxY0MxalpXeHNMV1ZrYVhSdmNpMWlZV05yWjNKdmRXNWtPaUFqWmpkbU4yWTNPMXh1SUNBdExXcHdMV05sYkd3dFpXUnBkRzl5TFdKdmNtUmxjaTFqYjJ4dmNqb2dJMk5tWTJaalpqdGNiaUFnTFMxcWNDMWpaV3hzTFdWa2FYUnZjaTFpWVdOclozSnZkVzVrTFdWa2FYUTZJSFpoY2lndExXcHdMWFZwTFd4aGVXOTFkQzFqYjJ4dmNqRXBPMXh1SUNBdExXcHdMV05sYkd3dFpXUnBkRzl5TFdKdmNtUmxjaTFqYjJ4dmNpMWxaR2wwT2lCMllYSW9MUzFxY0MxaWNtRnVaQzFqYjJ4dmNqRXBPMXh1SUNBdExXcHdMV05sYkd3dGNISnZiWEIwTFhkcFpIUm9PaUF4TURCd2VEdGNiaUFnTFMxcWNDMWpaV3hzTFhCeWIyMXdkQzFtYjI1MExXWmhiV2xzZVRvZ0oxSnZZbTkwYnlCTmIyNXZKeXdnYlc5dWIzTndZV05sTzF4dUlDQXRMV3B3TFdObGJHd3RjSEp2YlhCMExXeGxkSFJsY2kxemNHRmphVzVuT2lBd2NIZzdYRzRnSUMwdGFuQXRZMlZzYkMxd2NtOXRjSFF0YjNCaFkybDBlVG9nTVM0d08xeHVJQ0F0TFdwd0xXTmxiR3d0Y0hKdmJYQjBMVzl3WVdOcGRIa3RibTkwTFdGamRHbDJaVG9nTUM0ME8xeHVJQ0F0TFdwd0xXTmxiR3d0Y0hKdmJYQjBMV1p2Ym5RdFkyOXNiM0l0Ym05MExXRmpkR2wyWlRvZ2RtRnlLQzB0YldRdFozSmxlUzAzTURBcE8xeHVJQ0F2S2lCQklHTjFjM1J2YlNCaWJHVnVaQ0J2WmlCTlJDQm5jbVY1SUdGdVpDQmliSFZsSURZd01GeHVJQ0FnS2lCVFpXVWdhSFIwY0hNNkx5OXRaWGxsY25kbFlpNWpiMjB2WlhKcFl5OTBiMjlzY3k5amIyeHZjaTFpYkdWdVpDOGpOVFEyUlRkQk9qRkZPRGhGTlRvMU9taGxlQ0FxTDF4dUlDQXRMV3B3TFdObGJHd3RhVzV3Y205dGNIUXRabTl1ZEMxamIyeHZjam9nSXpNd04wWkRNVHRjYmlBZ0x5b2dRU0JqZFhOMGIyMGdZbXhsYm1RZ2IyWWdUVVFnWjNKbGVTQmhibVFnYjNKaGJtZGxJRFl3TUZ4dUlDQWdLaUJvZEhSd2N6b3ZMMjFsZVdWeWQyVmlMbU52YlM5bGNtbGpMM1J2YjJ4ekwyTnZiRzl5TFdKc1pXNWtMeU0xTkRaRk4wRTZSalExTVRGRk9qVTZhR1Y0SUNvdlhHNGdJQzB0YW5BdFkyVnNiQzF2ZFhSd2NtOXRjSFF0Wm05dWRDMWpiMnh2Y2pvZ0kwSkdOVUl6UkR0Y2JseHVJQ0F2S2lCT2IzUmxZbTl2YXlCemNHVmphV1pwWXlCemRIbHNaWE1nS2k5Y2JseHVJQ0F0TFdwd0xXNXZkR1ZpYjI5ckxYQmhaR1JwYm1jNklERXdjSGc3WEc0Z0lDMHRhbkF0Ym05MFpXSnZiMnN0YzJOeWIyeHNMWEJoWkdScGJtYzZJREV3TUhCNE8xeHVYRzRnSUM4cUlFTnZibk52YkdVZ2MzQmxZMmxtYVdNZ2MzUjViR1Z6SUNvdlhHNWNiaUFnTFMxcWNDMWpiMjV6YjJ4bExXSmhZMnRuY205MWJtUTZJSFpoY2lndExXMWtMV2R5WlhrdE1UQXdLVHRjYmx4dUlDQXZLaUJVYjI5c1ltRnlJSE53WldOcFptbGpJSE4wZVd4bGN5QXFMMXh1WEc0Z0lDMHRhbkF0ZEc5dmJHSmhjaTFpYjNKa1pYSXRZMjlzYjNJNklIWmhjaWd0TFcxa0xXZHlaWGt0TkRBd0tUdGNiaUFnTFMxcWNDMTBiMjlzWW1GeUxXMXBZM0p2TFdobGFXZG9kRG9nT0hCNE8xeHVJQ0F0TFdwd0xYUnZiMnhpWVhJdFltRmphMmR5YjNWdVpEb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TUNrN1hHNGdJQzB0YW5BdGRHOXZiR0poY2kxaWIzZ3RjMmhoWkc5M09pQXdjSGdnTUhCNElESndlQ0F3Y0hnZ2NtZGlZU2d3TERBc01Dd3dMakkwS1R0Y2JpQWdMUzFxY0MxMGIyOXNZbUZ5TFdobFlXUmxjaTF0WVhKbmFXNDZJRFJ3ZUNBMGNIZ2dNSEI0SURSd2VEdGNiaUFnTFMxcWNDMTBiMjlzWW1GeUxXRmpkR2wyWlMxaVlXTnJaM0p2ZFc1a09pQjJZWElvTFMxdFpDMW5jbVY1TFRNd01DazdYRzU5WEc0aUxDSXZLaXBjYmlBcUlGUm9aU0J0WVhSbGNtbGhiQ0JrWlhOcFoyNGdZMjlzYjNKeklHRnlaU0JoWkdGd2RHVmtJR1p5YjIwZ1oyOXZaMnhsTFcxaGRHVnlhV0ZzTFdOdmJHOXlJSFl4TGpJdU5seHVJQ29nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJSaGJteGxkbUZ1TDJkdmIyZHNaUzF0WVhSbGNtbGhiQzFqYjJ4dmNseHVJQ29nYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDJSaGJteGxkbUZ1TDJkdmIyZHNaUzF0WVhSbGNtbGhiQzFqYjJ4dmNpOWliRzlpTDJZMk4yTmhOV1kwTURJNFlqSm1NV0l6TkRnMk1tWTJOR0l3WTJFMk56TXlNMlk1TVdJd09EZ3ZaR2x6ZEM5d1lXeGxkSFJsTG5aaGNpNWpjM05jYmlBcVhHNGdLaUJVYUdVZ2JHbGpaVzV6WlNCbWIzSWdkR2hsSUcxaGRHVnlhV0ZzSUdSbGMybG5iaUJqYjJ4dmNpQkRVMU1nZG1GeWFXRmliR1Z6SUdseklHRnpJR1p2Ykd4dmQzTWdLSE5sWlZ4dUlDb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMlJoYm14bGRtRnVMMmR2YjJkc1pTMXRZWFJsY21saGJDMWpiMnh2Y2k5aWJHOWlMMlkyTjJOaE5XWTBNREk0WWpKbU1XSXpORGcyTW1ZMk5HSXdZMkUyTnpNeU0yWTVNV0l3T0RndlRFbERSVTVUUlNsY2JpQXFYRzRnS2lCVWFHVWdUVWxVSUV4cFkyVnVjMlVnS0UxSlZDbGNiaUFxWEc0Z0tpQkRiM0I1Y21sbmFIUWdLR01wSURJd01UUWdSR0Z1SUV4bElGWmhibHh1SUNwY2JpQXFJRkJsY20xcGMzTnBiMjRnYVhNZ2FHVnlaV0o1SUdkeVlXNTBaV1FzSUdaeVpXVWdiMllnWTJoaGNtZGxMQ0IwYnlCaGJua2djR1Z5YzI5dUlHOWlkR0ZwYm1sdVp5QmhJR052Y0hsY2JpQXFJRzltSUhSb2FYTWdjMjltZEhkaGNtVWdZVzVrSUdGemMyOWphV0YwWldRZ1pHOWpkVzFsYm5SaGRHbHZiaUJtYVd4bGN5QW9kR2hsSUZ3aVUyOW1kSGRoY21WY0lpa3NJSFJ2SUdSbFlXeGNiaUFxSUdsdUlIUm9aU0JUYjJaMGQyRnlaU0IzYVhSb2IzVjBJSEpsYzNSeWFXTjBhVzl1TENCcGJtTnNkV1JwYm1jZ2QybDBhRzkxZENCc2FXMXBkR0YwYVc5dUlIUm9aU0J5YVdkb2RITmNiaUFxSUhSdklIVnpaU3dnWTI5d2VTd2diVzlrYVdaNUxDQnRaWEpuWlN3Z2NIVmliR2x6YUN3Z1pHbHpkSEpwWW5WMFpTd2djM1ZpYkdsalpXNXpaU3dnWVc1a0wyOXlJSE5sYkd4Y2JpQXFJR052Y0dsbGN5QnZaaUIwYUdVZ1UyOW1kSGRoY21Vc0lHRnVaQ0IwYnlCd1pYSnRhWFFnY0dWeWMyOXVjeUIwYnlCM2FHOXRJSFJvWlNCVGIyWjBkMkZ5WlNCcGMxeHVJQ29nWm5WeWJtbHphR1ZrSUhSdklHUnZJSE52TENCemRXSnFaV04wSUhSdklIUm9aU0JtYjJ4c2IzZHBibWNnWTI5dVpHbDBhVzl1Y3pwY2JpQXFYRzRnS2lCVWFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlNCaGJtUWdkR2hwY3lCd1pYSnRhWE56YVc5dUlHNXZkR2xqWlNCemFHRnNiQ0JpWlNCcGJtTnNkV1JsWkNCcGJseHVJQ29nWVd4c0lHTnZjR2xsY3lCdmNpQnpkV0p6ZEdGdWRHbGhiQ0J3YjNKMGFXOXVjeUJ2WmlCMGFHVWdVMjltZEhkaGNtVXVYRzRnS2x4dUlDb2dWRWhGSUZOUFJsUlhRVkpGSUVsVElGQlNUMVpKUkVWRUlGd2lRVk1nU1ZOY0lpd2dWMGxVU0U5VlZDQlhRVkpTUVU1VVdTQlBSaUJCVGxrZ1MwbE9SQ3dnUlZoUVVrVlRVeUJQVWx4dUlDb2dTVTFRVEVsRlJDd2dTVTVEVEZWRVNVNUhJRUpWVkNCT1QxUWdURWxOU1ZSRlJDQlVUeUJVU0VVZ1YwRlNVa0ZPVkVsRlV5QlBSaUJOUlZKRFNFRk9WRUZDU1V4SlZGa3NYRzRnS2lCR1NWUk9SVk5USUVaUFVpQkJJRkJCVWxSSlExVk1RVklnVUZWU1VFOVRSU0JCVGtRZ1RrOU9TVTVHVWtsT1IwVk5SVTVVTGlCSlRpQk9UeUJGVmtWT1ZDQlRTRUZNVENCVVNFVmNiaUFxSUVGVlZFaFBVbE1nVDFJZ1EwOVFXVkpKUjBoVUlFaFBURVJGVWxNZ1FrVWdURWxCUWt4RklFWlBVaUJCVGxrZ1EweEJTVTBzSUVSQlRVRkhSVk1nVDFJZ1QxUklSVkpjYmlBcUlFeEpRVUpKVEVsVVdTd2dWMGhGVkVoRlVpQkpUaUJCVGlCQlExUkpUMDRnVDBZZ1EwOU9WRkpCUTFRc0lGUlBVbFFnVDFJZ1QxUklSVkpYU1ZORkxDQkJVa2xUU1U1SElFWlNUMDBzWEc0Z0tpQlBWVlFnVDBZZ1QxSWdTVTRnUTA5T1RrVkRWRWxQVGlCWFNWUklJRlJJUlNCVFQwWlVWMEZTUlNCUFVpQlVTRVVnVlZORklFOVNJRTlVU0VWU0lFUkZRVXhKVGtkVElFbE9JRlJJUlZ4dUlDb2dVMDlHVkZkQlVrVXVYRzRnS2k5Y2JqcHliMjkwSUh0Y2JpQWdMUzF0WkMxeVpXUXROVEE2SUNOR1JrVkNSVVU3WEc0Z0lDMHRiV1F0Y21Wa0xURXdNRG9nSTBaR1EwUkVNanRjYmlBZ0xTMXRaQzF5WldRdE1qQXdPaUFqUlVZNVFUbEJPMXh1SUNBdExXMWtMWEpsWkMwek1EQTZJQ05GTlRjek56TTdYRzRnSUMwdGJXUXRjbVZrTFRRd01Eb2dJMFZHTlRNMU1EdGNiaUFnTFMxdFpDMXlaV1F0TlRBd09pQWpSalEwTXpNMk8xeHVJQ0F0TFcxa0xYSmxaQzAyTURBNklDTkZOVE01TXpVN1hHNGdJQzB0YldRdGNtVmtMVGN3TURvZ0kwUXpNa1l5Ump0Y2JpQWdMUzF0WkMxeVpXUXRPREF3T2lBalF6WXlPREk0TzF4dUlDQXRMVzFrTFhKbFpDMDVNREE2SUNOQ056RkRNVU03WEc0Z0lDMHRiV1F0Y21Wa0xVRXhNREE2SUNOR1JqaEJPREE3WEc0Z0lDMHRiV1F0Y21Wa0xVRXlNREE2SUNOR1JqVXlOVEk3WEc0Z0lDMHRiV1F0Y21Wa0xVRTBNREE2SUNOR1JqRTNORFE3WEc0Z0lDMHRiV1F0Y21Wa0xVRTNNREE2SUNORU5UQXdNREE3WEc1Y2JpQWdMUzF0WkMxd2FXNXJMVFV3T2lBalJrTkZORVZETzF4dUlDQXRMVzFrTFhCcGJtc3RNVEF3T2lBalJqaENRa1F3TzF4dUlDQXRMVzFrTFhCcGJtc3RNakF3T2lBalJqUTRSa0l4TzF4dUlDQXRMVzFrTFhCcGJtc3RNekF3T2lBalJqQTJNamt5TzF4dUlDQXRMVzFrTFhCcGJtc3ROREF3T2lBalJVTTBNRGRCTzF4dUlDQXRMVzFrTFhCcGJtc3ROVEF3T2lBalJUa3hSVFl6TzF4dUlDQXRMVzFrTFhCcGJtc3ROakF3T2lBalJEZ3hRall3TzF4dUlDQXRMVzFrTFhCcGJtc3ROekF3T2lBalF6SXhPRFZDTzF4dUlDQXRMVzFrTFhCcGJtc3RPREF3T2lBalFVUXhORFUzTzF4dUlDQXRMVzFrTFhCcGJtc3RPVEF3T2lBak9EZ3dSVFJHTzF4dUlDQXRMVzFrTFhCcGJtc3RRVEV3TURvZ0kwWkdPREJCUWp0Y2JpQWdMUzF0WkMxd2FXNXJMVUV5TURBNklDTkdSalF3T0RFN1hHNGdJQzB0YldRdGNHbHVheTFCTkRBd09pQWpSalV3TURVM08xeHVJQ0F0TFcxa0xYQnBibXN0UVRjd01Eb2dJME0xTVRFMk1qdGNibHh1SUNBdExXMWtMWEIxY25Cc1pTMDFNRG9nSTBZelJUVkdOVHRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRNVEF3T2lBalJURkNSVVUzTzF4dUlDQXRMVzFrTFhCMWNuQnNaUzB5TURBNklDTkRSVGt6UkRnN1hHNGdJQzB0YldRdGNIVnljR3hsTFRNd01Eb2dJMEpCTmpoRE9EdGNiaUFnTFMxdFpDMXdkWEp3YkdVdE5EQXdPaUFqUVVJME4wSkRPMXh1SUNBdExXMWtMWEIxY25Cc1pTMDFNREE2SUNNNVF6STNRakE3WEc0Z0lDMHRiV1F0Y0hWeWNHeGxMVFl3TURvZ0l6aEZNalJCUVR0Y2JpQWdMUzF0WkMxd2RYSndiR1V0TnpBd09pQWpOMEl4UmtFeU8xeHVJQ0F0TFcxa0xYQjFjbkJzWlMwNE1EQTZJQ00yUVRGQ09VRTdYRzRnSUMwdGJXUXRjSFZ5Y0d4bExUa3dNRG9nSXpSQk1UUTRRenRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRRVEV3TURvZ0kwVkJPREJHUXp0Y2JpQWdMUzF0WkMxd2RYSndiR1V0UVRJd01Eb2dJMFV3TkRCR1FqdGNiaUFnTFMxdFpDMXdkWEp3YkdVdFFUUXdNRG9nSTBRMU1EQkdPVHRjYmlBZ0xTMXRaQzF3ZFhKd2JHVXRRVGN3TURvZ0kwRkJNREJHUmp0Y2JseHVJQ0F0TFcxa0xXUmxaWEF0Y0hWeWNHeGxMVFV3T2lBalJVUkZOMFkyTzF4dUlDQXRMVzFrTFdSbFpYQXRjSFZ5Y0d4bExURXdNRG9nSTBReFF6UkZPVHRjYmlBZ0xTMXRaQzFrWldWd0xYQjFjbkJzWlMweU1EQTZJQ05DTXpsRVJFSTdYRzRnSUMwdGJXUXRaR1ZsY0Mxd2RYSndiR1V0TXpBd09pQWpPVFUzTlVORU8xeHVJQ0F0TFcxa0xXUmxaWEF0Y0hWeWNHeGxMVFF3TURvZ0l6ZEZOVGRETWp0Y2JpQWdMUzF0WkMxa1pXVndMWEIxY25Cc1pTMDFNREE2SUNNMk56TkJRamM3WEc0Z0lDMHRiV1F0WkdWbGNDMXdkWEp3YkdVdE5qQXdPaUFqTlVVek5VSXhPMXh1SUNBdExXMWtMV1JsWlhBdGNIVnljR3hsTFRjd01Eb2dJelV4TWtSQk9EdGNiaUFnTFMxdFpDMWtaV1Z3TFhCMWNuQnNaUzA0TURBNklDTTBOVEkzUVRBN1hHNGdJQzB0YldRdFpHVmxjQzF3ZFhKd2JHVXRPVEF3T2lBak16RXhRamt5TzF4dUlDQXRMVzFrTFdSbFpYQXRjSFZ5Y0d4bExVRXhNREE2SUNOQ016ZzRSa1k3WEc0Z0lDMHRiV1F0WkdWbGNDMXdkWEp3YkdVdFFUSXdNRG9nSXpkRE5FUkdSanRjYmlBZ0xTMXRaQzFrWldWd0xYQjFjbkJzWlMxQk5EQXdPaUFqTmpVeFJrWkdPMXh1SUNBdExXMWtMV1JsWlhBdGNIVnljR3hsTFVFM01EQTZJQ00yTWpBd1JVRTdYRzVjYmlBZ0xTMXRaQzFwYm1ScFoyOHROVEE2SUNORk9FVkJSalk3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVEV3TURvZ0kwTTFRMEZGT1R0Y2JpQWdMUzF0WkMxcGJtUnBaMjh0TWpBd09pQWpPVVpCT0VSQk8xeHVJQ0F0TFcxa0xXbHVaR2xuYnkwek1EQTZJQ00zT1RnMlEwSTdYRzRnSUMwdGJXUXRhVzVrYVdkdkxUUXdNRG9nSXpWRE5rSkRNRHRjYmlBZ0xTMXRaQzFwYm1ScFoyOHROVEF3T2lBak0wWTFNVUkxTzF4dUlDQXRMVzFrTFdsdVpHbG5ieTAyTURBNklDTXpPVFE1UVVJN1hHNGdJQzB0YldRdGFXNWthV2R2TFRjd01Eb2dJek13TTBZNVJqdGNiaUFnTFMxdFpDMXBibVJwWjI4dE9EQXdPaUFqTWpnek5Ua3pPMXh1SUNBdExXMWtMV2x1WkdsbmJ5MDVNREE2SUNNeFFUSXpOMFU3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVUV4TURBNklDTTRRemxGUmtZN1hHNGdJQzB0YldRdGFXNWthV2R2TFVFeU1EQTZJQ00xTXpaRVJrVTdYRzRnSUMwdGJXUXRhVzVrYVdkdkxVRTBNREE2SUNNelJEVkJSa1U3WEc0Z0lDMHRiV1F0YVc1a2FXZHZMVUUzTURBNklDTXpNRFJHUmtVN1hHNWNiaUFnTFMxdFpDMWliSFZsTFRVd09pQWpSVE5HTWtaRU8xeHVJQ0F0TFcxa0xXSnNkV1V0TVRBd09pQWpRa0pFUlVaQ08xeHVJQ0F0TFcxa0xXSnNkV1V0TWpBd09pQWpPVEJEUVVZNU8xeHVJQ0F0TFcxa0xXSnNkV1V0TXpBd09pQWpOalJDTlVZMk8xeHVJQ0F0TFcxa0xXSnNkV1V0TkRBd09pQWpOREpCTlVZMU8xeHVJQ0F0TFcxa0xXSnNkV1V0TlRBd09pQWpNakU1TmtZek8xeHVJQ0F0TFcxa0xXSnNkV1V0TmpBd09pQWpNVVU0T0VVMU8xeHVJQ0F0TFcxa0xXSnNkV1V0TnpBd09pQWpNVGszTmtReU8xeHVJQ0F0TFcxa0xXSnNkV1V0T0RBd09pQWpNVFUyTlVNd08xeHVJQ0F0TFcxa0xXSnNkV1V0T1RBd09pQWpNRVEwTjBFeE8xeHVJQ0F0TFcxa0xXSnNkV1V0UVRFd01Eb2dJemd5UWpGR1JqdGNiaUFnTFMxdFpDMWliSFZsTFVFeU1EQTZJQ00wTkRoQlJrWTdYRzRnSUMwdGJXUXRZbXgxWlMxQk5EQXdPaUFqTWprM09VWkdPMXh1SUNBdExXMWtMV0pzZFdVdFFUY3dNRG9nSXpJNU5qSkdSanRjYmx4dUlDQXRMVzFrTFd4cFoyaDBMV0pzZFdVdE5UQTZJQ05GTVVZMVJrVTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzB4TURBNklDTkNNMFUxUmtNN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMHlNREE2SUNNNE1VUTBSa0U3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwek1EQTZJQ00wUmtNelJqYzdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzAwTURBNklDTXlPVUkyUmpZN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMDFNREE2SUNNd00wRTVSalE3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwMk1EQTZJQ013TXpsQ1JUVTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzAzTURBNklDTXdNamc0UkRFN1hHNGdJQzB0YldRdGJHbG5hSFF0WW14MVpTMDRNREE2SUNNd01qYzNRa1E3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMwNU1EQTZJQ013TVRVM09VSTdYRzRnSUMwdGJXUXRiR2xuYUhRdFlteDFaUzFCTVRBd09pQWpPREJFT0VaR08xeHVJQ0F0TFcxa0xXeHBaMmgwTFdKc2RXVXRRVEl3TURvZ0l6UXdRelJHUmp0Y2JpQWdMUzF0WkMxc2FXZG9kQzFpYkhWbExVRTBNREE2SUNNd01FSXdSa1k3WEc0Z0lDMHRiV1F0YkdsbmFIUXRZbXgxWlMxQk56QXdPaUFqTURBNU1VVkJPMXh1WEc0Z0lDMHRiV1F0WTNsaGJpMDFNRG9nSTBVd1JqZEdRVHRjYmlBZ0xTMXRaQzFqZVdGdUxURXdNRG9nSTBJeVJVSkdNanRjYmlBZ0xTMXRaQzFqZVdGdUxUSXdNRG9nSXpnd1JFVkZRVHRjYmlBZ0xTMXRaQzFqZVdGdUxUTXdNRG9nSXpSRVJEQkZNVHRjYmlBZ0xTMXRaQzFqZVdGdUxUUXdNRG9nSXpJMlF6WkVRVHRjYmlBZ0xTMXRaQzFqZVdGdUxUVXdNRG9nSXpBd1FrTkVORHRjYmlBZ0xTMXRaQzFqZVdGdUxUWXdNRG9nSXpBd1FVTkRNVHRjYmlBZ0xTMXRaQzFqZVdGdUxUY3dNRG9nSXpBd09UZEJOenRjYmlBZ0xTMXRaQzFqZVdGdUxUZ3dNRG9nSXpBd09ETTRSanRjYmlBZ0xTMXRaQzFqZVdGdUxUa3dNRG9nSXpBd05qQTJORHRjYmlBZ0xTMXRaQzFqZVdGdUxVRXhNREE2SUNNNE5FWkdSa1k3WEc0Z0lDMHRiV1F0WTNsaGJpMUJNakF3T2lBak1UaEdSa1pHTzF4dUlDQXRMVzFrTFdONVlXNHRRVFF3TURvZ0l6QXdSVFZHUmp0Y2JpQWdMUzF0WkMxamVXRnVMVUUzTURBNklDTXdNRUk0UkRRN1hHNWNiaUFnTFMxdFpDMTBaV0ZzTFRVd09pQWpSVEJHTWtZeE8xeHVJQ0F0TFcxa0xYUmxZV3d0TVRBd09pQWpRakpFUmtSQ08xeHVJQ0F0TFcxa0xYUmxZV3d0TWpBd09pQWpPREJEUWtNME8xeHVJQ0F0TFcxa0xYUmxZV3d0TXpBd09pQWpORVJDTmtGRE8xeHVJQ0F0TFcxa0xYUmxZV3d0TkRBd09pQWpNalpCTmpsQk8xeHVJQ0F0TFcxa0xYUmxZV3d0TlRBd09pQWpNREE1TmpnNE8xeHVJQ0F0TFcxa0xYUmxZV3d0TmpBd09pQWpNREE0T1RkQ08xeHVJQ0F0TFcxa0xYUmxZV3d0TnpBd09pQWpNREEzT1RaQ08xeHVJQ0F0TFcxa0xYUmxZV3d0T0RBd09pQWpNREEyT1RWRE8xeHVJQ0F0TFcxa0xYUmxZV3d0T1RBd09pQWpNREEwUkRRd08xeHVJQ0F0TFcxa0xYUmxZV3d0UVRFd01Eb2dJMEUzUmtaRlFqdGNiaUFnTFMxdFpDMTBaV0ZzTFVFeU1EQTZJQ00yTkVaR1JFRTdYRzRnSUMwdGJXUXRkR1ZoYkMxQk5EQXdPaUFqTVVSRk9VSTJPMXh1SUNBdExXMWtMWFJsWVd3dFFUY3dNRG9nSXpBd1FrWkJOVHRjYmx4dUlDQXRMVzFrTFdkeVpXVnVMVFV3T2lBalJUaEdOVVU1TzF4dUlDQXRMVzFrTFdkeVpXVnVMVEV3TURvZ0kwTTRSVFpET1R0Y2JpQWdMUzF0WkMxbmNtVmxiaTB5TURBNklDTkJOVVEyUVRjN1hHNGdJQzB0YldRdFozSmxaVzR0TXpBd09pQWpPREZETnpnME8xeHVJQ0F0TFcxa0xXZHlaV1Z1TFRRd01Eb2dJelkyUWtJMlFUdGNiaUFnTFMxdFpDMW5jbVZsYmkwMU1EQTZJQ00wUTBGR05UQTdYRzRnSUMwdGJXUXRaM0psWlc0dE5qQXdPaUFqTkROQk1EUTNPMXh1SUNBdExXMWtMV2R5WldWdUxUY3dNRG9nSXpNNE9FVXpRenRjYmlBZ0xTMXRaQzFuY21WbGJpMDRNREE2SUNNeVJUZEVNekk3WEc0Z0lDMHRiV1F0WjNKbFpXNHRPVEF3T2lBak1VSTFSVEl3TzF4dUlDQXRMVzFrTFdkeVpXVnVMVUV4TURBNklDTkNPVVkyUTBFN1hHNGdJQzB0YldRdFozSmxaVzR0UVRJd01Eb2dJelk1UmpCQlJUdGNiaUFnTFMxdFpDMW5jbVZsYmkxQk5EQXdPaUFqTURCRk5qYzJPMXh1SUNBdExXMWtMV2R5WldWdUxVRTNNREE2SUNNd01FTTROVE03WEc1Y2JpQWdMUzF0WkMxc2FXZG9kQzFuY21WbGJpMDFNRG9nSTBZeFJqaEZPVHRjYmlBZ0xTMXRaQzFzYVdkb2RDMW5jbVZsYmkweE1EQTZJQ05FUTBWRVF6ZzdYRzRnSUMwdGJXUXRiR2xuYUhRdFozSmxaVzR0TWpBd09pQWpRelZGTVVFMU8xeHVJQ0F0TFcxa0xXeHBaMmgwTFdkeVpXVnVMVE13TURvZ0kwRkZSRFU0TVR0Y2JpQWdMUzF0WkMxc2FXZG9kQzFuY21WbGJpMDBNREE2SUNNNVEwTkROalU3WEc0Z0lDMHRiV1F0YkdsbmFIUXRaM0psWlc0dE5UQXdPaUFqT0VKRE16UkJPMXh1SUNBdExXMWtMV3hwWjJoMExXZHlaV1Z1TFRZd01Eb2dJemREUWpNME1qdGNiaUFnTFMxdFpDMXNhV2RvZEMxbmNtVmxiaTAzTURBNklDTTJPRGxHTXpnN1hHNGdJQzB0YldRdGJHbG5hSFF0WjNKbFpXNHRPREF3T2lBak5UVTRRakpHTzF4dUlDQXRMVzFrTFd4cFoyaDBMV2R5WldWdUxUa3dNRG9nSXpNek5qa3hSVHRjYmlBZ0xTMXRaQzFzYVdkb2RDMW5jbVZsYmkxQk1UQXdPaUFqUTBOR1Jqa3dPMXh1SUNBdExXMWtMV3hwWjJoMExXZHlaV1Z1TFVFeU1EQTZJQ05DTWtaR05UazdYRzRnSUMwdGJXUXRiR2xuYUhRdFozSmxaVzR0UVRRd01Eb2dJemMyUmtZd016dGNiaUFnTFMxdFpDMXNhV2RvZEMxbmNtVmxiaTFCTnpBd09pQWpOalJFUkRFM08xeHVYRzRnSUMwdGJXUXRiR2x0WlMwMU1Eb2dJMFk1UmtKRk56dGNiaUFnTFMxdFpDMXNhVzFsTFRFd01Eb2dJMFl3UmpSRE16dGNiaUFnTFMxdFpDMXNhVzFsTFRJd01Eb2dJMFUyUlVVNVF6dGNiaUFnTFMxdFpDMXNhVzFsTFRNd01Eb2dJMFJEUlRjM05UdGNiaUFnTFMxdFpDMXNhVzFsTFRRd01Eb2dJMFEwUlRFMU56dGNiaUFnTFMxdFpDMXNhVzFsTFRVd01Eb2dJME5FUkVNek9UdGNiaUFnTFMxdFpDMXNhVzFsTFRZd01Eb2dJME13UTBFek16dGNiaUFnTFMxdFpDMXNhVzFsTFRjd01Eb2dJMEZHUWpReVFqdGNiaUFnTFMxdFpDMXNhVzFsTFRnd01Eb2dJemxGT1VReU5EdGNiaUFnTFMxdFpDMXNhVzFsTFRrd01Eb2dJemd5TnpjeE56dGNiaUFnTFMxdFpDMXNhVzFsTFVFeE1EQTZJQ05HTkVaR09ERTdYRzRnSUMwdGJXUXRiR2x0WlMxQk1qQXdPaUFqUlVWR1JqUXhPMXh1SUNBdExXMWtMV3hwYldVdFFUUXdNRG9nSTBNMlJrWXdNRHRjYmlBZ0xTMXRaQzFzYVcxbExVRTNNREE2SUNOQlJVVkJNREE3WEc1Y2JpQWdMUzF0WkMxNVpXeHNiM2N0TlRBNklDTkdSa1pFUlRjN1hHNGdJQzB0YldRdGVXVnNiRzkzTFRFd01Eb2dJMFpHUmpsRE5EdGNiaUFnTFMxdFpDMTVaV3hzYjNjdE1qQXdPaUFqUmtaR05UbEVPMXh1SUNBdExXMWtMWGxsYkd4dmR5MHpNREE2SUNOR1JrWXhOelk3WEc0Z0lDMHRiV1F0ZVdWc2JHOTNMVFF3TURvZ0kwWkdSVVUxT0R0Y2JpQWdMUzF0WkMxNVpXeHNiM2N0TlRBd09pQWpSa1pGUWpOQ08xeHVJQ0F0TFcxa0xYbGxiR3h2ZHkwMk1EQTZJQ05HUkVRNE16VTdYRzRnSUMwdGJXUXRlV1ZzYkc5M0xUY3dNRG9nSTBaQ1F6QXlSRHRjYmlBZ0xTMXRaQzE1Wld4c2IzY3RPREF3T2lBalJqbEJPREkxTzF4dUlDQXRMVzFrTFhsbGJHeHZkeTA1TURBNklDTkdOVGRHTVRjN1hHNGdJQzB0YldRdGVXVnNiRzkzTFVFeE1EQTZJQ05HUmtaR09FUTdYRzRnSUMwdGJXUXRlV1ZzYkc5M0xVRXlNREE2SUNOR1JrWkdNREE3WEc0Z0lDMHRiV1F0ZVdWc2JHOTNMVUUwTURBNklDTkdSa1ZCTURBN1hHNGdJQzB0YldRdGVXVnNiRzkzTFVFM01EQTZJQ05HUmtRMk1EQTdYRzVjYmlBZ0xTMXRaQzFoYldKbGNpMDFNRG9nSTBaR1JqaEZNVHRjYmlBZ0xTMXRaQzFoYldKbGNpMHhNREE2SUNOR1JrVkRRak03WEc0Z0lDMHRiV1F0WVcxaVpYSXRNakF3T2lBalJrWkZNRGd5TzF4dUlDQXRMVzFrTFdGdFltVnlMVE13TURvZ0kwWkdSRFUwUmp0Y2JpQWdMUzF0WkMxaGJXSmxjaTAwTURBNklDTkdSa05CTWpnN1hHNGdJQzB0YldRdFlXMWlaWEl0TlRBd09pQWpSa1pETVRBM08xeHVJQ0F0TFcxa0xXRnRZbVZ5TFRZd01Eb2dJMFpHUWpNd01EdGNiaUFnTFMxdFpDMWhiV0psY2kwM01EQTZJQ05HUmtFd01EQTdYRzRnSUMwdGJXUXRZVzFpWlhJdE9EQXdPaUFqUmtZNFJqQXdPMXh1SUNBdExXMWtMV0Z0WW1WeUxUa3dNRG9nSTBaR05rWXdNRHRjYmlBZ0xTMXRaQzFoYldKbGNpMUJNVEF3T2lBalJrWkZOVGRHTzF4dUlDQXRMVzFrTFdGdFltVnlMVUV5TURBNklDTkdSa1EzTkRBN1hHNGdJQzB0YldRdFlXMWlaWEl0UVRRd01Eb2dJMFpHUXpRd01EdGNiaUFnTFMxdFpDMWhiV0psY2kxQk56QXdPaUFqUmtaQlFqQXdPMXh1WEc0Z0lDMHRiV1F0YjNKaGJtZGxMVFV3T2lBalJrWkdNMFV3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzB4TURBNklDTkdSa1V3UWpJN1hHNGdJQzB0YldRdGIzSmhibWRsTFRJd01Eb2dJMFpHUTBNNE1EdGNiaUFnTFMxdFpDMXZjbUZ1WjJVdE16QXdPaUFqUmtaQ056UkVPMXh1SUNBdExXMWtMVzl5WVc1blpTMDBNREE2SUNOR1JrRTNNalk3WEc0Z0lDMHRiV1F0YjNKaGJtZGxMVFV3TURvZ0kwWkdPVGd3TUR0Y2JpQWdMUzF0WkMxdmNtRnVaMlV0TmpBd09pQWpSa0k0UXpBd08xeHVJQ0F0TFcxa0xXOXlZVzVuWlMwM01EQTZJQ05HTlRkRE1EQTdYRzRnSUMwdGJXUXRiM0poYm1kbExUZ3dNRG9nSTBWR05rTXdNRHRjYmlBZ0xTMXRaQzF2Y21GdVoyVXRPVEF3T2lBalJUWTFNVEF3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzFCTVRBd09pQWpSa1pFTVRnd08xeHVJQ0F0TFcxa0xXOXlZVzVuWlMxQk1qQXdPaUFqUmtaQlFqUXdPMXh1SUNBdExXMWtMVzl5WVc1blpTMUJOREF3T2lBalJrWTVNVEF3TzF4dUlDQXRMVzFrTFc5eVlXNW5aUzFCTnpBd09pQWpSa1kyUkRBd08xeHVYRzRnSUMwdGJXUXRaR1ZsY0MxdmNtRnVaMlV0TlRBNklDTkdRa1U1UlRjN1hHNGdJQzB0YldRdFpHVmxjQzF2Y21GdVoyVXRNVEF3T2lBalJrWkRRMEpETzF4dUlDQXRMVzFrTFdSbFpYQXRiM0poYm1kbExUSXdNRG9nSTBaR1FVSTVNVHRjYmlBZ0xTMXRaQzFrWldWd0xXOXlZVzVuWlMwek1EQTZJQ05HUmpoQk5qVTdYRzRnSUMwdGJXUXRaR1ZsY0MxdmNtRnVaMlV0TkRBd09pQWpSa1kzTURRek8xeHVJQ0F0TFcxa0xXUmxaWEF0YjNKaGJtZGxMVFV3TURvZ0kwWkdOVGN5TWp0Y2JpQWdMUzF0WkMxa1pXVndMVzl5WVc1blpTMDJNREE2SUNOR05EVXhNVVU3WEc0Z0lDMHRiV1F0WkdWbGNDMXZjbUZ1WjJVdE56QXdPaUFqUlRZMFFURTVPMXh1SUNBdExXMWtMV1JsWlhBdGIzSmhibWRsTFRnd01Eb2dJMFE0TkRNeE5UdGNiaUFnTFMxdFpDMWtaV1Z3TFc5eVlXNW5aUzA1TURBNklDTkNSak0yTUVNN1hHNGdJQzB0YldRdFpHVmxjQzF2Y21GdVoyVXRRVEV3TURvZ0kwWkdPVVU0TUR0Y2JpQWdMUzF0WkMxa1pXVndMVzl5WVc1blpTMUJNakF3T2lBalJrWTJSVFF3TzF4dUlDQXRMVzFrTFdSbFpYQXRiM0poYm1kbExVRTBNREE2SUNOR1JqTkVNREE3WEc0Z0lDMHRiV1F0WkdWbGNDMXZjbUZ1WjJVdFFUY3dNRG9nSTBSRU1rTXdNRHRjYmx4dUlDQXRMVzFrTFdKeWIzZHVMVFV3T2lBalJVWkZRa1U1TzF4dUlDQXRMVzFrTFdKeWIzZHVMVEV3TURvZ0kwUTNRME5ET0R0Y2JpQWdMUzF0WkMxaWNtOTNiaTB5TURBNklDTkNRMEZCUVRRN1hHNGdJQzB0YldRdFluSnZkMjR0TXpBd09pQWpRVEU0T0RkR08xeHVJQ0F0TFcxa0xXSnliM2R1TFRRd01Eb2dJemhFTmtVMk16dGNiaUFnTFMxdFpDMWljbTkzYmkwMU1EQTZJQ00zT1RVMU5EZzdYRzRnSUMwdGJXUXRZbkp2ZDI0dE5qQXdPaUFqTmtRMFF6UXhPMXh1SUNBdExXMWtMV0p5YjNkdUxUY3dNRG9nSXpWRU5EQXpOenRjYmlBZ0xTMXRaQzFpY205M2JpMDRNREE2SUNNMFJUTTBNa1U3WEc0Z0lDMHRiV1F0WW5KdmQyNHRPVEF3T2lBak0wVXlOekl6TzF4dVhHNGdJQzB0YldRdFozSmxlUzAxTURvZ0kwWkJSa0ZHUVR0Y2JpQWdMUzF0WkMxbmNtVjVMVEV3TURvZ0kwWTFSalZHTlR0Y2JpQWdMUzF0WkMxbmNtVjVMVEl3TURvZ0kwVkZSVVZGUlR0Y2JpQWdMUzF0WkMxbmNtVjVMVE13TURvZ0kwVXdSVEJGTUR0Y2JpQWdMUzF0WkMxbmNtVjVMVFF3TURvZ0kwSkVRa1JDUkR0Y2JpQWdMUzF0WkMxbmNtVjVMVFV3TURvZ0l6bEZPVVU1UlR0Y2JpQWdMUzF0WkMxbmNtVjVMVFl3TURvZ0l6YzFOelUzTlR0Y2JpQWdMUzF0WkMxbmNtVjVMVGN3TURvZ0l6WXhOakUyTVR0Y2JpQWdMUzF0WkMxbmNtVjVMVGd3TURvZ0l6UXlOREkwTWp0Y2JpQWdMUzF0WkMxbmNtVjVMVGt3TURvZ0l6SXhNakV5TVR0Y2JseHVJQ0F0TFcxa0xXSnNkV1V0WjNKbGVTMDFNRG9nSTBWRFJVWkdNVHRjYmlBZ0xTMXRaQzFpYkhWbExXZHlaWGt0TVRBd09pQWpRMFpFT0VSRE8xeHVJQ0F0TFcxa0xXSnNkV1V0WjNKbGVTMHlNREE2SUNOQ01FSkZRelU3WEc0Z0lDMHRiV1F0WW14MVpTMW5jbVY1TFRNd01Eb2dJemt3UVRSQlJUdGNiaUFnTFMxdFpDMWliSFZsTFdkeVpYa3ROREF3T2lBak56ZzVNRGxETzF4dUlDQXRMVzFrTFdKc2RXVXRaM0psZVMwMU1EQTZJQ00yTURkRU9FSTdYRzRnSUMwdGJXUXRZbXgxWlMxbmNtVjVMVFl3TURvZ0l6VTBOa1UzUVR0Y2JpQWdMUzF0WkMxaWJIVmxMV2R5WlhrdE56QXdPaUFqTkRVMVFUWTBPMXh1SUNBdExXMWtMV0pzZFdVdFozSmxlUzA0TURBNklDTXpOelEzTkVZN1hHNGdJQzB0YldRdFlteDFaUzFuY21WNUxUa3dNRG9nSXpJMk16SXpPRHRjYm4waUxDSXZLaUJEYjNCNWNtbG5hSFFnS0dNcElFcDFjSGwwWlhJZ1JHVjJaV3h2Y0cxbGJuUWdWR1ZoYlM1Y2JpQXFJRVJwYzNSeWFXSjFkR1ZrSUhWdVpHVnlJSFJvWlNCMFpYSnRjeUJ2WmlCMGFHVWdUVzlrYVdacFpXUWdRbE5FSUV4cFkyVnVjMlV1WEc0Z0tpOWNibHh1THlwY2JpQXFJRmRsSUdGemMzVnRaU0IwYUdGMElIUm9aU0JEVTFNZ2RtRnlhV0ZpYkdWeklHbHVYRzRnS2lCb2RIUndjem92TDJkcGRHaDFZaTVqYjIwdmFuVndlWFJsY214aFlpOXFkWEI1ZEdWeWJHRmlMMkpzYjJJdmJXRnpkR1Z5TDNOeVl5OWtaV1poZFd4MExYUm9aVzFsTDNaaGNtbGhZbXhsY3k1amMzTmNiaUFxSUdoaGRtVWdZbVZsYmlCa1pXWnBibVZrTGx4dUlDb3ZYRzVjYmtCcGJYQnZjblFnWENJdUwzQm9iM053YUc5eUxtTnpjMXdpTzF4dVhHNDZjbTl2ZENCN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXTnZiRzl5T2lCMllYSW9MUzFxY0MxamIyNTBaVzUwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRiR0ZpWld3dFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WTI5c2IzSXBPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTF5WldGa2IzVjBMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXTnZiRzl5S1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdFptOXVkQzF6YVhwbE9pQjJZWElvTFMxcWNDMTFhUzFtYjI1MExYTnBlbVV4S1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1T2lBeWNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRNklESTRjSGc3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFEb2dNekF3Y0hnN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxM2FXUjBhQzF6YUc5eWREb2dZMkZzWXloMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDa2dMeUF5SUMwZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxdFlYSm5hVzRwS1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9MWFJwYm5rNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGMyaHZjblFwSUM4Z01pQXRJSFpoY2lndExXcHdMWGRwWkdkbGRITXRiV0Z5WjJsdUtTazdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMXRZWEpuYVc0NklEUndlRHNnTHlvZ2JXRnlaMmx1SUdKbGRIZGxaVzRnYVc1c2FXNWxJR1ZzWlcxbGJuUnpJQ292WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFzWVdKbGJDMTNhV1IwYURvZ09EQndlRHRjYmlBZ0lDQXRMV3B3TFhkcFpHZGxkSE10WW05eVpHVnlMWGRwWkhSb09pQjJZWElvTFMxcWNDMWliM0prWlhJdGQybGtkR2dwTzF4dUlDQWdJQzB0YW5BdGQybGtaMlYwY3kxMlpYSjBhV05oYkMxb1pXbG5hSFE2SURJd01IQjRPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMW9aV2xuYUhRNklESTBjSGc3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdodmNtbDZiMjUwWVd3dGRHRmlMWGRwWkhSb09pQXhORFJ3ZUR0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFHOXlhWHB2Ym5SaGJDMTBZV0l0ZEc5d0xXSnZjbVJsY2pvZ01uQjRPMXh1SUNBZ0lDMHRhbkF0ZDJsa1oyVjBjeTF3Y205bmNtVnpjeTEwYUdsamEyNWxjM002SURJd2NIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMV052Ym5SaGFXNWxjaTF3WVdSa2FXNW5PaUF4TlhCNE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxd1lXUmthVzVuT2lBMGNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWEpoWkdsdkxXbDBaVzB0YUdWcFoyaDBMV0ZrYW5WemRHMWxiblE2SURod2VEdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRjbUZrYVc4dGFYUmxiUzFvWldsbmFIUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLU0F0SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Y21Ga2FXOHRhWFJsYlMxb1pXbG5hSFF0WVdScWRYTjBiV1Z1ZENrcE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56T2lBMGNIZzdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWliM0prWlhJdGQybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WW05eVpHVnlMWGRwWkhSb0tUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxPaUF4Tm5CNE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGFHRnVaR3hsTFdKdmNtUmxjaTFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRZbTl5WkdWeUxXTnZiRzl5TVNrN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0WW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWhZM1JwZG1VdGFHRnVaR3hsTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzFpY21GdVpDMWpiMnh2Y2pFcE8xeHVJQ0FnSUMwdGFuQXRkMmxrWjJWMGN5MXRaVzUxTFdsMFpXMHRhR1ZwWjJoME9pQXlOSEI0TzF4dUlDQWdJQzB0YW5BdGQybGtaMlYwY3kxa2NtOXdaRzkzYmkxaGNuSnZkem9nZFhKc0tGd2laR0YwWVRwcGJXRm5aUzl6ZG1jcmVHMXNPMkpoYzJVMk5DeFFSRGswWWxkM1oyUnRWbmxqTW14Mlltb3dhVTFUTkhkSmFVSnNZbTFPZGxwSGJIVmFlakJwWkZoU2JVeFVaMmxRZWpSTFVFTkZkRXhUUWtoYVZ6VnNZMjFHTUdJelNUWkpSVVpyWWpKS2JFbEZiSE5pU0ZaNlpFaEthR1JIT1hsSlJFVTFUR3BKZFUxVGQyZFZNVnBJU1VWV05HTkhPWGxrUTBKUllraFdia3hWYkhWSlF6Um5WVEZhU0VsR1dteGpiazV3WWpJME5rbEVXWFZOUkVGblVXNVdjR0pIVVdkTlEydG5TVU13ZEZCbmJ6aGpNMXB1U1VoYWJHTnVUbkJpTWpRNVNXcEZkVTFUU1dkaFYxRTVTV3Q0YUdWWFZubFlla1ZwU1Vob2RHSkhOWHBRVTBwdlpFaFNkMDlwT0haa00yUXpURzVqZWt4dE9YbGFlVGg1VFVSQmQwd3pUakphZVVsblpVY3hjMkp1VFRabFIzaHdZbTF6T1VsdGFEQmtTRUUyVEhrNU0yUXpZM1ZrZWsxMVlqTktia3g2UlRWUFZHdDJaVWQ0Y0dKdGMybEpTR2M1U1dwQ2QyVkRTV2RsVkRCcFRVaENORWxuYjBwSlNGcHdXbGhrUTJJelp6bEpha0ZuVFVOQmVFOURRWGhQUTBsbll6TlNOV0pIVlRsSmJWWjFXVmRLYzFwVE1XbFpWMDV5V2pOS2RtUlhOV3RQYlRWc1pIbEJkMGxFUVdkTlZHZG5UVlJuTjBscFFqUmlWM2MyWXpOQ2FGa3lWVGxKYmtKNVdsaE9iR051V214SmFqUkxVRWhPTUdWWGVHeEpTRkkxWTBkVk9VbHVVbXhsU0ZGMldUTk9la2xxTkV0RFV6VjZaRVJDTjFwdGJITmlSSEIxWWpJMWJFOHpNRXRRUXpsNlpFaHNjMXBVTkV0UVNFSm9aRWRuWjFwRU1HbFVWRlYxVFdsM01VeHFiRTFQVTNjMVRHcGtjMDE1TkRSTVZFMTFUMGQzZUV4cVNYTk5VelI1WWtNd01FeHFhM05PVjNkMFRrTTBOVXhVVmsxT1V6UjVURVJWZFU5WWIybE1lalJMVUVoQ2FHUkhaMmRaTW5ob1l6Tk5PVWx1VGpCTlEwbG5Xa1F3YVZSVVFYUk5RelF5WVVSRk5HUnFSVFJUUkVKWFRGUkJkVTV1YjJsTWVqUkxVRU01ZW1SdFl5dERaMXdpS1R0Y2JpQWdJQ0F0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0WTI5c2IzSTZJSFpoY2lndExXcHdMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0p2Y21SbGNpMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdFltOXlaR1Z5TFdOdmJHOXlNU2s3WEc0Z0lDQWdMUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV1p2WTNWekxXSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0WW5KaGJtUXRZMjlzYjNJeUtUdGNiaUFnSUNBdExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV0p2Y21SbGNpMTNhV1IwYUNrN1hHNGdJQ0FnTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrNklEQXVOanRjYmx4dUlDQWdJQzhxSUVaeWIyMGdUV0YwWlhKcFlXd2dSR1Z6YVdkdUlFeHBkR1VnS2k5Y2JpQWdJQ0F0TFcxa0xYTm9ZV1J2ZHkxclpYa3RkVzFpY21FdGIzQmhZMmwwZVRvZ01DNHlPMXh1SUNBZ0lDMHRiV1F0YzJoaFpHOTNMV3RsZVMxd1pXNTFiV0p5WVMxdmNHRmphWFI1T2lBd0xqRTBPMXh1SUNBZ0lDMHRiV1F0YzJoaFpHOTNMV0Z0WW1sbGJuUXRjMmhoWkc5M0xXOXdZV05wZEhrNklEQXVNVEk3WEc1OVhHNWNiaTVxZFhCNWRHVnlMWGRwWkdkbGRITWdlMXh1SUNBZ0lHMWhjbWRwYmpvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxdFlYSm5hVzRwTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRZMjlzYjNJcE8xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbXAxY0hsMFpYSXRkMmxrWjJWMGN5MWthWE5qYjI1dVpXTjBaV1E2T21KbFptOXlaU0I3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1ZlZ4dVhHNHVhbkF0VDNWMGNIVjBMWEpsYzNWc2RDQStJQzVxZFhCNWRHVnlMWGRwWkdkbGRITWdlMXh1SUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUF3TzF4dUlDQWdJRzFoY21kcGJpMXlhV2RvZERvZ01EdGNibjFjYmx4dUx5b2dkbUp2ZUNCaGJtUWdhR0p2ZUNBcUwxeHVYRzR1ZDJsa1oyVjBMV2x1YkdsdVpTMW9ZbTk0SUh0Y2JpQWdJQ0F2S2lCSWIzSnBlbTl1ZEdGc0lIZHBaR2RsZEhNZ0tpOWNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1SUNBZ0lHUnBjM0JzWVhrNklHWnNaWGc3WEc0Z0lDQWdabXhsZUMxa2FYSmxZM1JwYjI0NklISnZkenRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWW1GelpXeHBibVU3WEc1OVhHNWNiaTUzYVdSblpYUXRhVzVzYVc1bExYWmliM2dnZTF4dUlDQWdJQzhxSUZabGNuUnBZMkZzSUZkcFpHZGxkSE1nS2k5Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUNBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWTJWdWRHVnlPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXSnZlQ0I3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0FnSUcxaGNtZHBiam9nTUR0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmx4dUxuZHBaR2RsZEMxbmNtbGtZbTk0SUh0Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdScGMzQnNZWGs2SUdkeWFXUTdYRzRnSUNBZ2JXRnlaMmx1T2lBd08xeHVJQ0FnSUc5MlpYSm1iRzkzT2lCaGRYUnZPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXaGliM2dnZTF4dUlDQWdJR1pzWlhndFpHbHlaV04wYVc5dU9pQnliM2M3WEc1OVhHNWNiaTUzYVdSblpYUXRkbUp2ZUNCN1hHNGdJQ0FnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNibjFjYmx4dUx5b2dSMlZ1WlhKaGJDQkNkWFIwYjI0Z1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNGdlMXh1SUNBZ0lIQmhaR1JwYm1jdGJHVm1kRG9nTVRCd2VEdGNiaUFnSUNCd1lXUmthVzVuTFhKcFoyaDBPaUF4TUhCNE8xeHVJQ0FnSUhCaFpHUnBibWN0ZEc5d09pQXdjSGc3WEc0Z0lDQWdjR0ZrWkdsdVp5MWliM1IwYjIwNklEQndlRHRjYmlBZ0lDQmthWE53YkdGNU9pQnBibXhwYm1VdFlteHZZMnM3WEc0Z0lDQWdkMmhwZEdVdGMzQmhZMlU2SUc1dmQzSmhjRHRjYmlBZ0lDQnZkbVZ5Wm14dmR6b2dhR2xrWkdWdU8xeHVJQ0FnSUhSbGVIUXRiM1psY21ac2IzYzZJR1ZzYkdsd2MybHpPMXh1SUNBZ0lIUmxlSFF0WVd4cFoyNDZJR05sYm5SbGNqdGNiaUFnSUNCbWIyNTBMWE5wZW1VNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdFptOXVkQzF6YVhwbEtUdGNiaUFnSUNCamRYSnpiM0k2SUhCdmFXNTBaWEk3WEc1Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExXaGxhV2RvZENrN1hHNGdJQ0FnWW05eVpHVnlPaUF3Y0hnZ2MyOXNhV1E3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ1ltOTRMWE5vWVdSdmR6b2dibTl1WlR0Y2JseHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzExYVMxbWIyNTBMV052Ykc5eU1TazdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNaWs3WEc0Z0lDQWdZbTl5WkdWeUxXTnZiRzl5T2lCMllYSW9MUzFxY0MxaWIzSmtaWEl0WTI5c2IzSXlLVHRjYmlBZ0lDQmliM0prWlhJNklHNXZibVU3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpQnBMbVpoSUh0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWs3WEc0Z0lDQWdjRzlwYm5SbGNpMWxkbVZ1ZEhNNklHNXZibVU3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJqcGxiWEIwZVRwaVpXWnZjbVVnZTF4dUlDQWdJR052Ym5SbGJuUTZJRndpWEZ3eU1EQmlYQ0k3SUM4cUlIcGxjbTh0ZDJsa2RHZ2djM0JoWTJVZ0tpOWNibjFjYmx4dUxtcDFjSGwwWlhJdGQybGtaMlYwY3k1cWRYQjVkR1Z5TFdKMWRIUnZianBrYVhOaFlteGxaQ0I3WEc0Z0lDQWdiM0JoWTJsMGVUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWthWE5oWW14bFpDMXZjR0ZqYVhSNUtUdGNibjFjYmx4dUxtcDFjSGwwWlhJdFluVjBkRzl1SUdrdVptRXVZMlZ1ZEdWeUlIdGNiaUFnSUNCdFlYSm5hVzR0Y21sbmFIUTZJREE3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJqcG9iM1psY2pwbGJtRmliR1ZrTENBdWFuVndlWFJsY2kxaWRYUjBiMjQ2Wm05amRYTTZaVzVoWW14bFpDQjdYRzRnSUNBZ0x5b2dUVVFnVEdsMFpTQXlaSEFnYzJoaFpHOTNJQ292WEc0Z0lDQWdZbTk0TFhOb1lXUnZkem9nTUNBeWNIZ2dNbkI0SURBZ2NtZGlZU2d3TENBd0xDQXdMQ0IyWVhJb0xTMXRaQzF6YUdGa2IzY3RhMlY1TFhCbGJuVnRZbkpoTFc5d1lXTnBkSGtwS1N4Y2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBd0lETndlQ0F4Y0hnZ0xUSndlQ0J5WjJKaEtEQXNJREFzSURBc0lIWmhjaWd0TFcxa0xYTm9ZV1J2ZHkxclpYa3RkVzFpY21FdGIzQmhZMmwwZVNrcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQWdNWEI0SURWd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z2RtRnlLQzB0YldRdGMyaGhaRzkzTFdGdFltbGxiblF0YzJoaFpHOTNMVzl3WVdOcGRIa3BLVHRjYm4xY2JseHVMbXAxY0hsMFpYSXRZblYwZEc5dU9tRmpkR2wyWlN3Z0xtcDFjSGwwWlhJdFluVjBkRzl1TG0xdlpDMWhZM1JwZG1VZ2UxeHVJQ0FnSUM4cUlFMUVJRXhwZEdVZ05HUndJSE5vWVdSdmR5QXFMMXh1SUNBZ0lHSnZlQzF6YUdGa2IzYzZJREFnTkhCNElEVndlQ0F3SUhKblltRW9NQ3dnTUN3Z01Dd2dkbUZ5S0MwdGJXUXRjMmhoWkc5M0xXdGxlUzF3Wlc1MWJXSnlZUzF2Y0dGamFYUjVLU2tzWEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnTUNBeGNIZ2dNVEJ3ZUNBd0lISm5ZbUVvTUN3Z01Dd2dNQ3dnZG1GeUtDMHRiV1F0YzJoaFpHOTNMV0Z0WW1sbGJuUXRjMmhoWkc5M0xXOXdZV05wZEhrcEtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJREp3ZUNBMGNIZ2dMVEZ3ZUNCeVoySmhLREFzSURBc0lEQXNJSFpoY2lndExXMWtMWE5vWVdSdmR5MXJaWGt0ZFcxaWNtRXRiM0JoWTJsMGVTa3BPMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxMWFTMW1iMjUwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TXlrN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFdKMWRIUnZianBtYjJOMWN6cGxibUZpYkdWa0lIdGNiaUFnSUNCdmRYUnNhVzVsT2lBeGNIZ2djMjlzYVdRZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJuQjFkQzFtYjJOMWN5MWliM0prWlhJdFkyOXNiM0lwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKUWNtbHRZWEo1WENJZ1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhCeWFXMWhjbmtnZTF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzFpY21GdVpDMWpiMnh2Y2pFcE8xeHVmVnh1WEc0dWFuVndlWFJsY2kxaWRYUjBiMjR1Ylc5a0xYQnlhVzFoY25rdWJXOWtMV0ZqZEdsMlpTQjdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFdsdWRtVnljMlV0ZFdrdFptOXVkQzFqYjJ4dmNqQXBPMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklIWmhjaWd0TFdwd0xXSnlZVzVrTFdOdmJHOXlNQ2s3WEc1OVhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpNXRiMlF0Y0hKcGJXRnllVHBoWTNScGRtVWdlMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxcGJuWmxjbk5sTFhWcExXWnZiblF0WTI5c2IzSXdLVHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMWljbUZ1WkMxamIyeHZjakFwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKVGRXTmpaWE56WENJZ1UzUjViR2x1WnlBcUwxeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhOMVkyTmxjM01nZTF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMXBiblpsY25ObExYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzF6ZFdOalpYTnpMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRjM1ZqWTJWemN5NXRiMlF0WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRjM1ZqWTJWemN5MWpiMnh2Y2pBcE8xeHVJSDFjYmx4dUxtcDFjSGwwWlhJdFluVjBkRzl1TG0xdlpDMXpkV05qWlhOek9tRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhOMVkyTmxjM010WTI5c2IzSXdLVHRjYmlCOVhHNWNiaUF2S2lCQ2RYUjBiMjRnWENKSmJtWnZYQ0lnVTNSNWJHbHVaeUFxTDF4dVhHNHVhblZ3ZVhSbGNpMWlkWFIwYjI0dWJXOWtMV2x1Wm04Z2UxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzFwYm5abGNuTmxMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxcGJtWnZMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRhVzVtYnk1dGIyUXRZV04wYVhabElIdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0YVc1MlpYSnpaUzExYVMxbWIyNTBMV052Ykc5eU1DazdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNW1ieTFqYjJ4dmNqQXBPMXh1ZlZ4dVhHNHVhblZ3ZVhSbGNpMWlkWFIwYjI0dWJXOWtMV2x1Wm04NllXTjBhWFpsSUh0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRhVzUyWlhKelpTMTFhUzFtYjI1MExXTnZiRzl5TUNrN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0YVc1bWJ5MWpiMnh2Y2pBcE8xeHVmVnh1WEc0dktpQkNkWFIwYjI0Z1hDSlhZWEp1YVc1blhDSWdVM1I1YkdsdVp5QXFMMXh1WEc0dWFuVndlWFJsY2kxaWRYUjBiMjR1Ylc5a0xYZGhjbTVwYm1jZ2UxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzFwYm5abGNuTmxMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxM1lYSnVMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRkMkZ5Ym1sdVp5NXRiMlF0WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMkZ5YmkxamIyeHZjakFwTzF4dWZWeHVYRzR1YW5Wd2VYUmxjaTFpZFhSMGIyNHViVzlrTFhkaGNtNXBibWM2WVdOMGFYWmxJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNQ2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMkZ5YmkxamIyeHZjakFwTzF4dWZWeHVYRzR2S2lCQ2RYUjBiMjRnWENKRVlXNW5aWEpjSWlCVGRIbHNhVzVuSUNvdlhHNWNiaTVxZFhCNWRHVnlMV0oxZEhSdmJpNXRiMlF0WkdGdVoyVnlJSHRjYmlBZ0lDQmpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGFXNTJaWEp6WlMxMWFTMW1iMjUwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRaWEp5YjNJdFkyOXNiM0l4S1R0Y2JuMWNibHh1TG1wMWNIbDBaWEl0WW5WMGRHOXVMbTF2WkMxa1lXNW5aWEl1Ylc5a0xXRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFdWeWNtOXlMV052Ykc5eU1DazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxXSjFkSFJ2Ymk1dGIyUXRaR0Z1WjJWeU9tRmpkR2wyWlNCN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMV2x1ZG1WeWMyVXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFdWeWNtOXlMV052Ykc5eU1DazdYRzU5WEc1Y2JpOHFJRmRwWkdkbGRDQkNkWFIwYjI0cUwxeHVYRzR1ZDJsa1oyVjBMV0oxZEhSdmJpd2dMbmRwWkdkbGRDMTBiMmRuYkdVdFluVjBkRzl1SUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2d0YzJodmNuUXBPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdUR0ZpWld3Z1UzUjViR2x1WnlBcUwxeHVYRzR2S2lCUGRtVnljbWxrWlNCQ2IyOTBjM1J5WVhBZ2JHRmlaV3dnWTNOeklDb3ZYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpJR3hoWW1Wc0lIdGNiaUFnSUNCdFlYSm5hVzR0WW05MGRHOXRPaUJwYm1sMGFXRnNPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXeGhZbVZzTFdKaGMybGpJSHRjYmlBZ0lDQXZLaUJDWVhOcFl5Qk1ZV0psYkNBcUwxeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV3hoWW1Wc0xXTnZiRzl5S1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1R0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nYUdsa1pHVnVPMXh1SUNBZ0lIUmxlSFF0YjNabGNtWnNiM2M2SUdWc2JHbHdjMmx6TzF4dUlDQWdJSGRvYVhSbExYTndZV05sT2lCdWIzZHlZWEE3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGJHRmlaV3dnZTF4dUlDQWdJQzhxSUV4aFltVnNJQ292WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJHRmlaV3d0WTI5c2IzSXBPMXh1SUNBZ0lHWnZiblF0YzJsNlpUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MW1iMjUwTFhOcGVtVXBPMXh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNGdJQ0FnZEdWNGRDMXZkbVZ5Wm14dmR6b2daV3hzYVhCemFYTTdYRzRnSUNBZ2QyaHBkR1V0YzNCaFkyVTZJRzV2ZDNKaGNEdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JuMWNibHh1TG5kcFpHZGxkQzFwYm14cGJtVXRhR0p2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQXZLaUJJYjNKcGVtOXVkR0ZzSUZkcFpHZGxkQ0JNWVdKbGJDQXFMMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFd4aFltVnNMV052Ykc5eUtUdGNiaUFnSUNCMFpYaDBMV0ZzYVdkdU9pQnlhV2RvZER0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklHTmhiR01vSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMVzFoY21kcGJpa2dLaUF5SUNrN1hHNGdJQ0FnZDJsa2RHZzZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExXeGhZbVZzTFhkcFpIUm9LVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JuMWNibHh1TG5kcFpHZGxkQzFwYm14cGJtVXRkbUp2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQXZLaUJXWlhKMGFXTmhiQ0JYYVdSblpYUWdUR0ZpWld3Z0tpOWNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFzWVdKbGJDMWpiMnh2Y2lrN1hHNGdJQ0FnZEdWNGRDMWhiR2xuYmpvZ1kyVnVkR1Z5TzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdVbVZoWkc5MWRDQlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0Y21WaFpHOTFkQ0I3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGNtVmhaRzkxZEMxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lHOTJaWEptYkc5M09pQm9hV1JrWlc0N1hHNGdJQ0FnZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0R0Y2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc1OVhHNWNiaTUzYVdSblpYUXRjbVZoWkc5MWRDNXZkbVZ5Wm14dmR5QjdYRzRnSUNBZ0x5b2dUM1psY21ac2IzZHBibWNnVW1WaFpHOTFkQ0FxTDF4dVhHNGdJQ0FnTHlvZ1JuSnZiU0JOWVhSbGNtbGhiQ0JFWlhOcFoyNGdUR2wwWlZ4dUlDQWdJQ0FnSUNCemFHRmtiM2N0YTJWNUxYVnRZbkpoTFc5d1lXTnBkSGs2SURBdU1qdGNiaUFnSUNBZ0lDQWdjMmhoWkc5M0xXdGxlUzF3Wlc1MWJXSnlZUzF2Y0dGamFYUjVPaUF3TGpFME8xeHVJQ0FnSUNBZ0lDQnphR0ZrYjNjdFlXMWlhV1Z1ZEMxemFHRmtiM2N0YjNCaFkybDBlVG9nTUM0eE1qdGNiaUFnSUNBZ0tpOWNiaUFnSUNBdGQyVmlhMmwwTFdKdmVDMXphR0ZrYjNjNklEQWdNbkI0SURKd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHlLU3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJREFnTTNCNElERndlQ0F0TW5CNElISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eE5Da3NYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJREZ3ZUNBMWNIZ2dNQ0J5WjJKaEtEQXNJREFzSURBc0lEQXVNVElwTzF4dVhHNGdJQ0FnTFcxdmVpMWliM2d0YzJoaFpHOTNPaUF3SURKd2VDQXljSGdnTUNCeVoySmhLREFzSURBc0lEQXNJREF1TWlrc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F3SUROd2VDQXhjSGdnTFRKd2VDQnlaMkpoS0RBc0lEQXNJREFzSURBdU1UUXBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ01DQXhjSGdnTlhCNElEQWdjbWRpWVNnd0xDQXdMQ0F3TENBd0xqRXlLVHRjYmx4dUlDQWdJR0p2ZUMxemFHRmtiM2M2SURBZ01uQjRJREp3ZUNBd0lISm5ZbUVvTUN3Z01Dd2dNQ3dnTUM0eUtTeGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQXdJRE53ZUNBeGNIZ2dMVEp3ZUNCeVoySmhLREFzSURBc0lEQXNJREF1TVRRcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEQWdNWEI0SURWd2VDQXdJSEpuWW1Fb01Dd2dNQ3dnTUN3Z01DNHhNaWs3WEc1OVhHNWNiaTUzYVdSblpYUXRhVzVzYVc1bExXaGliM2dnTG5kcFpHZGxkQzF5WldGa2IzVjBJSHRjYmlBZ0lDQXZLaUJJYjNKcGVtOXVkR0ZzSUZKbFlXUnZkWFFnS2k5Y2JpQWdJQ0IwWlhoMExXRnNhV2R1T2lCalpXNTBaWEk3WEc0Z0lDQWdiV0Y0TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUMxemFHOXlkQ2s3WEc0Z0lDQWdiV2x1TFhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUMxMGFXNTVLVHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRiV0Z5WjJsdUtUdGNibjFjYmx4dUxuZHBaR2RsZEMxcGJteHBibVV0ZG1KdmVDQXVkMmxrWjJWMExYSmxZV1J2ZFhRZ2UxeHVJQ0FnSUM4cUlGWmxjblJwWTJGc0lGSmxZV1J2ZFhRZ0tpOWNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxdFlYSm5hVzRwTzF4dUlDQWdJQzhxSUdGeklIZHBaR1VnWVhNZ2RHaGxJSGRwWkdkbGRDQXFMMXh1SUNBZ0lIZHBaSFJvT2lCcGJtaGxjbWwwTzF4dWZWeHVYRzR2S2lCWGFXUm5aWFFnUTJobFkydGliM2dnVTNSNWJHbHVaeUFxTDF4dVhHNHVkMmxrWjJWMExXTm9aV05yWW05NElIdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdncE8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JuMWNibHh1TG5kcFpHZGxkQzFqYUdWamEySnZlQ0JwYm5CMWRGdDBlWEJsUFZ3aVkyaGxZMnRpYjNoY0lsMGdlMXh1SUNBZ0lHMWhjbWRwYmpvZ01IQjRJR05oYkdNb0lIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWtnS2lBeUlDa2dNSEI0SURCd2VEdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUd4aGNtZGxPMXh1SUNBZ0lHWnNaWGd0WjNKdmR6b2dNVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTUR0Y2JpQWdJQ0JoYkdsbmJpMXpaV3htT2lCalpXNTBaWEk3WEc1OVhHNWNiaThxSUZkcFpHZGxkQ0JXWVd4cFpDQlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0ZG1Gc2FXUWdlMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGMyaHZjblFwTzF4dUlDQWdJR1p2Ym5RdGMybDZaVG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFtYjI1MExYTnBlbVVwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFpoYkdsa0lHazZZbVZtYjNKbElIdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFcxaGNtZHBiaWs3WEc0Z0lDQWdiV0Z5WjJsdUxXeGxablE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMVzFoY21kcGJpazdYRzVjYmlBZ0lDQXZLaUJtY205dElIUm9aU0JtWVNCamJHRnpjeUJwYmlCR2IyNTBRWGRsYzI5dFpUb2dhSFIwY0hNNkx5OW5hWFJvZFdJdVkyOXRMMFp2Y25SQmQyVnpiMjFsTDBadmJuUXRRWGRsYzI5dFpTOWliRzlpTHpRNU1UQXdZemRqTTJFM1lqVTRaRFV3WW1GaE56RmxabVZtTVRGaFpqUXhZVFkyWWpBelpETXZZM056TDJadmJuUXRZWGRsYzI5dFpTNWpjM01qVERFMElDb3ZYRzRnSUNBZ1pHbHpjR3hoZVRvZ2FXNXNhVzVsTFdKc2IyTnJPMXh1SUNBZ0lHWnZiblE2SUc1dmNtMWhiQ0J1YjNKdFlXd2dibTl5YldGc0lERTBjSGd2TVNCR2IyNTBRWGRsYzI5dFpUdGNiaUFnSUNCbWIyNTBMWE5wZW1VNklHbHVhR1Z5YVhRN1hHNGdJQ0FnZEdWNGRDMXlaVzVrWlhKcGJtYzZJR0YxZEc4N1hHNGdJQ0FnTFhkbFltdHBkQzFtYjI1MExYTnRiMjkwYUdsdVp6b2dZVzUwYVdGc2FXRnpaV1E3WEc0Z0lDQWdMVzF2ZWkxdmMzZ3RabTl1ZEMxemJXOXZkR2hwYm1jNklHZHlZWGx6WTJGc1pUdGNibjFjYmx4dUxuZHBaR2RsZEMxMllXeHBaQzV0YjJRdGRtRnNhV1FnYVRwaVpXWnZjbVVnZTF4dUlDQWdJR052Ym5SbGJuUTZJRndpWEZ4bU1EQmpYQ0k3WEc0Z0lDQWdZMjlzYjNJNklHZHlaV1Z1TzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFpoYkdsa0xtMXZaQzFwYm5aaGJHbGtJR2s2WW1WbWIzSmxJSHRjYmlBZ0lDQmpiMjUwWlc1ME9pQmNJbHhjWmpBd1pGd2lPMXh1SUNBZ0lHTnZiRzl5T2lCeVpXUTdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRtRnNhV1F1Ylc5a0xYWmhiR2xrSUM1M2FXUm5aWFF0ZG1Gc2FXUXRjbVZoWkc5MWRDQjdYRzRnSUNBZ1pHbHpjR3hoZVRvZ2JtOXVaVHRjYm4xY2JseHVMeW9nVjJsa1oyVjBJRlJsZUhRZ1lXNWtJRlJsZUhSQmNtVmhJRk4wZVdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFhSbGVIUmhjbVZoTENBdWQybGtaMlYwTFhSbGVIUWdlMXh1SUNBZ0lIZHBaSFJvT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRHVjRkQ0JwYm5CMWRGdDBlWEJsUFZ3aWRHVjRkRndpWFN3Z0xuZHBaR2RsZEMxMFpYaDBJR2x1Y0hWMFczUjVjR1U5WENKdWRXMWlaWEpjSWwxN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFJsZUhRZ2FXNXdkWFJiZEhsd1pUMWNJblJsZUhSY0lsMDZaR2x6WVdKc1pXUXNJQzUzYVdSblpYUXRkR1Y0ZENCcGJuQjFkRnQwZVhCbFBWd2liblZ0WW1WeVhDSmRPbVJwYzJGaWJHVmtMQ0F1ZDJsa1oyVjBMWFJsZUhSaGNtVmhJSFJsZUhSaGNtVmhPbVJwYzJGaWJHVmtJSHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhSbGVIUWdhVzV3ZFhSYmRIbHdaVDFjSW5SbGVIUmNJbDBzSUM1M2FXUm5aWFF0ZEdWNGRDQnBibkIxZEZ0MGVYQmxQVndpYm5WdFltVnlYQ0pkTENBdWQybGtaMlYwTFhSbGVIUmhjbVZoSUhSbGVIUmhjbVZoSUh0Y2JpQWdJQ0JpYjNndGMybDZhVzVuT2lCaWIzSmtaWEl0WW05NE8xeHVJQ0FnSUdKdmNtUmxjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFdOdmJHOXlLVHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdKaFkydG5jbTkxYm1RdFkyOXNiM0lwTzF4dUlDQWdJR052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdOdmJHOXlLVHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRabTl1ZEMxemFYcGxLVHRjYmlBZ0lDQndZV1JrYVc1bk9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwSUdOaGJHTW9JSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdGNHRmtaR2x1WnlrZ0tpQWdNaUFwTzF4dUlDQWdJR1pzWlhndFozSnZkem9nTVR0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SURBN0lDOHFJRlJvYVhNZ2JXRnJaWE1nYVhRZ2NHOXpjMmxpYkdVZ1ptOXlJSFJvWlNCbWJHVjRZbTk0SUhSdklITm9jbWx1YXlCMGFHbHpJR2x1Y0hWMElDb3ZYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREU3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVmVnh1WEc0dWQybGtaMlYwTFhSbGVIUmhjbVZoSUhSbGVIUmhjbVZoSUh0Y2JpQWdJQ0JvWldsbmFIUTZJR2x1YUdWeWFYUTdYRzRnSUNBZ2QybGtkR2c2SUdsdWFHVnlhWFE3WEc1OVhHNWNiaTUzYVdSblpYUXRkR1Y0ZENCcGJuQjFkRHBtYjJOMWN5d2dMbmRwWkdkbGRDMTBaWGgwWVhKbFlTQjBaWGgwWVhKbFlUcG1iMk4xY3lCN1hHNGdJQ0FnWW05eVpHVnlMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdadlkzVnpMV0p2Y21SbGNpMWpiMnh2Y2lrN1hHNTlYRzVjYmk4cUlGZHBaR2RsZENCVGJHbGtaWElnS2k5Y2JseHVMbmRwWkdkbGRDMXpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQjdYRzRnSUNBZ0x5b2dVMnhwWkdWeUlGUnlZV05ySUNvdlhHNGdJQ0FnWW05eVpHVnlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMV3hoZVc5MWRDMWpiMnh2Y2pNcE8xeHVJQ0FnSUdKaFkydG5jbTkxYm1RNklIWmhjaWd0TFdwd0xXeGhlVzkxZEMxamIyeHZjak1wTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnY0c5emFYUnBiMjQ2SUhKbGJHRjBhWFpsTzF4dUlDQWdJR0p2Y21SbGNpMXlZV1JwZFhNNklEQndlRHRjYm4xY2JseHVMbmRwWkdkbGRDMXpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMV2hoYm1Sc1pTQjdYRzRnSUNBZ0x5b2dVMnhwWkdWeUlFaGhibVJzWlNBcUwxeHVJQ0FnSUc5MWRHeHBibVU2SUc1dmJtVWdJV2x0Y0c5eWRHRnVkRHNnTHlvZ1ptOWpkWE5sWkNCemJHbGtaWElnYUdGdVpHeGxjeUJoY21VZ1kyOXNiM0psWkNBdElITmxaU0JpWld4dmR5QXFMMXh1SUNBZ0lIQnZjMmwwYVc5dU9pQmhZbk52YkhWMFpUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFvWVc1a2JHVXRZbUZqYTJkeWIzVnVaQzFqYjJ4dmNpazdYRzRnSUNBZ1ltOXlaR1Z5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncElITnZiR2xrSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMWliM0prWlhJdFkyOXNiM0lwTzF4dUlDQWdJR0p2ZUMxemFYcHBibWM2SUdKdmNtUmxjaTFpYjNnN1hHNGdJQ0FnZWkxcGJtUmxlRG9nTVR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdsdFlXZGxPaUJ1YjI1bE95QXZLaUJQZG1WeWNtbGtaU0JxY1hWbGNua3RkV2tnS2k5Y2JuMWNibHh1THlvZ1QzWmxjbkpwWkdVZ2FuRjFaWEo1TFhWcElDb3ZYRzR1ZDJsa1oyVjBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWEl0YUdGdVpHeGxPbWh2ZG1WeUxDQXVkMmxrWjJWMExYTnNhV1JsY2lBdWRXa3RjMnhwWkdWeUlDNTFhUzF6Ykdsa1pYSXRhR0Z1Wkd4bE9tWnZZM1Z6SUh0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMWhZM1JwZG1VdGFHRnVaR3hsTFdOdmJHOXlLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdKdmNtUmxjaTEzYVdSMGFDa2djMjlzYVdRZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WVdOMGFYWmxMV2hoYm1Sc1pTMWpiMnh2Y2lrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWElnTG5WcExYTnNhV1JsY2kxb1lXNWtiR1U2WVdOMGFYWmxJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxaFkzUnBkbVV0YUdGdVpHeGxMV052Ykc5eUtUdGNiaUFnSUNCaWIzSmtaWEl0WTI5c2IzSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXRmpkR2wyWlMxb1lXNWtiR1V0WTI5c2IzSXBPMXh1SUNBZ0lIb3RhVzVrWlhnNklESTdYRzRnSUNBZ2RISmhibk5tYjNKdE9pQnpZMkZzWlNneExqSXBPMXh1ZlZ4dVhHNHVkMmxrWjJWMExYTnNhV1JsY2lBZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMWEpoYm1kbElIdGNiaUFnSUNBdktpQkpiblJsY25aaGJDQmlaWFIzWldWdUlIUm9aU0IwZDI4Z2MzQmxZMmxtYVdWa0lIWmhiSFZsSUc5bUlHRWdaRzkxWW14bElITnNhV1JsY2lBcUwxeHVJQ0FnSUhCdmMybDBhVzl1T2lCaFluTnZiSFYwWlR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFoWTNScGRtVXRhR0Z1Wkd4bExXTnZiRzl5S1R0Y2JpQWdJQ0I2TFdsdVpHVjRPaUF3TzF4dWZWeHVYRzR2S2lCVGFHRndaWE1nYjJZZ1UyeHBaR1Z5SUVoaGJtUnNaWE1nS2k5Y2JseHVMbmRwWkdkbGRDMW9jMnhwWkdWeUlDNTFhUzF6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaTFvWVc1a2JHVWdlMXh1SUNBZ0lIZHBaSFJvT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFvWVc1a2JHVXRjMmw2WlNrN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMW9ZVzVrYkdVdGMybDZaU2s3WEc0Z0lDQWdiV0Z5WjJsdUxYUnZjRG9nWTJGc1l5Z29kbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1NBdElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdoaGJtUnNaUzF6YVhwbEtTa2dMeUF5SUMwZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0YUdGdVpHeGxMWE5wZW1VcElDOGdMVElnS3lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncEtUdGNiaUFnSUNCaWIzSmtaWEl0Y21Ga2FYVnpPaUExTUNVN1hHNGdJQ0FnZEc5d09pQXdPMXh1ZlZ4dVhHNHVkMmxrWjJWMExYWnpiR2xrWlhJZ0xuVnBMWE5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlMV2hoYm1Sc1pTQjdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMXphWHBsS1R0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxLVHRjYmlBZ0lDQnRZWEpuYVc0dFltOTBkRzl0T2lCallXeGpLSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXaGhibVJzWlMxemFYcGxLU0F2SUMweUlDc2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc0Z0lDQWdiV0Z5WjJsdUxXeGxablE2SUdOaGJHTW9LSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxYUnlZV05yTFhSb2FXTnJibVZ6Y3lrZ0xTQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0YzJsNlpTa3BJQzhnTWlBdElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGMyeHBaR1Z5TFdKdmNtUmxjaTEzYVdSMGFDa3BPMXh1SUNBZ0lHSnZjbVJsY2kxeVlXUnBkWE02SURVd0pUdGNiaUFnSUNCc1pXWjBPaUF3TzF4dWZWeHVYRzR1ZDJsa1oyVjBMV2h6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaUF1ZFdrdGMyeHBaR1Z5TFhKaGJtZGxJSHRjYmlBZ0lDQm9aV2xuYUhRNklHTmhiR01vSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMWFJ5WVdOckxYUm9hV05yYm1WemN5a2dLaUF5SUNrN1hHNGdJQ0FnYldGeVoybHVMWFJ2Y0RvZ1kyRnNZeWdvZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektTQXRJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxYUnlZV05yTFhSb2FXTnJibVZ6Y3lrZ0tpQXlJQ2tnTHlBeUlDMGdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc1OVhHNWNiaTUzYVdSblpYUXRkbk5zYVdSbGNpQXVkV2t0YzJ4cFpHVnlJQzUxYVMxemJHbGtaWEl0Y21GdVoyVWdlMXh1SUNBZ0lIZHBaSFJvT2lCallXeGpLQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMTBjbUZqYXkxMGFHbGphMjVsYzNNcElDb2dNaUFwTzF4dUlDQWdJRzFoY21kcGJpMXNaV1owT2lCallXeGpLQ2gyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMTBjbUZqYXkxMGFHbGphMjVsYzNNcElDMGdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1NBcUlESWdLU0F2SURJZ0xTQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxaWIzSmtaWEl0ZDJsa2RHZ3BLVHRjYm4xY2JseHVMeW9nU0c5eWFYcHZiblJoYkNCVGJHbGtaWElnS2k5Y2JseHVMbmRwWkdkbGRDMW9jMnhwWkdWeUlIdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdncE8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JseHVJQ0FnSUM4cUlFOTJaWEp5YVdSbElIUm9aU0JoYkdsbmJpMXBkR1Z0Y3lCaVlYTmxiR2x1WlM0Z1ZHaHBjeUIzWVhrc0lIUm9aU0JrWlhOamNtbHdkR2x2YmlCaGJtUWdjbVZoWkc5MWRGeHVJQ0FnSUhOMGFXeHNJSE5sWlcwZ2RHOGdZV3hwWjI0Z2RHaGxhWElnWW1GelpXeHBibVVnY0hKdmNHVnliSGtzSUdGdVpDQjNaU0JrYjI0bmRDQm9ZWFpsSUhSdklHaGhkbVZjYmlBZ0lDQmhiR2xuYmkxelpXeG1PaUJ6ZEhKbGRHTm9JR2x1SUhSb1pTQXVjMnhwWkdWeUxXTnZiblJoYVc1bGNpNGdLaTljYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nWTJWdWRHVnlPMXh1ZlZ4dVhHNHVkMmxrWjJWMGN5MXpiR2xrWlhJZ0xuTnNhV1JsY2kxamIyNTBZV2x1WlhJZ2UxeHVJQ0FnSUc5MlpYSm1iRzkzT2lCMmFYTnBZbXhsTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV2h6Ykdsa1pYSWdMbk5zYVdSbGNpMWpiMjUwWVdsdVpYSWdlMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nWTJGc1l5aDJZWElvTFMxcWNDMTNhV1JuWlhSekxYTnNhV1JsY2kxb1lXNWtiR1V0YzJsNlpTa2dMeUF5SUMwZ01pQXFJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjMnhwWkdWeUxXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJRzFoY21kcGJpMXlhV2RvZERvZ1kyRnNZeWgyWVhJb0xTMXFjQzEzYVdSblpYUnpMWE5zYVdSbGNpMW9ZVzVrYkdVdGMybDZaU2tnTHlBeUlDMGdNaUFxSUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV0p2Y21SbGNpMTNhV1IwYUNrcE8xeHVJQ0FnSUdac1pYZzZJREVnTVNCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzEzYVdSMGFDMXphRzl5ZENrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YUhOc2FXUmxjaUF1ZFdrdGMyeHBaR1Z5SUh0Y2JpQWdJQ0F2S2lCSmJtNWxjaXdnYVc1MmFYTnBZbXhsSUhOc2FXUmxJR1JwZGlBcUwxeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektUdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQmpZV3hqS0NoMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBJQzBnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRkSEpoWTJzdGRHaHBZMnR1WlhOektTa2dMeUF5S1R0Y2JpQWdJQ0IzYVdSMGFEb2dNVEF3SlR0Y2JuMWNibHh1THlvZ1ZtVnlkR2xqWVd3Z1UyeHBaR1Z5SUNvdlhHNWNiaTUzYVdSblpYUXRkbUp2ZUNBdWQybGtaMlYwTFd4aFltVnNJSHRjYmlBZ0lDQm9aV2xuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFdobGFXZG9kQ2s3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGRuTnNhV1JsY2lCN1hHNGdJQ0FnTHlvZ1ZtVnlkR2xqWVd3Z1UyeHBaR1Z5SUNvdlhHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWFpsY25ScFkyRnNMV2hsYVdkb2RDazdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMWGRwWkhSb0xYUnBibmtwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFp6Ykdsa1pYSWdMbk5zYVdSbGNpMWpiMjUwWVdsdVpYSWdlMXh1SUNBZ0lHWnNaWGc2SURFZ01TQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxM2FXUjBhQzF6YUc5eWRDazdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR0YxZEc4N1hHNGdJQ0FnYldGeVoybHVMWEpwWjJoME9pQmhkWFJ2TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF6Ykdsa1pYSXRhR0Z1Wkd4bExYTnBlbVVwSUM4Z01pQXRJRElnS2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFhOc2FXUmxjaTFpYjNKa1pYSXRkMmxrZEdncEtUdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQmpZV3hqS0haaGNpZ3RMV3B3TFhkcFpHZGxkSE10YzJ4cFpHVnlMV2hoYm1Sc1pTMXphWHBsS1NBdklESWdMU0F5SUNvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxemJHbGtaWEl0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ1pHbHpjR3hoZVRvZ1pteGxlRHRjYmlBZ0lDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ1kyOXNkVzF1TzF4dWZWeHVYRzR1ZDJsa1oyVjBMWFp6Ykdsa1pYSWdMblZwTFhOc2FXUmxjaTEyWlhKMGFXTmhiQ0I3WEc0Z0lDQWdMeW9nU1c1dVpYSXNJR2x1ZG1semFXSnNaU0J6Ykdsa1pTQmthWFlnS2k5Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXpiR2xrWlhJdGRISmhZMnN0ZEdocFkydHVaWE56S1R0Y2JpQWdJQ0JtYkdWNExXZHliM2M2SURFN1hHNGdJQ0FnYldGeVoybHVMV3hsWm5RNklHRjFkRzg3WEc0Z0lDQWdiV0Z5WjJsdUxYSnBaMmgwT2lCaGRYUnZPMXh1ZlZ4dVhHNHZLaUJYYVdSblpYUWdVSEp2WjNKbGMzTWdVM1I1YkdsdVp5QXFMMXh1WEc0dWNISnZaM0psYzNNdFltRnlJSHRjYmlBZ0lDQXRkMlZpYTJsMExYUnlZVzV6YVhScGIyNDZJRzV2Ym1VN1hHNGdJQ0FnTFcxdmVpMTBjbUZ1YzJsMGFXOXVPaUJ1YjI1bE8xeHVJQ0FnSUMxdGN5MTBjbUZ1YzJsMGFXOXVPaUJ1YjI1bE8xeHVJQ0FnSUMxdkxYUnlZVzV6YVhScGIyNDZJRzV2Ym1VN1hHNGdJQ0FnZEhKaGJuTnBkR2x2YmpvZ2JtOXVaVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpMV0poY2lCN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWNISnZaM0psYzNNdFltRnlJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMWljbUZ1WkMxamIyeHZjakVwTzF4dWZWeHVYRzR1Y0hKdlozSmxjM010WW1GeUxYTjFZMk5sYzNNZ2UxeHVJQ0FnSUdKaFkydG5jbTkxYm1RdFkyOXNiM0k2SUhaaGNpZ3RMV3B3TFhOMVkyTmxjM010WTI5c2IzSXhLVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpMV0poY2kxcGJtWnZJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMXBibVp2TFdOdmJHOXlNU2s3WEc1OVhHNWNiaTV3Y205bmNtVnpjeTFpWVhJdGQyRnlibWx1WnlCN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJGeWJpMWpiMnh2Y2pFcE8xeHVmVnh1WEc0dWNISnZaM0psYzNNdFltRnlMV1JoYm1kbGNpQjdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdFpYSnliM0l0WTI5c2IzSXhLVHRjYm4xY2JseHVMbkJ5YjJkeVpYTnpJSHRjYmlBZ0lDQmlZV05yWjNKdmRXNWtMV052Ykc5eU9pQjJZWElvTFMxcWNDMXNZWGx2ZFhRdFkyOXNiM0l5S1R0Y2JpQWdJQ0JpYjNKa1pYSTZJRzV2Ym1VN1hHNGdJQ0FnWW05NExYTm9ZV1J2ZHpvZ2JtOXVaVHRjYm4xY2JseHVMeW9nU0c5eWFYTnZiblJoYkNCUWNtOW5jbVZ6Y3lBcUwxeHVYRzR1ZDJsa1oyVjBMV2h3Y205bmNtVnpjeUI3WEc0Z0lDQWdMeW9nVUhKdlozSmxjM01nUW1GeUlDb3ZYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUNrN1hHNGdJQ0FnWVd4cFoyNHRhWFJsYlhNNklHTmxiblJsY2p0Y2JseHVmVnh1WEc0dWQybGtaMlYwTFdod2NtOW5jbVZ6Y3lBdWNISnZaM0psYzNNZ2UxeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01UdGNiaUFnSUNCdFlYSm5hVzR0ZEc5d09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwTzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdZV3hwWjI0dGMyVnNaam9nYzNSeVpYUmphRHRjYmlBZ0lDQXZLaUJQZG1WeWNtbGtaU0JpYjI5MGMzUnlZWEFnYzNSNWJHVWdLaTljYmlBZ0lDQm9aV2xuYUhRNklHbHVhWFJwWVd3N1hHNTlYRzVjYmk4cUlGWmxjblJwWTJGc0lGQnliMmR5WlhOeklDb3ZYRzVjYmk1M2FXUm5aWFF0ZG5CeWIyZHlaWE56SUh0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRkbVZ5ZEdsallXd3RhR1ZwWjJoMEtUdGNiaUFnSUNCM2FXUjBhRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRkMmxrZEdndGRHbHVlU2s3WEc1OVhHNWNiaTUzYVdSblpYUXRkbkJ5YjJkeVpYTnpJQzV3Y205bmNtVnpjeUI3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJSGRwWkhSb09pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxYQnliMmR5WlhOekxYUm9hV05yYm1WemN5azdYRzRnSUNBZ2JXRnlaMmx1TFd4bFpuUTZJR0YxZEc4N1hHNGdJQ0FnYldGeVoybHVMWEpwWjJoME9pQmhkWFJ2TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklEQTdYRzU5WEc1Y2JpOHFJRk5sYkdWamRDQlhhV1JuWlhRZ1UzUjViR2x1WnlBcUwxeHVYRzR1ZDJsa1oyVjBMV1J5YjNCa2IzZHVJSHRjYmlBZ0lDQm9aV2xuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFdobGFXZG9kQ2s3WEc0Z0lDQWdkMmxrZEdnNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9LVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNibjFjYmx4dUxuZHBaR2RsZEMxa2NtOXdaRzkzYmlBK0lITmxiR1ZqZENCN1hHNGdJQ0FnY0dGa1pHbHVaeTF5YVdkb2REb2dNakJ3ZUR0Y2JpQWdJQ0JpYjNKa1pYSTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFhkcFpIUm9LU0J6YjJ4cFpDQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFdKdmNtUmxjaTFqYjJ4dmNpazdYRzRnSUNBZ1ltOXlaR1Z5TFhKaFpHbDFjem9nTUR0Y2JpQWdJQ0JvWldsbmFIUTZJR2x1YUdWeWFYUTdYRzRnSUNBZ1pteGxlRG9nTVNBeElIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXNhVzVsTFhkcFpIUm9MWE5vYjNKMEtUdGNiaUFnSUNCdGFXNHRkMmxrZEdnNklEQTdJQzhxSUZSb2FYTWdiV0ZyWlhNZ2FYUWdjRzl6YzJsaWJHVWdabTl5SUhSb1pTQm1iR1Y0WW05NElIUnZJSE5vY21sdWF5QjBhR2x6SUdsdWNIVjBJQ292WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0J2ZFhSc2FXNWxPaUJ1YjI1bElDRnBiWEJ2Y25SaGJuUTdYRzRnSUNBZ1ltOTRMWE5vWVdSdmR6b2dibTl1WlR0Y2JpQWdJQ0JpWVdOclozSnZkVzVrTFdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSmhZMnRuY205MWJtUXRZMjlzYjNJcE8xeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXTnZiRzl5S1R0Y2JpQWdJQ0JtYjI1MExYTnBlbVU2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1R0Y2JpQWdJQ0IyWlhKMGFXTmhiQzFoYkdsbmJqb2dkRzl3TzF4dUlDQWdJSEJoWkdScGJtY3RiR1ZtZERvZ1kyRnNZeWdnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMXdZV1JrYVc1bktTQXFJRElwTzF4dVhIUmhjSEJsWVhKaGJtTmxPaUJ1YjI1bE8xeHVYSFF0ZDJWaWEybDBMV0Z3Y0dWaGNtRnVZMlU2SUc1dmJtVTdYRzVjZEMxdGIzb3RZWEJ3WldGeVlXNWpaVG9nYm05dVpUdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xYSmxjR1ZoZERvZ2JtOHRjbVZ3WldGME8xeHVYSFJpWVdOclozSnZkVzVrTFhOcGVtVTZJREl3Y0hnN1hHNWNkR0poWTJ0bmNtOTFibVF0Y0c5emFYUnBiMjQ2SUhKcFoyaDBJR05sYm5SbGNqdGNiaUFnSUNCaVlXTnJaM0p2ZFc1a0xXbHRZV2RsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdSeWIzQmtiM2R1TFdGeWNtOTNLVHRjYm4xY2JpNTNhV1JuWlhRdFpISnZjR1J2ZDI0Z1BpQnpaV3hsWTNRNlptOWpkWE1nZTF4dUlDQWdJR0p2Y21SbGNpMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJuQjFkQzFtYjJOMWN5MWliM0prWlhJdFkyOXNiM0lwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV1J5YjNCa2IzZHVJRDRnYzJWc1pXTjBPbVJwYzJGaWJHVmtJSHRjYmlBZ0lDQnZjR0ZqYVhSNU9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXUnBjMkZpYkdWa0xXOXdZV05wZEhrcE8xeHVmVnh1WEc0dktpQlVieUJrYVhOaFlteGxJSFJvWlNCa2IzUjBaV1FnWW05eVpHVnlJR2x1SUVacGNtVm1iM2dnWVhKdmRXNWtJSE5sYkdWamRDQmpiMjUwY205c2N5NWNiaUFnSUZObFpTQm9kSFJ3T2k4dmMzUmhZMnR2ZG1WeVpteHZkeTVqYjIwdllTOHhPRGcxTXpBd01pQXFMMXh1TG5kcFpHZGxkQzFrY205d1pHOTNiaUErSUhObGJHVmpkRG90Ylc5NkxXWnZZM1Z6Y21sdVp5QjdYRzRnSUNBZ1kyOXNiM0k2SUhSeVlXNXpjR0Z5Wlc1ME8xeHVJQ0FnSUhSbGVIUXRjMmhoWkc5M09pQXdJREFnTUNBak1EQXdPMXh1ZlZ4dVhHNHZLaUJUWld4bFkzUWdZVzVrSUZObGJHVmpkRTExYkhScGNHeGxJQ292WEc1Y2JpNTNhV1JuWlhRdGMyVnNaV04wSUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2dwTzF4dUlDQWdJR3hwYm1VdGFHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1WEc0Z0lDQWdMeW9nUW1WallYVnpaU0JHYVhKbFptOTRJR1JsWm1sdVpYTWdkR2hsSUdKaGMyVnNhVzVsSUc5bUlHRWdjMlZzWldOMElHRnpJSFJvWlNCaWIzUjBiMjBnYjJZZ2RHaGxYRzRnSUNBZ1kyOXVkSEp2YkN3Z2QyVWdZV3hwWjI0Z2RHaGxJR1Z1ZEdseVpTQmpiMjUwY205c0lIUnZJSFJvWlNCMGIzQWdZVzVrSUdGa1pDQndZV1JrYVc1bklIUnZJSFJvWlZ4dUlDQWdJSE5sYkdWamRDQjBieUJuWlhRZ1lXNGdZWEJ3Y205NGFXMWhkR1VnWm1seWMzUWdiR2x1WlNCaVlYTmxiR2x1WlNCaGJHbG5ibTFsYm5RdUlDb3ZYRzRnSUNBZ1lXeHBaMjR0YVhSbGJYTTZJR1pzWlhndGMzUmhjblE3WEc1OVhHNWNiaTUzYVdSblpYUXRjMlZzWldOMElENGdjMlZzWldOMElIdGNiaUFnSUNCaWIzSmtaWEk2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1d2RYUXRZbTl5WkdWeUxYZHBaSFJvS1NCemIyeHBaQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxamIyeHZjaWs3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxaVlXTnJaM0p2ZFc1a0xXTnZiRzl5S1R0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdabXhsZURvZ01TQXhJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzVzYVc1bExYZHBaSFJvTFhOb2IzSjBLVHRjYmlBZ0lDQnZkWFJzYVc1bE9pQnViMjVsSUNGcGJYQnZjblJoYm5RN1hHNGdJQ0FnYjNabGNtWnNiM2M2SUdGMWRHODdYRzRnSUNBZ2FHVnBaMmgwT2lCcGJtaGxjbWwwTzF4dVhHNGdJQ0FnTHlvZ1FtVmpZWFZ6WlNCR2FYSmxabTk0SUdSbFptbHVaWE1nZEdobElHSmhjMlZzYVc1bElHOW1JR0VnYzJWc1pXTjBJR0Z6SUhSb1pTQmliM1IwYjIwZ2IyWWdkR2hsWEc0Z0lDQWdZMjl1ZEhKdmJDd2dkMlVnWVd4cFoyNGdkR2hsSUdWdWRHbHlaU0JqYjI1MGNtOXNJSFJ2SUhSb1pTQjBiM0FnWVc1a0lHRmtaQ0J3WVdSa2FXNW5JSFJ2SUhSb1pWeHVJQ0FnSUhObGJHVmpkQ0IwYnlCblpYUWdZVzRnWVhCd2NtOTRhVzFoZEdVZ1ptbHljM1FnYkdsdVpTQmlZWE5sYkdsdVpTQmhiR2xuYm0xbGJuUXVJQ292WEc0Z0lDQWdjR0ZrWkdsdVp5MTBiM0E2SURWd2VEdGNibjFjYmx4dUxuZHBaR2RsZEMxelpXeGxZM1FnUGlCelpXeGxZM1E2Wm05amRYTWdlMXh1SUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMW1iMk4xY3kxaWIzSmtaWEl0WTI5c2IzSXBPMXh1ZlZ4dVhHNHVkMmxuWlhRdGMyVnNaV04wSUQ0Z2MyVnNaV04wSUQ0Z2IzQjBhVzl1SUh0Y2JpQWdJQ0J3WVdSa2FXNW5MV3hsWm5RNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ0x5b2diR2x1WlMxb1pXbG5hSFFnWkc5bGMyNG5kQ0IzYjNKcklHOXVJSE52YldVZ1luSnZkM05sY25NZ1ptOXlJSE5sYkdWamRDQnZjSFJwYjI1eklDb3ZYRzRnSUNBZ2NHRmtaR2x1WnkxMGIzQTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLUzEyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2t2TWlrN1hHNGdJQ0FnY0dGa1pHbHVaeTFpYjNSMGIyMDZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLUzEyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2t2TWlrN1hHNTlYRzVjYmx4dVhHNHZLaUJVYjJkbmJHVWdRblYwZEc5dWN5QlRkSGxzYVc1bklDb3ZYRzVjYmk1M2FXUm5aWFF0ZEc5bloyeGxMV0oxZEhSdmJuTWdlMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhSdloyZHNaUzFpZFhSMGIyNXpJQzUzYVdSblpYUXRkRzluWjJ4bExXSjFkSFJ2YmlCN1hHNGdJQ0FnYldGeVoybHVMV3hsWm5RNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1S1R0Y2JpQWdJQ0J0WVhKbmFXNHRjbWxuYUhRNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGJXRnlaMmx1S1R0Y2JuMWNibHh1TG5kcFpHZGxkQzEwYjJkbmJHVXRZblYwZEc5dWN5QXVhblZ3ZVhSbGNpMWlkWFIwYjI0NlpHbHpZV0pzWldRZ2UxeHVJQ0FnSUc5d1lXTnBkSGs2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WkdsellXSnNaV1F0YjNCaFkybDBlU2s3WEc1OVhHNWNiaThxSUZKaFpHbHZJRUoxZEhSdmJuTWdVM1I1YkdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFhKaFpHbHZJSHRjYmlBZ0lDQjNhV1IwYURvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0ZDJsa2RHZ3BPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVmVnh1WEc0dWQybGtaMlYwTFhKaFpHbHZMV0p2ZUNCN1hHNGdJQ0FnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnSUNCbWJHVjRMV1JwY21WamRHbHZiam9nWTI5c2RXMXVPMXh1SUNBZ0lHRnNhV2R1TFdsMFpXMXpPaUJ6ZEhKbGRHTm9PMXh1SUNBZ0lHSnZlQzF6YVhwcGJtYzZJR0p2Y21SbGNpMWliM2c3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJRzFoY21kcGJpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGNtRmthVzh0YVhSbGJTMW9aV2xuYUhRdFlXUnFkWE4wYldWdWRDazdYRzU5WEc1Y2JpNTNhV1JuWlhRdGNtRmthVzh0WW05NElHeGhZbVZzSUh0Y2JpQWdJQ0JvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRjbUZrYVc4dGFYUmxiUzFvWldsbmFIUXBPMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMWEpoWkdsdkxXbDBaVzB0YUdWcFoyaDBLVHRjYmlBZ0lDQm1iMjUwTFhOcGVtVTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRabTl1ZEMxemFYcGxLVHRjYm4xY2JseHVMbmRwWkdkbGRDMXlZV1JwYnkxaWIzZ2dhVzV3ZFhRZ2UxeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTF5WVdScGJ5MXBkR1Z0TFdobGFXZG9kQ2s3WEc0Z0lDQWdiR2x1WlMxb1pXbG5hSFE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Y21Ga2FXOHRhWFJsYlMxb1pXbG5hSFFwTzF4dUlDQWdJRzFoY21kcGJqb2dNQ0JqWVd4aktDQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwSUNvZ01pQXBJREFnTVhCNE8xeHVJQ0FnSUdac2IyRjBPaUJzWldaME8xeHVmVnh1WEc0dktpQkRiMnh2Y2lCUWFXTnJaWElnVTNSNWJHbHVaeUFxTDF4dVhHNHVkMmxrWjJWMExXTnZiRzl5Y0dsamEyVnlJSHRjYmlBZ0lDQjNhV1IwYURvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0ZDJsa2RHZ3BPMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQnNhVzVsTFdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNibjFjYmx4dUxuZHBaR2RsZEMxamIyeHZjbkJwWTJ0bGNpQStJQzUzYVdSblpYUXRZMjlzYjNKd2FXTnJaWEl0YVc1d2RYUWdlMXh1SUNBZ0lHWnNaWGd0WjNKdmR6b2dNVHRjYmlBZ0lDQm1iR1Y0TFhOb2NtbHVhem9nTVR0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMWGRwWkhSb0xYUnBibmtwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV052Ykc5eWNHbGphMlZ5SUdsdWNIVjBXM1I1Y0dVOVhDSmpiMnh2Y2x3aVhTQjdYRzRnSUNBZ2QybGtkR2c2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1c2FXNWxMV2hsYVdkb2RDazdYRzRnSUNBZ2FHVnBaMmgwT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWJHbHVaUzFvWldsbmFIUXBPMXh1SUNBZ0lIQmhaR1JwYm1jNklEQWdNbkI0T3lBdktpQnRZV3RsSUhSb1pTQmpiMnh2Y2lCemNYVmhjbVVnWVdOMGRXRnNiSGtnYzNGMVlYSmxJRzl1SUVOb2NtOXRaU0J2YmlCUFV5QllJQ292WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWlZV05yWjNKdmRXNWtMV052Ykc5eUtUdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWpiMnh2Y2lrN1hHNGdJQ0FnWW05eVpHVnlPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxM2FXUjBhQ2tnYzI5c2FXUWdkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxaWIzSmtaWEl0WTI5c2IzSXBPMXh1SUNBZ0lHSnZjbVJsY2kxc1pXWjBPaUJ1YjI1bE8xeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01EdGNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNRHRjYmlBZ0lDQmliM2d0YzJsNmFXNW5PaUJpYjNKa1pYSXRZbTk0TzF4dUlDQWdJR0ZzYVdkdUxYTmxiR1k2SUhOMGNtVjBZMmc3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVmVnh1WEc0dWQybGtaMlYwTFdOdmJHOXljR2xqYTJWeUxtTnZibU5wYzJVZ2FXNXdkWFJiZEhsd1pUMWNJbU52Ykc5eVhDSmRJSHRjYmlBZ0lDQmliM0prWlhJdGJHVm1kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhVzV3ZFhRdFltOXlaR1Z5TFdOdmJHOXlLVHRjYm4xY2JseHVMbmRwWkdkbGRDMWpiMnh2Y25CcFkydGxjaUJwYm5CMWRGdDBlWEJsUFZ3aVkyOXNiM0pjSWwwNlptOWpkWE1zSUM1M2FXUm5aWFF0WTI5c2IzSndhV05yWlhJZ2FXNXdkWFJiZEhsd1pUMWNJblJsZUhSY0lsMDZabTlqZFhNZ2UxeHVJQ0FnSUdKdmNtUmxjaTFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxbWIyTjFjeTFpYjNKa1pYSXRZMjlzYjNJcE8xeHVmVnh1WEc0dWQybGtaMlYwTFdOdmJHOXljR2xqYTJWeUlHbHVjSFYwVzNSNWNHVTlYQ0owWlhoMFhDSmRJSHRjYmlBZ0lDQm1iR1Y0TFdkeWIzYzZJREU3WEc0Z0lDQWdiM1YwYkdsdVpUb2dibTl1WlNBaGFXMXdiM0owWVc1ME8xeHVJQ0FnSUdobGFXZG9kRG9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm14cGJtVXRhR1ZwWjJoMEtUdGNiaUFnSUNCc2FXNWxMV2hsYVdkb2REb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGFHVnBaMmgwS1R0Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0poWTJ0bmNtOTFibVF0WTI5c2IzSXBPMXh1SUNBZ0lHTnZiRzl5T2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV052Ykc5eUtUdGNiaUFnSUNCaWIzSmtaWEk2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10YVc1d2RYUXRZbTl5WkdWeUxYZHBaSFJvS1NCemIyeHBaQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExXSnZjbVJsY2kxamIyeHZjaWs3WEc0Z0lDQWdabTl1ZEMxemFYcGxPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV1p2Ym5RdGMybDZaU2s3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibkIxZEMxd1lXUmthVzVuS1NCallXeGpLQ0IyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1Y0hWMExYQmhaR1JwYm1jcElDb2dJRElnS1R0Y2JpQWdJQ0J0YVc0dGQybGtkR2c2SURBN0lDOHFJRlJvYVhNZ2JXRnJaWE1nYVhRZ2NHOXpjMmxpYkdVZ1ptOXlJSFJvWlNCbWJHVjRZbTk0SUhSdklITm9jbWx1YXlCMGFHbHpJR2x1Y0hWMElDb3ZYRzRnSUNBZ1pteGxlQzF6YUhKcGJtczZJREU3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JuMWNibHh1TG5kcFpHZGxkQzFqYjJ4dmNuQnBZMnRsY2lCcGJuQjFkRnQwZVhCbFBWd2lkR1Y0ZEZ3aVhUcGthWE5oWW14bFpDQjdYRzRnSUNBZ2IzQmhZMmwwZVRvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxa2FYTmhZbXhsWkMxdmNHRmphWFI1S1R0Y2JuMWNibHh1THlvZ1JHRjBaU0JRYVdOclpYSWdVM1I1YkdsdVp5QXFMMXh1WEc0dWQybGtaMlYwTFdSaGRHVndhV05yWlhJZ2UxeHVJQ0FnSUhkcFpIUm9PaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMTNhV1IwYUNrN1hHNGdJQ0FnYUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2x1YkdsdVpTMW9aV2xuYUhRcE8xeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dWZWeHVYRzR1ZDJsa1oyVjBMV1JoZEdWd2FXTnJaWElnYVc1d2RYUmJkSGx3WlQxY0ltUmhkR1ZjSWwwZ2UxeHVJQ0FnSUdac1pYZ3RaM0p2ZHpvZ01UdGNiaUFnSUNCbWJHVjRMWE5vY21sdWF6b2dNVHRjYmlBZ0lDQnRhVzR0ZDJsa2RHZzZJREE3SUM4cUlGUm9hWE1nYldGclpYTWdhWFFnY0c5emMybGliR1VnWm05eUlIUm9aU0JtYkdWNFltOTRJSFJ2SUhOb2NtbHVheUIwYUdseklHbHVjSFYwSUNvdlhHNGdJQ0FnYjNWMGJHbHVaVG9nYm05dVpTQWhhVzF3YjNKMFlXNTBPMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxcGJteHBibVV0YUdWcFoyaDBLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFXNXdkWFF0WW05eVpHVnlMWGRwWkhSb0tTQnpiMnhwWkNCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMV0p2Y21SbGNpMWpiMnh2Y2lrN1hHNGdJQ0FnWW1GamEyZHliM1Z1WkMxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWlZV05yWjNKdmRXNWtMV052Ykc5eUtUdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMWpiMnh2Y2lrN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdadmJuUXRjMmw2WlNrN1hHNGdJQ0FnY0dGa1pHbHVaem9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMXdZV1JrYVc1bktTQmpZV3hqS0NCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdsdWNIVjBMWEJoWkdScGJtY3BJQ29nSURJZ0tUdGNiaUFnSUNCaWIzZ3RjMmw2YVc1bk9pQmliM0prWlhJdFltOTRPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXUmhkR1Z3YVdOclpYSWdhVzV3ZFhSYmRIbHdaVDFjSW1SaGRHVmNJbDA2Wm05amRYTWdlMXh1SUNBZ0lHSnZjbVJsY2kxamIyeHZjam9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFwYm5CMWRDMW1iMk4xY3kxaWIzSmtaWEl0WTI5c2IzSXBPMXh1ZlZ4dVhHNHVkMmxrWjJWMExXUmhkR1Z3YVdOclpYSWdhVzV3ZFhSYmRIbHdaVDFjSW1SaGRHVmNJbDA2YVc1MllXeHBaQ0I3WEc0Z0lDQWdZbTl5WkdWeUxXTnZiRzl5T2lCMllYSW9MUzFxY0MxM1lYSnVMV052Ykc5eU1TazdYRzU5WEc1Y2JpNTNhV1JuWlhRdFpHRjBaWEJwWTJ0bGNpQnBibkIxZEZ0MGVYQmxQVndpWkdGMFpWd2lYVHBrYVhOaFlteGxaQ0I3WEc0Z0lDQWdiM0JoWTJsMGVUb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWthWE5oWW14bFpDMXZjR0ZqYVhSNUtUdGNibjFjYmx4dUx5b2dVR3hoZVNCWGFXUm5aWFFnS2k5Y2JseHVMbmRwWkdkbGRDMXdiR0Y1SUh0Y2JpQWdJQ0IzYVdSMGFEb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MXBibXhwYm1VdGQybGtkR2d0YzJodmNuUXBPMXh1SUNBZ0lHUnBjM0JzWVhrNklHWnNaWGc3WEc0Z0lDQWdZV3hwWjI0dGFYUmxiWE02SUhOMGNtVjBZMmc3WEc1OVhHNWNiaTUzYVdSblpYUXRjR3hoZVNBdWFuVndlWFJsY2kxaWRYUjBiMjRnZTF4dUlDQWdJR1pzWlhndFozSnZkem9nTVR0Y2JpQWdJQ0JvWldsbmFIUTZJR0YxZEc4N1hHNTlYRzVjYmk1M2FXUm5aWFF0Y0d4aGVTQXVhblZ3ZVhSbGNpMWlkWFIwYjI0NlpHbHpZV0pzWldRZ2UxeHVJQ0FnSUc5d1lXTnBkSGs2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10WkdsellXSnNaV1F0YjNCaFkybDBlU2s3WEc1OVhHNWNiaThxSUZSaFlpQlhhV1JuWlhRZ0tpOWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUh0Y2JpQWdJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0FnSUdac1pYZ3RaR2x5WldOMGFXOXVPaUJqYjJ4MWJXNDdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUI3WEc0Z0lDQWdMeW9nVG1WalpYTnpZWEo1SUhOdklIUm9ZWFFnWVNCMFlXSWdZMkZ1SUdKbElITm9hV1owWldRZ1pHOTNiaUIwYnlCdmRtVnliR0Y1SUhSb1pTQmliM0prWlhJZ2IyWWdkR2hsSUdKdmVDQmlaV3h2ZHk0Z0tpOWNiaUFnSUNCdmRtVnlabXh2ZHkxNE9pQjJhWE5wWW14bE8xeHVJQ0FnSUc5MlpYSm1iRzkzTFhrNklIWnBjMmxpYkdVN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQStJQzV3TFZSaFlrSmhjaTFqYjI1MFpXNTBJSHRjYmlBZ0lDQXZLaUJOWVd0bElITjFjbVVnZEdoaGRDQjBhR1VnZEdGaUlHZHliM2R6SUdaeWIyMGdZbTkwZEc5dElIVndJQ292WEc0Z0lDQWdZV3hwWjI0dGFYUmxiWE02SUdac1pYZ3RaVzVrTzF4dUlDQWdJRzFwYmkxM2FXUjBhRG9nTUR0Y2JpQWdJQ0J0YVc0dGFHVnBaMmgwT2lBd08xeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVkMmxrWjJWMExYUmhZaTFqYjI1MFpXNTBjeUI3WEc0Z0lDQWdkMmxrZEdnNklERXdNQ1U3WEc0Z0lDQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdJQ0J0WVhKbmFXNDZJREE3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFhWcExXWnZiblF0WTI5c2IzSXhLVHRjYmlBZ0lDQmliM0prWlhJNklIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2tnYzI5c2FXUWdkbUZ5S0MwdGFuQXRZbTl5WkdWeUxXTnZiRzl5TVNrN1hHNGdJQ0FnY0dGa1pHbHVaem9nZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFqYjI1MFlXbHVaWEl0Y0dGa1pHbHVaeWs3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJRzkyWlhKbWJHOTNPaUJoZFhSdk8xeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdlMXh1SUNBZ0lHWnZiblE2SUhaaGNpZ3RMV3B3TFhkcFpHZGxkSE10Wm05dWRDMXphWHBsS1NCSVpXeDJaWFJwWTJFc0lFRnlhV0ZzTENCellXNXpMWE5sY21sbU8xeHVJQ0FnSUcxcGJpMW9aV2xuYUhRNklHTmhiR01vZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMW9aV2xuYUhRcElDc2dkbUZ5S0MwdGFuQXRZbTl5WkdWeUxYZHBaSFJvS1NrN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQXVjQzFVWVdKQ1lYSXRkR0ZpSUh0Y2JpQWdJQ0JtYkdWNE9pQXdJREVnZG1GeUtDMHRhbkF0ZDJsa1oyVjBjeTFvYjNKcGVtOXVkR0ZzTFhSaFlpMTNhV1IwYUNrN1hHNGdJQ0FnYldsdUxYZHBaSFJvT2lBek5YQjRPMXh1SUNBZ0lHMXBiaTFvWldsbmFIUTZJR05oYkdNb2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxb2IzSnBlbTl1ZEdGc0xYUmhZaTFvWldsbmFIUXBJQ3NnZG1GeUtDMHRhbkF0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JHbHVaUzFvWldsbmFIUTZJSFpoY2lndExXcHdMWGRwWkdkbGRITXRhRzl5YVhwdmJuUmhiQzEwWVdJdGFHVnBaMmgwS1R0Y2JpQWdJQ0J0WVhKbmFXNHRiR1ZtZERvZ1kyRnNZeWd0TVNBcUlIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJSEJoWkdScGJtYzZJREJ3ZUNBeE1IQjRPMXh1SUNBZ0lHSmhZMnRuY205MWJtUTZJSFpoY2lndExXcHdMV3hoZVc5MWRDMWpiMnh2Y2pJcE8xeHVJQ0FnSUdOdmJHOXlPaUIyWVhJb0xTMXFjQzExYVMxbWIyNTBMV052Ykc5eU1pazdYRzRnSUNBZ1ltOXlaR1Z5T2lCMllYSW9MUzFxY0MxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklHNXZibVU3WEc0Z0lDQWdjRzl6YVhScGIyNDZJSEpsYkdGMGFYWmxPMXh1ZlZ4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnTG5BdFZHRmlRbUZ5TFhSaFlpNXdMVzF2WkMxamRYSnlaVzUwSUh0Y2JpQWdJQ0JqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRkV2t0Wm05dWRDMWpiMnh2Y2pBcE8xeHVJQ0FnSUM4cUlGZGxJSGRoYm5RZ2RHaGxJR0poWTJ0bmNtOTFibVFnZEc4Z2JXRjBZMmdnZEdobElIUmhZaUJqYjI1MFpXNTBJR0poWTJ0bmNtOTFibVFnS2k5Y2JpQWdJQ0JpWVdOclozSnZkVzVrT2lCMllYSW9MUzFxY0Mxc1lYbHZkWFF0WTI5c2IzSXhLVHRjYmlBZ0lDQnRhVzR0YUdWcFoyaDBPaUJqWVd4aktIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdGFHOXlhWHB2Ym5SaGJDMTBZV0l0YUdWcFoyaDBLU0FySURJZ0tpQjJZWElvTFMxcWNDMWliM0prWlhJdGQybGtkR2dwS1R0Y2JpQWdJQ0IwY21GdWMyWnZjbTA2SUhSeVlXNXpiR0YwWlZrb2RtRnlLQzB0YW5BdFltOXlaR1Z5TFhkcFpIUm9LU2s3WEc0Z0lDQWdiM1psY21ac2IzYzZJSFpwYzJsaWJHVTdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaUxuQXRiVzlrTFdOMWNuSmxiblE2WW1WbWIzSmxJSHRjYmlBZ0lDQndiM05wZEdsdmJqb2dZV0p6YjJ4MWRHVTdYRzRnSUNBZ2RHOXdPaUJqWVd4aktDMHhJQ29nZG1GeUtDMHRhbkF0WW05eVpHVnlMWGRwWkhSb0tTazdYRzRnSUNBZ2JHVm1kRG9nWTJGc1l5Z3RNU0FxSUhaaGNpZ3RMV3B3TFdKdmNtUmxjaTEzYVdSMGFDa3BPMXh1SUNBZ0lHTnZiblJsYm5RNklDY25PMXh1SUNBZ0lHaGxhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxb2IzSnBlbTl1ZEdGc0xYUmhZaTEwYjNBdFltOXlaR1Z5S1R0Y2JpQWdJQ0IzYVdSMGFEb2dZMkZzWXlneE1EQWxJQ3NnTWlBcUlIWmhjaWd0TFdwd0xXSnZjbVJsY2kxM2FXUjBhQ2twTzF4dUlDQWdJR0poWTJ0bmNtOTFibVE2SUhaaGNpZ3RMV3B3TFdKeVlXNWtMV052Ykc5eU1TazdYRzU5WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaU9tWnBjbk4wTFdOb2FXeGtJSHRjYmlBZ0lDQnRZWEpuYVc0dGJHVm1kRG9nTUR0Y2JuMWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUQ0Z0xuQXRWR0ZpUW1GeUlDNXdMVlJoWWtKaGNpMTBZV0k2YUc5MlpYSTZibTkwS0M1d0xXMXZaQzFqZFhKeVpXNTBLU0I3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaRG9nZG1GeUtDMHRhbkF0YkdGNWIzVjBMV052Ykc5eU1TazdYRzRnSUNBZ1kyOXNiM0k2SUhaaGNpZ3RMV3B3TFhWcExXWnZiblF0WTI5c2IzSXhLVHRjYm4xY2JseHVMbXAxY0hsMFpYSXRkMmxrWjJWMGN5NTNhV1JuWlhRdGRHRmlJRDRnTG5BdFZHRmlRbUZ5SUM1d0xXMXZaQzFqYkc5ellXSnNaU0ErSUM1d0xWUmhZa0poY2kxMFlXSkRiRzl6WlVsamIyNGdlMXh1SUNBZ0lHMWhjbWRwYmkxc1pXWjBPaUEwY0hnN1hHNTlYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpQXVjQzF0YjJRdFkyeHZjMkZpYkdVZ1BpQXVjQzFVWVdKQ1lYSXRkR0ZpUTJ4dmMyVkpZMjl1T21KbFptOXlaU0I3WEc0Z0lDQWdabTl1ZEMxbVlXMXBiSGs2SUVadmJuUkJkMlZ6YjIxbE8xeHVJQ0FnSUdOdmJuUmxiblE2SUNkY1hHWXdNR1FuT3lBdktpQmpiRzl6WlNBcUwxeHVmVnh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWtsamIyNHNYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbmRwWkdkbGRDMTBZV0lnUGlBdWNDMVVZV0pDWVhJZ0xuQXRWR0ZpUW1GeUxYUmhZa3hoWW1Wc0xGeHVMbXAxY0hsMFpYSXRkMmxrWjJWMGN5NTNhV1JuWlhRdGRHRmlJRDRnTG5BdFZHRmlRbUZ5SUM1d0xWUmhZa0poY2kxMFlXSkRiRzl6WlVsamIyNGdlMXh1SUNBZ0lHeHBibVV0YUdWcFoyaDBPaUIyWVhJb0xTMXFjQzEzYVdSblpYUnpMV2h2Y21sNmIyNTBZV3d0ZEdGaUxXaGxhV2RvZENrN1hHNTlYRzVjYmk4cUlFRmpZMjl5WkdsdmJpQlhhV1JuWlhRZ0tpOWNibHh1TG5BdFEyOXNiR0Z3YzJVZ2UxeHVJQ0FnSUdScGMzQnNZWGs2SUdac1pYZzdYRzRnSUNBZ1pteGxlQzFrYVhKbFkzUnBiMjQ2SUdOdmJIVnRianRjYmlBZ0lDQmhiR2xuYmkxcGRHVnRjem9nYzNSeVpYUmphRHRjYm4xY2JseHVMbkF0UTI5c2JHRndjMlV0YUdWaFpHVnlJSHRjYmlBZ0lDQndZV1JrYVc1bk9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHVjSFYwTFhCaFpHUnBibWNwTzF4dUlDQWdJR04xY25OdmNqb2djRzlwYm5SbGNqdGNiaUFnSUNCamIyeHZjam9nZG1GeUtDMHRhbkF0ZFdrdFptOXVkQzFqYjJ4dmNqSXBPMXh1SUNBZ0lHSmhZMnRuY205MWJtUXRZMjlzYjNJNklIWmhjaWd0TFdwd0xXeGhlVzkxZEMxamIyeHZjaklwTzF4dUlDQWdJR0p2Y21SbGNqb2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWliM0prWlhJdGQybGtkR2dwSUhOdmJHbGtJSFpoY2lndExXcHdMV0p2Y21SbGNpMWpiMnh2Y2pFcE8xeHVJQ0FnSUhCaFpHUnBibWM2SUdOaGJHTW9kbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5a2dLaUF5SUM4Z015a2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5azdYRzRnSUNBZ1ptOXVkQzEzWldsbmFIUTZJR0p2YkdRN1hHNTlYRzVjYmk1d0xVTnZiR3hoY0hObExXaGxZV1JsY2pwb2IzWmxjaUI3WEc0Z0lDQWdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqb2dkbUZ5S0MwdGFuQXRiR0Y1YjNWMExXTnZiRzl5TVNrN1hHNGdJQ0FnWTI5c2IzSTZJSFpoY2lndExXcHdMWFZwTFdadmJuUXRZMjlzYjNJeEtUdGNibjFjYmx4dUxuQXRRMjlzYkdGd2MyVXRiM0JsYmlBK0lDNXdMVU52Ykd4aGNITmxMV2hsWVdSbGNpQjdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdFkyOXNiM0l3S1R0Y2JpQWdJQ0JqZFhKemIzSTZJR1JsWm1GMWJIUTdYRzRnSUNBZ1ltOXlaR1Z5TFdKdmRIUnZiVG9nYm05dVpUdGNibjFjYmx4dUxuQXRRMjlzYkdGd2MyVWdMbkF0UTI5c2JHRndjMlV0YUdWaFpHVnlPanBpWldadmNtVWdlMXh1SUNBZ0lHTnZiblJsYm5RNklDZGNYR1l3WkdGY1hEQXdRVEFuT3lBZ0x5b2dZMkZ5WlhRdGNtbG5hSFFzSUc1dmJpMWljbVZoYTJsdVp5QnpjR0ZqWlNBcUwxeHVJQ0FnSUdScGMzQnNZWGs2SUdsdWJHbHVaUzFpYkc5amF6dGNiaUFnSUNCbWIyNTBPaUJ1YjNKdFlXd2dibTl5YldGc0lHNXZjbTFoYkNBeE5IQjRMekVnUm05dWRFRjNaWE52YldVN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCcGJtaGxjbWwwTzF4dUlDQWdJSFJsZUhRdGNtVnVaR1Z5YVc1bk9pQmhkWFJ2TzF4dUlDQWdJQzEzWldKcmFYUXRabTl1ZEMxemJXOXZkR2hwYm1jNklHRnVkR2xoYkdsaGMyVmtPMXh1SUNBZ0lDMXRiM290YjNONExXWnZiblF0YzIxdmIzUm9hVzVuT2lCbmNtRjVjMk5oYkdVN1hHNTlYRzVjYmk1d0xVTnZiR3hoY0hObExXOXdaVzRnUGlBdWNDMURiMnhzWVhCelpTMW9aV0ZrWlhJNk9tSmxabTl5WlNCN1hHNGdJQ0FnWTI5dWRHVnVkRG9nSjF4Y1pqQmtOMXhjTURCQk1DYzdJQzhxSUdOaGNtVjBMV1J2ZDI0c0lHNXZiaTFpY21WaGEybHVaeUJ6Y0dGalpTQXFMMXh1ZlZ4dVhHNHVjQzFEYjJ4c1lYQnpaUzFqYjI1MFpXNTBjeUI3WEc0Z0lDQWdjR0ZrWkdsdVp6b2dkbUZ5S0MwdGFuQXRkMmxrWjJWMGN5MWpiMjUwWVdsdVpYSXRjR0ZrWkdsdVp5azdYRzRnSUNBZ1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pvZ2RtRnlLQzB0YW5BdGJHRjViM1YwTFdOdmJHOXlNU2s3WEc0Z0lDQWdZMjlzYjNJNklIWmhjaWd0TFdwd0xYVnBMV1p2Ym5RdFkyOXNiM0l4S1R0Y2JpQWdJQ0JpYjNKa1pYSXRiR1ZtZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMXlhV2RvZERvZ2RtRnlLQzB0YW5BdGQybGtaMlYwY3kxaWIzSmtaWEl0ZDJsa2RHZ3BJSE52Ykdsa0lIWmhjaWd0TFdwd0xXSnZjbVJsY2kxamIyeHZjakVwTzF4dUlDQWdJR0p2Y21SbGNpMWliM1IwYjIwNklIWmhjaWd0TFdwd0xYZHBaR2RsZEhNdFltOXlaR1Z5TFhkcFpIUm9LU0J6YjJ4cFpDQjJZWElvTFMxcWNDMWliM0prWlhJdFkyOXNiM0l4S1R0Y2JpQWdJQ0J2ZG1WeVpteHZkem9nWVhWMGJ6dGNibjFjYmx4dUxuQXRRV05qYjNKa2FXOXVJSHRjYmlBZ0lDQmthWE53YkdGNU9pQm1iR1Y0TzF4dUlDQWdJR1pzWlhndFpHbHlaV04wYVc5dU9pQmpiMngxYlc0N1hHNGdJQ0FnWVd4cFoyNHRhWFJsYlhNNklITjBjbVYwWTJnN1hHNTlYRzVjYmk1d0xVRmpZMjl5WkdsdmJpQXVjQzFEYjJ4c1lYQnpaU0I3WEc0Z0lDQWdiV0Z5WjJsdUxXSnZkSFJ2YlRvZ01EdGNibjFjYmx4dUxuQXRRV05qYjNKa2FXOXVJQzV3TFVOdmJHeGhjSE5sSUNzZ0xuQXRRMjlzYkdGd2MyVWdlMXh1SUNBZ0lHMWhjbWRwYmkxMGIzQTZJRFJ3ZUR0Y2JuMWNibHh1WEc1Y2JpOHFJRWhVVFV3Z2QybGtaMlYwSUNvdlhHNWNiaTUzYVdSblpYUXRhSFJ0YkN3Z0xuZHBaR2RsZEMxb2RHMXNiV0YwYUNCN1hHNGdJQ0FnWm05dWRDMXphWHBsT2lCMllYSW9MUzFxY0MxM2FXUm5aWFJ6TFdadmJuUXRjMmw2WlNrN1hHNTlYRzVjYmk1M2FXUm5aWFF0YUhSdGJDQStJQzUzYVdSblpYUXRhSFJ0YkMxamIyNTBaVzUwTENBdWQybGtaMlYwTFdoMGJXeHRZWFJvSUQ0Z0xuZHBaR2RsZEMxb2RHMXNMV052Ym5SbGJuUWdlMXh1SUNBZ0lDOHFJRVpwYkd3Z2IzVjBJSFJvWlNCaGNtVmhJR2x1SUhSb1pTQklWRTFNSUhkcFpHZGxkQ0FxTDF4dUlDQWdJR0ZzYVdkdUxYTmxiR1k2SUhOMGNtVjBZMmc3WEc0Z0lDQWdabXhsZUMxbmNtOTNPaUF4TzF4dUlDQWdJR1pzWlhndGMyaHlhVzVyT2lBeE8xeHVJQ0FnSUM4cUlFMWhhMlZ6SUhOMWNtVWdkR2hsSUdKaGMyVnNhVzVsSUdseklITjBhV3hzSUdGc2FXZHVaV1FnZDJsMGFDQnZkR2hsY2lCbGJHVnRaVzUwY3lBcUwxeHVJQ0FnSUd4cGJtVXRhR1ZwWjJoME9pQjJZWElvTFMxcWNDMTNhV1JuWlhSekxXbHViR2x1WlMxb1pXbG5hSFFwTzF4dUlDQWdJQzhxSUUxaGEyVWdhWFFnY0c5emMybGliR1VnZEc4Z2FHRjJaU0JoWW5OdmJIVjBaV3g1TFhCdmMybDBhVzl1WldRZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUdoMGJXd2dLaTljYmlBZ0lDQndiM05wZEdsdmJqb2djbVZzWVhScGRtVTdYRzU5WEc0aUxDSXZLaUJVYUdseklHWnBiR1VnYUdGeklHTnZaR1VnWkdWeWFYWmxaQ0JtY205dElGQm9iM053YUc5eVNsTWdRMU5USUdacGJHVnpMQ0JoY3lCdWIzUmxaQ0JpWld4dmR5NGdWR2hsSUd4cFkyVnVjMlVnWm05eUlIUm9hWE1nVUdodmMzQm9iM0pLVXlCamIyUmxJR2x6T2x4dVhHNURiM0I1Y21sbmFIUWdLR01wSURJd01UUXRNakF4Tnl3Z1VHaHZjM0JvYjNKS1V5QkRiMjUwY21saWRYUnZjbk5jYmtGc2JDQnlhV2RvZEhNZ2NtVnpaWEoyWldRdVhHNWNibEpsWkdsemRISnBZblYwYVc5dUlHRnVaQ0IxYzJVZ2FXNGdjMjkxY21ObElHRnVaQ0JpYVc1aGNua2dabTl5YlhNc0lIZHBkR2dnYjNJZ2QybDBhRzkxZEZ4dWJXOWthV1pwWTJGMGFXOXVMQ0JoY21VZ2NHVnliV2wwZEdWa0lIQnliM1pwWkdWa0lIUm9ZWFFnZEdobElHWnZiR3h2ZDJsdVp5QmpiMjVrYVhScGIyNXpJR0Z5WlNCdFpYUTZYRzVjYmlvZ1VtVmthWE4wY21saWRYUnBiMjV6SUc5bUlITnZkWEpqWlNCamIyUmxJRzExYzNRZ2NtVjBZV2x1SUhSb1pTQmhZbTkyWlNCamIzQjVjbWxuYUhRZ2JtOTBhV05sTENCMGFHbHpYRzRnSUd4cGMzUWdiMllnWTI5dVpHbDBhVzl1Y3lCaGJtUWdkR2hsSUdadmJHeHZkMmx1WnlCa2FYTmpiR0ZwYldWeUxseHVYRzRxSUZKbFpHbHpkSEpwWW5WMGFXOXVjeUJwYmlCaWFXNWhjbmtnWm05eWJTQnRkWE4wSUhKbGNISnZaSFZqWlNCMGFHVWdZV0p2ZG1VZ1kyOXdlWEpwWjJoMElHNXZkR2xqWlN4Y2JpQWdkR2hwY3lCc2FYTjBJRzltSUdOdmJtUnBkR2x2Ym5NZ1lXNWtJSFJvWlNCbWIyeHNiM2RwYm1jZ1pHbHpZMnhoYVcxbGNpQnBiaUIwYUdVZ1pHOWpkVzFsYm5SaGRHbHZibHh1SUNCaGJtUXZiM0lnYjNSb1pYSWdiV0YwWlhKcFlXeHpJSEJ5YjNacFpHVmtJSGRwZEdnZ2RHaGxJR1JwYzNSeWFXSjFkR2x2Ymk1Y2JseHVLaUJPWldsMGFHVnlJSFJvWlNCdVlXMWxJRzltSUhSb1pTQmpiM0I1Y21sbmFIUWdhRzlzWkdWeUlHNXZjaUIwYUdVZ2JtRnRaWE1nYjJZZ2FYUnpYRzRnSUdOdmJuUnlhV0oxZEc5eWN5QnRZWGtnWW1VZ2RYTmxaQ0IwYnlCbGJtUnZjbk5sSUc5eUlIQnliMjF2ZEdVZ2NISnZaSFZqZEhNZ1pHVnlhWFpsWkNCbWNtOXRYRzRnSUhSb2FYTWdjMjltZEhkaGNtVWdkMmwwYUc5MWRDQnpjR1ZqYVdacFl5QndjbWx2Y2lCM2NtbDBkR1Z1SUhCbGNtMXBjM05wYjI0dVhHNWNibFJJU1ZNZ1UwOUdWRmRCVWtVZ1NWTWdVRkpQVmtsRVJVUWdRbGtnVkVoRklFTlBVRmxTU1VkSVZDQklUMHhFUlZKVElFRk9SQ0JEVDA1VVVrbENWVlJQVWxNZ1hDSkJVeUJKVTF3aVhHNUJUa1FnUVU1WklFVllVRkpGVTFNZ1QxSWdTVTFRVEVsRlJDQlhRVkpTUVU1VVNVVlRMQ0JKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1ZFaEZYRzVKVFZCTVNVVkVJRmRCVWxKQlRsUkpSVk1nVDBZZ1RVVlNRMGhCVGxSQlFrbE1TVlJaSUVGT1JDQkdTVlJPUlZOVElFWlBVaUJCSUZCQlVsUkpRMVZNUVZJZ1VGVlNVRTlUUlNCQlVrVmNia1JKVTBOTVFVbE5SVVF1SUVsT0lFNVBJRVZXUlU1VUlGTklRVXhNSUZSSVJTQkRUMUJaVWtsSFNGUWdTRTlNUkVWU0lFOVNJRU5QVGxSU1NVSlZWRTlTVXlCQ1JTQk1TVUZDVEVWY2JrWlBVaUJCVGxrZ1JFbFNSVU5VTENCSlRrUkpVa1ZEVkN3Z1NVNURTVVJGVGxSQlRDd2dVMUJGUTBsQlRDd2dSVmhGVFZCTVFWSlpMQ0JQVWlCRFQwNVRSVkZWUlU1VVNVRk1YRzVFUVUxQlIwVlRJQ2hKVGtOTVZVUkpUa2NzSUVKVlZDQk9UMVFnVEVsTlNWUkZSQ0JVVHl3Z1VGSlBRMVZTUlUxRlRsUWdUMFlnVTFWQ1UxUkpWRlZVUlNCSFQwOUVVeUJQVWx4dVUwVlNWa2xEUlZNN0lFeFBVMU1nVDBZZ1ZWTkZMQ0JFUVZSQkxDQlBVaUJRVWs5R1NWUlRPeUJQVWlCQ1ZWTkpUa1ZUVXlCSlRsUkZVbEpWVUZSSlQwNHBJRWhQVjBWV1JWSmNia05CVlZORlJDQkJUa1FnVDA0Z1FVNVpJRlJJUlU5U1dTQlBSaUJNU1VGQ1NVeEpWRmtzSUZkSVJWUklSVklnU1U0Z1EwOU9WRkpCUTFRc0lGTlVVa2xEVkNCTVNVRkNTVXhKVkZrc1hHNVBVaUJVVDFKVUlDaEpUa05NVlVSSlRrY2dUa1ZIVEVsSFJVNURSU0JQVWlCUFZFaEZVbGRKVTBVcElFRlNTVk5KVGtjZ1NVNGdRVTVaSUZkQldTQlBWVlFnVDBZZ1ZFaEZJRlZUUlZ4dVQwWWdWRWhKVXlCVFQwWlVWMEZTUlN3Z1JWWkZUaUJKUmlCQlJGWkpVMFZFSUU5R0lGUklSU0JRVDFOVFNVSkpURWxVV1NCUFJpQlRWVU5JSUVSQlRVRkhSUzVjYmx4dUtpOWNibHh1THlwY2JpQXFJRlJvWlNCbWIyeHNiM2RwYm1jZ2MyVmpkR2x2YmlCcGN5QmtaWEpwZG1Wa0lHWnliMjBnYUhSMGNITTZMeTluYVhSb2RXSXVZMjl0TDNCb2IzTndhRzl5YW5NdmNHaHZjM0JvYjNJdllteHZZaTh5TTJJNVpEQTNOV1ZpWXpWaU56TmhZakUwT0dJMlpXSm1Zekl3WVdZNU4yWTROVGN4TkdNMEwzQmhZMnRoWjJWekwzZHBaR2RsZEhNdmMzUjViR1V2ZEdGaVltRnlMbU56Y3lCY2JpQXFJRmRsSjNabElITmpiM0JsWkNCMGFHVWdjblZzWlhNZ2MyOGdkR2hoZENCMGFHVjVJR0Z5WlNCamIyNXphWE4wWlc1MElIZHBkR2dnWlhoaFkzUnNlU0J2ZFhJZ1kyOWtaUzVjYmlBcUwxeHVYRzR1YW5Wd2VYUmxjaTEzYVdSblpYUnpMbmRwWkdkbGRDMTBZV0lnUGlBdWNDMVVZV0pDWVhJZ2UxeHVJQ0JrYVhOd2JHRjVPaUJtYkdWNE8xeHVJQ0F0ZDJWaWEybDBMWFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPMXh1SUNBdGJXOTZMWFZ6WlhJdGMyVnNaV04wT2lCdWIyNWxPMXh1SUNBdGJYTXRkWE5sY2kxelpXeGxZM1E2SUc1dmJtVTdYRzRnSUhWelpYSXRjMlZzWldOME9pQnViMjVsTzF4dWZWeHVYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNsdGtZWFJoTFc5eWFXVnVkR0YwYVc5dVBTZG9iM0pwZW05dWRHRnNKMTBnZTF4dUlDQm1iR1Y0TFdScGNtVmpkR2x2YmpvZ2NtOTNPMXh1ZlZ4dVhHNWNiaTVxZFhCNWRHVnlMWGRwWkdkbGRITXVkMmxrWjJWMExYUmhZaUErSUM1d0xWUmhZa0poY2x0a1lYUmhMVzl5YVdWdWRHRjBhVzl1UFNkMlpYSjBhV05oYkNkZElIdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJR052YkhWdGJqdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnUGlBdWNDMVVZV0pDWVhJdFkyOXVkR1Z1ZENCN1hHNGdJRzFoY21kcGJqb2dNRHRjYmlBZ2NHRmtaR2x1WnpvZ01EdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVEb2dNU0F4SUdGMWRHODdYRzRnSUd4cGMzUXRjM1I1YkdVdGRIbHdaVG9nYm05dVpUdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWEpiWkdGMFlTMXZjbWxsYm5SaGRHbHZiajBuYUc5eWFYcHZiblJoYkNkZElENGdMbkF0VkdGaVFtRnlMV052Ym5SbGJuUWdlMXh1SUNCbWJHVjRMV1JwY21WamRHbHZiam9nY205M08xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjbHRrWVhSaExXOXlhV1Z1ZEdGMGFXOXVQU2QyWlhKMGFXTmhiQ2RkSUQ0Z0xuQXRWR0ZpUW1GeUxXTnZiblJsYm5RZ2UxeHVJQ0JtYkdWNExXUnBjbVZqZEdsdmJqb2dZMjlzZFcxdU8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaUlIdGNiaUFnWkdsemNHeGhlVG9nWm14bGVEdGNiaUFnWm14bGVDMWthWEpsWTNScGIyNDZJSEp2ZHp0Y2JpQWdZbTk0TFhOcGVtbHVaem9nWW05eVpHVnlMV0p2ZUR0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNibjFjYmx4dVhHNHVhblZ3ZVhSbGNpMTNhV1JuWlhSekxuZHBaR2RsZEMxMFlXSWdQaUF1Y0MxVVlXSkNZWElnTG5BdFZHRmlRbUZ5TFhSaFlrbGpiMjRzWEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWtOc2IzTmxTV052YmlCN1hHNGdJR1pzWlhnNklEQWdNQ0JoZFhSdk8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaUF1Y0MxVVlXSkNZWEl0ZEdGaVRHRmlaV3dnZTF4dUlDQm1iR1Y0T2lBeElERWdZWFYwYnp0Y2JpQWdiM1psY21ac2IzYzZJR2hwWkdSbGJqdGNiaUFnZDJocGRHVXRjM0JoWTJVNklHNXZkM0poY0R0Y2JuMWNibHh1WEc0dWFuVndlWFJsY2kxM2FXUm5aWFJ6TG5kcFpHZGxkQzEwWVdJZ1BpQXVjQzFVWVdKQ1lYSWdMbkF0VkdGaVFtRnlMWFJoWWk1d0xXMXZaQzFvYVdSa1pXNGdlMXh1SUNCa2FYTndiR0Y1T2lCdWIyNWxJQ0ZwYlhCdmNuUmhiblE3WEc1OVhHNWNibHh1TG1wMWNIbDBaWEl0ZDJsa1oyVjBjeTUzYVdSblpYUXRkR0ZpSUQ0Z0xuQXRWR0ZpUW1GeUxuQXRiVzlrTFdSeVlXZG5hVzVuSUM1d0xWUmhZa0poY2kxMFlXSWdlMXh1SUNCd2IzTnBkR2x2YmpvZ2NtVnNZWFJwZG1VN1hHNTlYRzVjYmx4dUxtcDFjSGwwWlhJdGQybGtaMlYwY3k1M2FXUm5aWFF0ZEdGaUlENGdMbkF0VkdGaVFtRnlMbkF0Ylc5a0xXUnlZV2RuYVc1blcyUmhkR0V0YjNKcFpXNTBZWFJwYjI0OUoyaHZjbWw2YjI1MFlXd25YU0F1Y0MxVVlXSkNZWEl0ZEdGaUlIdGNiaUFnYkdWbWREb2dNRHRjYmlBZ2RISmhibk5wZEdsdmJqb2diR1ZtZENBeE5UQnRjeUJsWVhObE8xeHVmVnh1WEc1Y2JpNXFkWEI1ZEdWeUxYZHBaR2RsZEhNdWQybGtaMlYwTFhSaFlpQStJQzV3TFZSaFlrSmhjaTV3TFcxdlpDMWtjbUZuWjJsdVoxdGtZWFJoTFc5eWFXVnVkR0YwYVc5dVBTZDJaWEowYVdOaGJDZGRJQzV3TFZSaFlrSmhjaTEwWVdJZ2UxeHVJQ0IwYjNBNklEQTdYRzRnSUhSeVlXNXphWFJwYjI0NklIUnZjQ0F4TlRCdGN5QmxZWE5sTzF4dWZWeHVYRzVjYmk1cWRYQjVkR1Z5TFhkcFpHZGxkSE11ZDJsa1oyVjBMWFJoWWlBK0lDNXdMVlJoWWtKaGNpNXdMVzF2WkMxa2NtRm5aMmx1WnlBdWNDMVVZV0pDWVhJdGRHRmlMbkF0Ylc5a0xXUnlZV2RuYVc1bklIdGNiaUFnZEhKaGJuTnBkR2x2YmpvZ2JtOXVaVHRjYm4xY2JseHVMeW9nUlc1a0lIUmhZbUpoY2k1amMzTWdLaTljYmlKZGZRPT0gKi8=", 916 | "headers": [ 917 | [ 918 | "content-type", 919 | "text/css" 920 | ] 921 | ], 922 | "ok": true, 923 | "status": 200, 924 | "status_text": "" 925 | } 926 | } 927 | }, 928 | "colab_type": "code", 929 | "id": "u46fh8TdhvXf", 930 | "outputId": "dc622a31-e57c-4cbf-8a56-570fd3bf1bfd", 931 | "pycharm": { 932 | "is_executing": true 933 | } 934 | }, 935 | "outputs": [], 936 | "source": [ 937 | "# tr_doc = get_bert_doc_emb(X_train_b)\n", 938 | "# val_doc = get_bert_doc_emb(X_val_b)" 939 | ] 940 | }, 941 | { 942 | "cell_type": "code", 943 | "execution_count": 0, 944 | "metadata": { 945 | "ExecuteTime": { 946 | "end_time": "2019-03-12T16:56:19.846663Z", 947 | "start_time": "2019-03-12T16:56:19.785715Z" 948 | }, 949 | "colab": {}, 950 | "colab_type": "code", 951 | "hidden": true, 952 | "id": "_9ERuZHuhvXi" 953 | }, 954 | "outputs": [], 955 | "source": [ 956 | "# tr_doc = torch.stack(tr_doc).cpu().numpy()\n", 957 | "# val_doc = torch.stack(val_doc).cpu().numpy()\n", 958 | "# test_doc = torch.stack(test_doc).cpu().numpy()" 959 | ] 960 | }, 961 | { 962 | "cell_type": "code", 963 | "execution_count": 186, 964 | "metadata": { 965 | "ExecuteTime": { 966 | "end_time": "2019-03-12T17:07:41.338429Z", 967 | "start_time": "2019-03-12T17:07:40.971696Z" 968 | }, 969 | "colab": {}, 970 | "colab_type": "code", 971 | "hidden": true, 972 | "id": "QHI6gqj2hvXl" 973 | }, 974 | "outputs": [], 975 | "source": [ 976 | "# np.save('data/docs_emb_bert/tr_doc.npy', tr_doc)\n", 977 | "# np.save('data/docs_emb_bert/vl_doc.npy', vl_doc)\n", 978 | "# np.save('data/docs_emb_bert/test_doc.npy', test_doc)" 979 | ] 980 | }, 981 | { 982 | "cell_type": "code", 983 | "execution_count": 0, 984 | "metadata": { 985 | "ExecuteTime": { 986 | "end_time": "2019-03-12T17:08:48.441897Z", 987 | "start_time": "2019-03-12T17:08:48.359611Z" 988 | }, 989 | "colab": {}, 990 | "colab_type": "code", 991 | "hidden": true, 992 | "id": "7NReqvLEhvXn" 993 | }, 994 | "outputs": [], 995 | "source": [ 996 | "# tr_doc = np.load('data/docs_emb_bert/tr_doc.npy')\n", 997 | "# val_doc = np.load('data/docs_emb_bert/val_doc.npy')\n", 998 | "# test_doc = np.load('data/docs_emb_bert/test_doc.npy')" 999 | ] 1000 | }, 1001 | { 1002 | "cell_type": "code", 1003 | "execution_count": 188, 1004 | "metadata": { 1005 | "ExecuteTime": { 1006 | "end_time": "2019-03-12T16:56:46.076062Z", 1007 | "start_time": "2019-03-12T16:56:44.891214Z" 1008 | }, 1009 | "colab": {}, 1010 | "colab_type": "code", 1011 | "hidden": true, 1012 | "id": "n9t6EH7_hvXq", 1013 | "outputId": "fba58ff3-ca1b-4b87-ddcc-d58c86a86f78" 1014 | }, 1015 | "outputs": [ 1016 | { 1017 | "name": "stdout", 1018 | "output_type": "stream", 1019 | "text": [ 1020 | "0.86212\n" 1021 | ] 1022 | } 1023 | ], 1024 | "source": [ 1025 | "svm = SGDClassifier(max_iter=1000, tol=1e-3)\n", 1026 | "svm.fit(tr_doc, y_train)\n", 1027 | "pred = svm.predict(vl_doc)\n", 1028 | "\n", 1029 | "print(sklearn.metrics.accuracy_score(y_val, pred))" 1030 | ] 1031 | }, 1032 | { 1033 | "cell_type": "code", 1034 | "execution_count": 207, 1035 | "metadata": {}, 1036 | "outputs": [ 1037 | { 1038 | "name": "stderr", 1039 | "output_type": "stream", 1040 | "text": [ 1041 | "/anaconda/envs/py36/lib/python3.6/site-packages/ipykernel/__main__.py:13: UserWarning: Attempted to set non-positive left xlim on a log-scaled axis.\n", 1042 | "Invalid limit will be ignored.\n" 1043 | ] 1044 | }, 1045 | { 1046 | "data": { 1047 | "image/png": "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YURERESkDZs2bRpxcXEsXbqU0aNHs2jRohrXVBa113ausR588EHi4+O56KKLeOutt7DZ3BNxbr/9dsaNG+d1rc1mY9GiRXz99de89tprTJ8+nT//+c/H3QfxHwojIiIi0i7F3bHM111osJQlZ/u6Cw328ssvY7fbWbJkiSeIgLu+5IYbbmDx4sU+7J20NgojIiIiIlKDy+XivvvuA8DhcHiOX3311fTu3bvWe7KysjzLCFfWqVQ3bdo0hRHxojAiIiIiIjW4XC6WLFlS4/iMGTPqDCM5OTkAdOnSpdbzXbt2bboOSpugMCIiIiLtkj9NffKFgIAAcnNzAYiIiGjQPVFRUQAcOHCg1vPp6elN0zlpM7S0r4iIiEgbZ7fbAXA6nc36PDExMcTFxZGWlkZKSkqN88uXL2/W5xf/ozAiIiIi0sbFxMRgjCEtLa3Zn+uqq67C6XRy++2343K5PMeTkpL45z//2ezPL/5F07RERERE2rjw8HAmTpzId999x5w5cxg0aBB2u51zzz2XkSNHNulz3XbbbXz88ce8++677NixgzPOOIPMzEzeffddTj31VD755JMmfT7xbwojIiIiIu3Aa6+9xs0338yXX37JW2+9hWVZ9OzZs8nDSEhICN988w1//etfee+993j00Ufp168fixYt4uyzz1YYES8KIyIiIiLtwIABA/j0009rPVdbfUdD7Nmzp9bjUVFRLF26lKVLl9Y4Z1lWjWMzZsyo9bi0faoZERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYEREREWnjUlJSMMZw5ZVX+rorIl4URkRERERExCcURkRERERExCcURkRERERExCcURkRERETake3btzN79mxiY2MJCwtjypQpfPXVV17X5OTk8I9//INzzjmHIUOGEBQURKdOnTj33HP58ccf62z7jTfeYOzYsYSEhNC5c2cuv/xy9u3bx7Rp0zDGNPdLEz+kMCIiIiLSTuzatYtJkyaRmZnJH//4R377298SHx/PWWedxTvvvOO5btu2bSxcuBCbzcaZZ57JLbfcwsyZM/nmm2+YOnUqX375ZY22H3zwQS677DJSUlK44ooruOqqq9i6dSuTJ08mOzu7JV+m+JEAX3dARERERFrGypUrufXWW/nHP/7hOXbDDTcwadIk5s6dy1lnnUVkZCRDhw5l3759OBwOACIiIgDYs2cPEyZM4Oabb+ZXv/qVp43k5GQWLlxIx44dWb9+Pb169QJgyZIlXHrppbz99tst+CrFnyiMiIiISPu0KMrXPWi4RTlN0kxUVBR//etfvY6NHz+eOXPm8K9//YsPP/yQK664gqgo93uTl5fndW3Pnj258MILeeKJJ0hLS6N3794AvPnmm5SXlzN//nxPEAEwxrBkyRLee+89nE5nk7wGaVs0TUtERESknRg7dqxnlKO6adOmAbBhwwbPsVWrVnHFFVcwdOhQHA4HxhiMMTzxxBMA7N2713Nt5X1Tpkyp0XafPn28AopIdRoZEREREWknunTpUuvxrl27Au7CdYAPP/yQCy+8kODgYE477TQGDx5MWFgYNpuN5cuXs2LFCkpKSjz3V95XV/tdunQhJSWlCV+JtBUKIyIiItI+NdHUJ39y4MCBWo+np6cDeKZn/eUvfyEoKIgVK1YwePBgr9GUP/7xj6xYscLr/sjISE/7w4cPb/DzimialoiIiEg7sX79+hp1IADLly8HYMyYMQDs3LmTYcOGMXjwYK/rXC4X33//fY37K++r7Vxqaiq7d+8+3q5LG6UwIiIiItJO5OTkcO+993odW7duHW+88QZRUVGcf/75AMTFxbFjxw7279/vuc6yLBYtWkRCQkKNdi+99FICAgJ44oknvIKHZVnceeedKl6XOmmaloiIiEg7MXXqVF544QVWr17N5MmT2b9/P++88w4ul4tnn33WM93q5ptvZu7cuUyZMoVzzz2XsLAwVq1aRUJCArNmzeLTTz/1ard///7ce++93HXXXYwaNYqLL76YqKgo/vvf/5KZmcmoUaPYtGmTL16ytHIaGRERERFpJ/r27csPP/xATEwMzzzzDO+++y5jx47l888/5+KLL/Zc98c//pGXX36Zrl278tZbb/HGG2/Qq1cvVq9ezdixY2tt+8477+TVV1+lT58+vPzyy7z44osMHTqUVatWUV5e7gk6ItVpZERERESkjYuLi8OyLM/PH3/88VHvufLKK/nNb34D4FXAPmLECBYtWlTrPZdffjmXX36517Hc3FySkpIYPXr0MfRc2jqNjIiIiIjIccvIyKCsrMzrWHl5OQsWLKC4uNhTjyJSnUZGREREROS4vf/++/z1r39lxowZ9OrVi8zMTFauXEliYiKjR49m/vz5vu6itEIKIyIiIiJy3CZOnMiUKVNYuXIlhw8fBtw1KgsXLuT2228nJCTExz2U1khhRERERESO25gxY/jggw983Q3xM6oZERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERERn1AYERERERFpIl9++SXGGJYsWeLrrvgFhRERERGRNs4YU+PL4XAQFxfHFVdcwbZt22rcs3z5ciIjI4mMjKz1/sqv6q688soa50NDQxk2bBgLFiwgIyPD6/opU6bU2/aRX9dee22zvk/S8gJ83QERERERaRl333235/ucnBzWrFnDq6++yvvvv8/333/P6NGja9zTu3dvrrrqqkY9z3nnnedp68CBA3z++ec88sgjvP/++8THx9OhQwcArr76ambMmOF17wcffMDmzZs5//zzGTlypNe5sWPHNqof0vopjIiIiIi0E4sWLapxbP78+fzzn//kscce45VXXqlxvnfv3rXeV5/Zs2dz5ZVXen4uLi7mpJNOYuPGjfzzn//0hKKrr766xr07d+5k8+bNXHDBBVx22WWNel7xP345TcsY09MY85IxZp8xpsQYk2KMecwYE9PIdn5jjFlujMkxxhQZY7YaY+40xgQ1V99FREREWpMzzjgDoMYUqqYUHBzMnDlzAFi7dm2zPU91y5Yt48wzz6RDhw44HA4GDBjAHXfcQV5eXo1ru3btypAhQ8jJyWH+/Pn06NGDkJAQxo0bx7JlywAoKyvjnnvuYcCAATgcDgYOHMhzzz1Xbx9WrlzJ9OnTPdPdzj77bH7++edmeb3+yu/CiDGmPxAPXAWsAR4FkoE/AT8aYzo0sJ37gH8D44APgaeBQuA+4HNjTGDT915ERESkdfn6668BGD9+fIs8X2Bg83/EuuuuuzjnnHPYsGEDs2bN4sYbbyQuLo4HHniAU045hYKCghr3FBcXc/rpp/P1119zwQUXMGfOHLZv3855553Hd999x+zZs3nxxReZPn061157LdnZ2fzxj3/k448/rrUP3333HTNmzCA8PJwbbriBmTNn8uWXXzJ58mRWr17d3G+B3/DHaVpPAZ2BGy3LeqLyoDHmEeBmYDEwt74GjDFjgTuBbGCcZVnJFcdNRftzgfnAI83xAkRERER8ofp0q9zcXNauXcuqVas455xzuPXWW2u9Jy0trc5pWkOGDOGSSy456vMWFRXx2muvAe6i9eb0xRdfcP/993PqqafyySefEBkZ6Tn3zDPPMG/ePP7+979z//33e92XmprKuHHjeOuttwgKck+SufjiiznjjDM477zzGDp0KFu2bPG0N3/+fE444QSWLFnCeeedV6Mfn3/+Oc8//7xX0f0777zDJZdcwjXXXMPmzZtrLADQHvlVGKkYFTkDSAGePOL03cAfgMuNMQssy6oZeavMrnh8oTKIAFiWZRlj7sIdRq5HYURERKTNGvGvEb7uQoNtvmJzk7Rzzz331Dg2bNgwfve73xEREVHrPWlpabXeB+5C9drCyEcffURKSgoABw8e5LPPPmP37t1MnTqVefPmHfsLaIDHH38cgBdffNEriADMnTuXpUuX8sYbb9QII5X3VgYRgJkzZ9KtWzf279/PP/7xD6/2hgwZwoknnsjGjRtr7cfw4cO55pprvI5dfPHFPProo6xevZo1a9YwceLEY36dbYVfhRHgtIrHryzLclU/YVlWnjFmFe6wchLwv3ra6VrxmHzkCcuysowxWUA/Y0xfy7J2NUG/RURERHzOsizP9wUFBWzdupU77riDOXPmsHXrVhYvXlzjnilTpvDdd9816nk+/vjjGtOXZs6cybJly457mta6dev47LPPvI517NiRG264AYAff/yRkJAQz0jMkVwuF7t376agoICwsDDP8a5du9KjR48a13fv3p309HTGjBlT41yPHj346aefOHz4sGeFsEpTp06tdeRj2rRprF69mg0bNiiM4H9hZHDFY2Id53fgDiODqD+MHKp47HvkCWNMNFBZCD8YUBgRERGRNicsLIwJEybwwQcf0LNnTx588EHmzp1Lr169jrvtl19+mSuvvBKn00lycjJ/+ctfeOedd5g3bx4vvPDCcbW9bt26GiM1gwcP5oYbbsDpdJKTkwPUPgpUXX5+vlcYiYqKqvW6gIAAgoKCCAkJqfUcuIvbj9SlS5da2+va1f078cp+tnf+FkYq/5bU9adXeTz6KO0sw10z8ntjzFOWZaWAp2ak+q8Ejro6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WlvRan9sIIsWEREREZHjhdVtWt5ekXOAPODpVrt/ChwD/tMYk9SBwz0IVAOXtw4iANba+u5VKyIiIiIi7Qm3npHF3sd/W2s9LXdYayuMMatwwsps4F1/BzHGTAAmAW8AJcaYxcA0wAKbgfdbH19ERERERAIr3MLIOO9jjp/9uThhZCzthBFghvexEFgGLGi1f5sx5mJr7a4u1ikiIiIiIicQbmGkv/exzM/+pu0pJzhOlvfxv3AGrV8ArAQGAHcCXwPeMsZMtNbWtXcgY8xGP7tOrqioYNmyZScopWdUVDh3nrl1/nCn6xce9D51j65f9+j6hQe9T92j6xcePJ7wvaEnrMaMBFDT9x0NXGqt/Ye1ttxamwtcCWzA6V25xK0CRUREREQiXbj1jDT1fPT3s79pe+kJjtO0/7C1dk3LHdZaa4x5E5iOM2Xwn9s7kLV2WlvbjTEbk5OTpy5atOgEpfSMpr9guHX+cKfrFx70PnWPrl/36PqFB71P3aPrFx6iosK3fyHcKt/pfRzrZ/8Y76O/MSWtj+MvtBz1PiZ2sC4REREREemkcAsj73sfzzHGHFe7MSYZmAdUAWtPcJy1ONMAD/czDfAE7+PebtQqIiIiIiLtCKswYq3dDfwbGA7c0Gr33UAS8Adr7bGmjcaYk40xJ7c6ThXwGyAB+JkxxrRoPxG4GmgAXgv8dyEiIiIiIhB+Y0YArgdWA08YY84EPgVm4axBkgPc3qr9p95H02r7HThT+t4EzPGuUTIAuBgnpNzkDT8iIiIiItIDwqpnBHy9I9OBF3FCyM3AKOBxYLa1triDxykHTgd+DqQB3wEuxJni9z+stY8HvHgREREREfEJx54RrLUHgK93sG3rHpGW+ypxelJa96aIiIiIiEgPC7ueERERERERiQwKIyIiIiIi4gqFERERERERcYXCiIiIiIiIuEJhREREREREXKEwIiIiIiIirlAYERERERERVyiMiIiIiIiIKxRGRERERETEFQojIiIiIiLiCoURERERERFxhcKIiIiIiIi4QmFERERERERcoTAiIiIiIiKuUBgRERERERFXKIyIiIiIiIgrFEZERERERMQVCiMiIiIiIuIKhREREREREXGFwoiIiIiIiLhCYURERERERFyhMCIiIiIiIq5QGBEREREREVcojIiIiIiIiCsURkRERERExBUKIyIiIiIi4gqFERERERERcYXCiIiIiIiIuEJhREREREREXKEwIiIiIiIirlAYERERERERVyiMiIiIiIiIKxRGRERERETEFQojIiIiIiLiCoURERERERFxhcKIiIiIiIi4QmFERERERERcoTAiIiIiIiKuUBgRERERERFXKIyIiIiIiIgrFEZERERERMQVCiMiIiIiIuIKhREREREREXGFwoiIiIiIiLhCYURERERERFyhMCIiIiIiIq5QGBEREREREVcojIiIiIiIiCsURkRERERExBUKIyIiIiIi4gqFERERERERcYXCiIiIiIiIuEJhREREREREXKEwIiIiIiIirlAYERERERERVyiMiIiIiIiIKxRGRERERETEFQojIiIiIiLiCoURERERERFxhcKIiIiIiIi4QmFERERERERcoTAiIiIiIiKuUBgRERERERFXKIyIiIiIiIgrFEZERERERMQVCiMiIiIiIuIKhREREREREXGFwoiIiIiIiLhCYURERERERFyhMCIiIiIiIq5QGBEREREREVcojIiIiIiIiCvCMowYY4YYY35rjDlkjKk1xuQZYx4zxqR24hjLjDG2na+EnvweRERERER6uxi3C+gsY8woYDWQBbwJ7ABmAt8FzjXGzLPWFnfikHf72d7QrUJFRERERKRdYRdGgGdwgsiN1tonmzYaYx4BvgfcB1zX0YNZa+8KdIEiIiIiInJiYXWblrdX5BwgD3i61e6fAseA/zTGJAW5NBERERER6aRw6xlZ7H38t7XW03KHtbbCGLMKJ6zMBt7tyAGNMV8FRgB1wKfAe9ba2sCVLCIiIiIibQm3MDLO+5jjZ38uThgZSwfDCPByq+eFxpgbrLWvdaE+ERERERHpoHALI/29j2V+9jdtT+nAsd4EHgI+AoqBYcBVwM3AX4wxF1hr3z7RQYwxG/3smrx9+3bGjh3bgVICz+NxOo6iosLqTryQoesXHvQ+dY+uX/fo+oUHvU/do+sXHvbt2wcw3OUyuiTcwkjAWGsfbbVpJ/BjY8wh4EngfuCEYaQdjbW1tWW5ubl5rbZHAQOAAsDzuVf519nXnex93NGJc0iz8Tj/f2ync+9TKOjqz1g41tAT71Ogau/OcfQ5ER70OREeNehzonuv0+dE9wTr53wy0LcHj99jwi2MNPV89Pezv2l7aTfO8WvgUWCKMSbZWlvR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\n", 1048 | "text/plain": [ 1049 | "
" 1050 | ] 1051 | }, 1052 | "metadata": { 1053 | "image/png": { 1054 | "height": 265, 1055 | "width": 401 1056 | }, 1057 | "needs_background": "light" 1058 | }, 1059 | "output_type": "display_data" 1060 | } 1061 | ], 1062 | "source": [ 1063 | "hist = get_acc_on_samples(tr_doc, vl_doc)\n", 1064 | "plot_new_hist(hist, 'BERT-emb')" 1065 | ] 1066 | }, 1067 | { 1068 | "cell_type": "markdown", 1069 | "metadata": { 1070 | "colab_type": "text", 1071 | "id": "BX_WRmSDhvXt" 1072 | }, 1073 | "source": [ 1074 | "# CountVectorizer and TfidfVectorizer" 1075 | ] 1076 | }, 1077 | { 1078 | "cell_type": "markdown", 1079 | "metadata": { 1080 | "colab_type": "text", 1081 | "id": "vb56-p2bhvXt" 1082 | }, 1083 | "source": [ 1084 | "Преобразуем датасет с помощью CountVectorizer и TfidfVectorizer." 1085 | ] 1086 | }, 1087 | { 1088 | "cell_type": "code", 1089 | "execution_count": 7, 1090 | "metadata": { 1091 | "colab": {}, 1092 | "colab_type": "code", 1093 | "id": "U5IgqOqVhvXv" 1094 | }, 1095 | "outputs": [], 1096 | "source": [ 1097 | "count_vect = CountVectorizer(tokenizer=tokenizer.tokenize, vocabulary=tokenizer.vocab)\n", 1098 | "X_train_counts = count_vect.fit_transform(X_train)\n", 1099 | "X_val_counts = count_vect.transform(X_val)" 1100 | ] 1101 | }, 1102 | { 1103 | "cell_type": "code", 1104 | "execution_count": 61, 1105 | "metadata": { 1106 | "ExecuteTime": { 1107 | "end_time": "2019-03-16T16:45:29.093215Z", 1108 | "start_time": "2019-03-16T16:45:16.147725Z" 1109 | }, 1110 | "colab": {}, 1111 | "colab_type": "code", 1112 | "id": "rQP4KDs_hvXz" 1113 | }, 1114 | "outputs": [], 1115 | "source": [ 1116 | "X_train_c = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in X_train_counts])\n", 1117 | "X_val_c = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in X_val_counts])\n", 1118 | "\n", 1119 | "X_train_c = csr_matrix(X_train_c)\n", 1120 | "X_val_c = csr_matrix(X_val_c)" 1121 | ] 1122 | }, 1123 | { 1124 | "cell_type": "code", 1125 | "execution_count": 62, 1126 | "metadata": { 1127 | "ExecuteTime": { 1128 | "end_time": "2019-03-16T16:47:10.713375Z", 1129 | "start_time": "2019-03-16T16:45:58.619603Z" 1130 | }, 1131 | "colab": {}, 1132 | "colab_type": "code", 1133 | "id": "5_CkBkmPhvX5" 1134 | }, 1135 | "outputs": [], 1136 | "source": [ 1137 | "idf_vectorizer = TfidfVectorizer(tokenizer=tokenizer.tokenize, vocabulary=tokenizer.vocab)\n", 1138 | "X_train_idf = idf_vectorizer.fit_transform(X_train)\n", 1139 | "X_val_idf = idf_vectorizer.transform(X_val)" 1140 | ] 1141 | }, 1142 | { 1143 | "cell_type": "code", 1144 | "execution_count": 214, 1145 | "metadata": { 1146 | "ExecuteTime": { 1147 | "end_time": "2019-03-16T16:45:43.963218Z", 1148 | "start_time": "2019-03-16T16:45:43.678877Z" 1149 | }, 1150 | "colab": { 1151 | "base_uri": "https://localhost:8080/", 1152 | "height": 34 1153 | }, 1154 | "colab_type": "code", 1155 | "id": "uCsHtnN8hvXx", 1156 | "outputId": "510afb39-63c9-423e-ee6b-8d244631e271" 1157 | }, 1158 | "outputs": [ 1159 | { 1160 | "name": "stdout", 1161 | "output_type": "stream", 1162 | "text": [ 1163 | "0.86536\n" 1164 | ] 1165 | } 1166 | ], 1167 | "source": [ 1168 | "svm = SGDClassifier(max_iter=1000, tol=1e-3)\n", 1169 | "svm.fit(X_train_counts, y_train)\n", 1170 | "pred = svm.predict(X_val_counts)\n", 1171 | "\n", 1172 | "print(sklearn.metrics.accuracy_score(y_val, pred))" 1173 | ] 1174 | }, 1175 | { 1176 | "cell_type": "code", 1177 | "execution_count": 215, 1178 | "metadata": { 1179 | "ExecuteTime": { 1180 | "end_time": "2019-03-16T17:02:18.683675Z", 1181 | "start_time": "2019-03-16T17:02:18.423987Z" 1182 | }, 1183 | "colab": { 1184 | "base_uri": "https://localhost:8080/", 1185 | "height": 34 1186 | }, 1187 | "colab_type": "code", 1188 | "id": "1if_u-UchvX1", 1189 | "outputId": "c950ca97-b091-4df7-d39b-088c2410e898" 1190 | }, 1191 | "outputs": [ 1192 | { 1193 | "name": "stdout", 1194 | "output_type": "stream", 1195 | "text": [ 1196 | "0.87036\n" 1197 | ] 1198 | } 1199 | ], 1200 | "source": [ 1201 | "svm = SGDClassifier(max_iter=1000, tol=1e-3)\n", 1202 | "svm.fit(X_train_c, y_train)\n", 1203 | "pred = svm.predict(X_val_c)\n", 1204 | "\n", 1205 | "print(sklearn.metrics.accuracy_score(y_val, pred))" 1206 | ] 1207 | }, 1208 | { 1209 | "cell_type": "code", 1210 | "execution_count": 216, 1211 | "metadata": { 1212 | "ExecuteTime": { 1213 | "end_time": "2019-03-16T16:47:12.235483Z", 1214 | "start_time": "2019-03-16T16:47:11.968150Z" 1215 | }, 1216 | "colab": { 1217 | "base_uri": "https://localhost:8080/", 1218 | "height": 34 1219 | }, 1220 | "colab_type": "code", 1221 | "id": "WylqzawVhvX7", 1222 | "outputId": "f675812b-16cd-49cd-b99a-f02e8463c05f" 1223 | }, 1224 | "outputs": [ 1225 | { 1226 | "name": "stdout", 1227 | "output_type": "stream", 1228 | "text": [ 1229 | "0.88368\n" 1230 | ] 1231 | } 1232 | ], 1233 | "source": [ 1234 | "svm = SGDClassifier(max_iter=1000, tol=1e-3)\n", 1235 | "svm.fit(X_train_idf, y_train)\n", 1236 | "pred = svm.predict(X_val_idf)\n", 1237 | "\n", 1238 | "print(sklearn.metrics.accuracy_score(y_val, pred))" 1239 | ] 1240 | }, 1241 | { 1242 | "cell_type": "code", 1243 | "execution_count": 217, 1244 | "metadata": { 1245 | "ExecuteTime": { 1246 | "end_time": "2019-03-16T17:02:42.028568Z", 1247 | "start_time": "2019-03-16T17:02:27.038221Z" 1248 | }, 1249 | "colab": { 1250 | "base_uri": "https://localhost:8080/", 1251 | "height": 51 1252 | }, 1253 | "colab_type": "code", 1254 | "id": "_wSvSqzihvYB", 1255 | "outputId": "e828070f-3cab-435c-e50c-288b22f6f415" 1256 | }, 1257 | "outputs": [ 1258 | { 1259 | "data": { 1260 | "text/plain": [ 1261 | "([0.66316, 0.74088, 0.78824, 0.79388, 0.83624, 0.85904, 0.8688, 0.87488],\n", 1262 | " [0.651, 0.71972, 0.75584, 0.7942, 0.82252, 0.84444, 0.86748, 0.87996])" 1263 | ] 1264 | }, 1265 | "execution_count": 217, 1266 | "metadata": {}, 1267 | "output_type": "execute_result" 1268 | } 1269 | ], 1270 | "source": [ 1271 | "hist1 = get_acc_on_samples(X_train_idf, X_val_idf)\n", 1272 | "hist2 = get_acc_on_samples(X_train_c, X_val_c)\n", 1273 | "hist1, hist2" 1274 | ] 1275 | }, 1276 | { 1277 | "cell_type": "code", 1278 | "execution_count": 218, 1279 | "metadata": { 1280 | "ExecuteTime": { 1281 | "end_time": "2019-03-16T17:03:12.092356Z", 1282 | "start_time": "2019-03-16T17:03:11.750085Z" 1283 | }, 1284 | "colab": { 1285 | "base_uri": "https://localhost:8080/", 1286 | "height": 301 1287 | }, 1288 | "colab_type": "code", 1289 | "id": "IFd3-l5PhvYD", 1290 | "outputId": "8dc01603-699b-4941-dd97-4bbae628db78" 1291 | }, 1292 | "outputs": [ 1293 | { 1294 | "name": "stderr", 1295 | "output_type": "stream", 1296 | "text": [ 1297 | "No handles with labels found to put in legend.\n", 1298 | "/anaconda/envs/py36/lib/python3.6/site-packages/ipykernel/__main__.py:8: UserWarning: Attempted to set non-positive left xlim on a log-scaled axis.\n", 1299 | "Invalid limit will be ignored.\n" 1300 | ] 1301 | }, 1302 | { 1303 | "data": { 1304 | "text/plain": [ 1305 | "([,\n", 1306 | " ,\n", 1307 | " ,\n", 1308 | " ,\n", 1309 | " ,\n", 1310 | " ,\n", 1311 | " ,\n", 1312 | " ],\n", 1313 | " )" 1314 | ] 1315 | }, 1316 | "execution_count": 218, 1317 | "metadata": {}, 1318 | "output_type": "execute_result" 1319 | }, 1320 | { 1321 | "data": { 1322 | "image/png": "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\n", 1323 | "text/plain": [ 1324 | "
" 1325 | ] 1326 | }, 1327 | "metadata": { 1328 | "image/png": { 1329 | "height": 252, 1330 | "width": 388 1331 | }, 1332 | "needs_background": "light" 1333 | }, 1334 | "output_type": "display_data" 1335 | } 1336 | ], 1337 | "source": [ 1338 | "ax = plt.axes()\n", 1339 | "x = np.array(SAMPLE_SIZES)[:, None]\n", 1340 | "plt.plot(x, np.array(hist1)[:, None], label='')\n", 1341 | "plt.plot(x, np.array(hist2)[:, None], label='')\n", 1342 | "plt.legend()\n", 1343 | "plt.grid()\n", 1344 | "plt.xscale(\"log\")\n", 1345 | "ax.set_xlim([0,25000])\n", 1346 | "ax.set_ylim([0.5,1])\n", 1347 | "plt.xticks(x, SAMPLE_SIZES[:-1]+[SAMPLE_SIZES[-1]+2]) #24998 fix" 1348 | ] 1349 | }, 1350 | { 1351 | "cell_type": "markdown", 1352 | "metadata": { 1353 | "colab_type": "text", 1354 | "id": "vHW-j9fZhvYH" 1355 | }, 1356 | "source": [ 1357 | "# Pytorch" 1358 | ] 1359 | }, 1360 | { 1361 | "cell_type": "code", 1362 | "execution_count": 10, 1363 | "metadata": { 1364 | "ExecuteTime": { 1365 | "end_time": "2019-03-17T18:53:46.788527Z", 1366 | "start_time": "2019-03-17T18:53:46.595697Z" 1367 | }, 1368 | "colab": {}, 1369 | "colab_type": "code", 1370 | "id": "tMLZLqWXhvYH" 1371 | }, 1372 | "outputs": [], 1373 | "source": [ 1374 | "def custom_loss(input, target):\n", 1375 | " return nn.functional.binary_cross_entropy(input, target) * 1000" 1376 | ] 1377 | }, 1378 | { 1379 | "cell_type": "code", 1380 | "execution_count": 4, 1381 | "metadata": { 1382 | "ExecuteTime": { 1383 | "end_time": "2019-03-16T14:45:02.051450Z", 1384 | "start_time": "2019-03-16T14:45:01.985376Z" 1385 | }, 1386 | "colab": {}, 1387 | "colab_type": "code", 1388 | "id": "gI2BgzudhvYJ" 1389 | }, 1390 | "outputs": [], 1391 | "source": [ 1392 | "def transform_data_with_autoencoder(model, data):\n", 1393 | " if type(data) == scipy.sparse.csr.csr_matrix: data = data.todense()\n", 1394 | " tensor_data = torch.Tensor(data).to(device)\n", 1395 | " codes = model.encoder(tensor_data)\n", 1396 | " return codes.detach().cpu().numpy()" 1397 | ] 1398 | }, 1399 | { 1400 | "cell_type": "code", 1401 | "execution_count": 5, 1402 | "metadata": { 1403 | "ExecuteTime": { 1404 | "end_time": "2019-03-18T00:07:58.469009Z", 1405 | "start_time": "2019-03-18T00:07:58.276052Z" 1406 | }, 1407 | "colab": {}, 1408 | "colab_type": "code", 1409 | "id": "EtpvyMNXhvYL" 1410 | }, 1411 | "outputs": [], 1412 | "source": [ 1413 | "class Autoencoder(nn.Module):\n", 1414 | " def __init__(self, input_size, hidden_size=256):\n", 1415 | " super(Autoencoder, self).__init__()\n", 1416 | " self.encoder = nn.Sequential(\n", 1417 | " nn.Linear(input_size, hidden_size),\n", 1418 | " nn.ReLU()\n", 1419 | " )\n", 1420 | " self.decoder = nn.Sequential(\n", 1421 | " nn.Linear(hidden_size, input_size),\n", 1422 | " nn.Sigmoid()\n", 1423 | " )\n", 1424 | "\n", 1425 | " def forward(self, x):\n", 1426 | " x = self.encoder(x)\n", 1427 | " x = self.decoder(x)\n", 1428 | " return x" 1429 | ] 1430 | }, 1431 | { 1432 | "cell_type": "code", 1433 | "execution_count": 0, 1434 | "metadata": { 1435 | "colab": {}, 1436 | "colab_type": "code", 1437 | "id": "Mbl8rLeYhvYN" 1438 | }, 1439 | "outputs": [], 1440 | "source": [ 1441 | "class FFNN(nn.Module):\n", 1442 | " def __init__(self, num_labels=20):\n", 1443 | " super(FFNN, self).__init__()\n", 1444 | " self.num_labels = num_labels\n", 1445 | " self.dropout = torch.nn.Dropout(0.1)\n", 1446 | " self.classifier = torch.nn.Linear(768, num_labels)\n", 1447 | "\n", 1448 | " def forward(self, x):\n", 1449 | " x = self.dropout(x)\n", 1450 | " x = self.classifier(x)\n", 1451 | " return x" 1452 | ] 1453 | }, 1454 | { 1455 | "cell_type": "markdown", 1456 | "metadata": { 1457 | "colab_type": "text", 1458 | "id": "Okb1VsdGhvYP" 1459 | }, 1460 | "source": [ 1461 | "## Wikitext" 1462 | ] 1463 | }, 1464 | { 1465 | "cell_type": "code", 1466 | "execution_count": 0, 1467 | "metadata": { 1468 | "colab": {}, 1469 | "colab_type": "code", 1470 | "id": "02qLqDnGhvYP" 1471 | }, 1472 | "outputs": [], 1473 | "source": [ 1474 | "PATH = Path('data/wikitext-2')" 1475 | ] 1476 | }, 1477 | { 1478 | "cell_type": "code", 1479 | "execution_count": 0, 1480 | "metadata": { 1481 | "ExecuteTime": { 1482 | "end_time": "2019-03-18T23:35:30.491426Z", 1483 | "start_time": "2019-03-18T23:35:30.298397Z" 1484 | }, 1485 | "colab": {}, 1486 | "colab_type": "code", 1487 | "id": "7aof1BsdhvYR" 1488 | }, 1489 | "outputs": [], 1490 | "source": [ 1491 | "def read_file(path, filename):\n", 1492 | " docs = []\n", 1493 | " with open(path/filename, encoding='utf8') as f:\n", 1494 | " doc = ''\n", 1495 | " flag=False\n", 1496 | " for line in f:\n", 1497 | " if line != ' \\n' and line[1] != '=':\n", 1498 | " doc += line\n", 1499 | " flag = True\n", 1500 | " elif flag:\n", 1501 | " docs.append(doc)\n", 1502 | " doc = ''\n", 1503 | " flag = False\n", 1504 | " \n", 1505 | " return np.array(docs)" 1506 | ] 1507 | }, 1508 | { 1509 | "cell_type": "code", 1510 | "execution_count": 0, 1511 | "metadata": { 1512 | "colab": {}, 1513 | "colab_type": "code", 1514 | "id": "tgKbjkmjhvYU" 1515 | }, 1516 | "outputs": [], 1517 | "source": [ 1518 | "train_wiki_raw = read_file(PATH, 'wiki.train.tokens')\n", 1519 | "val_wiki_raw = read_file(PATH, 'wiki.valid.tokens')\n", 1520 | "test_wiki_raw = read_file(PATH, 'wiki.test.tokens')\n", 1521 | "# train_wiki_raw[0]" 1522 | ] 1523 | }, 1524 | { 1525 | "cell_type": "code", 1526 | "execution_count": 0, 1527 | "metadata": { 1528 | "colab": {}, 1529 | "colab_type": "code", 1530 | "id": "6mdhQzyphvYX" 1531 | }, 1532 | "outputs": [], 1533 | "source": [ 1534 | "def preprocess_wiki(text):\n", 1535 | " text = list(map(lambda x: x.lower(), text)); \n", 1536 | " text = list(map(lambda x: x.replace(\"\", \"UNK\"), text));\n", 1537 | " text = list(map(lambda x: x.replace(\"@.@\", \".\"), text));\n", 1538 | " text = list(map(lambda x: x.replace(\"@-@\", \"-\"), text));\n", 1539 | " text = list(map(lambda x: x.replace(\"@,@\", \",\"), text));\n", 1540 | " text = list(map(lambda x: x.replace(\"@-@\", \"-\"), text));\n", 1541 | " return text" 1542 | ] 1543 | }, 1544 | { 1545 | "cell_type": "code", 1546 | "execution_count": 0, 1547 | "metadata": { 1548 | "colab": {}, 1549 | "colab_type": "code", 1550 | "id": "BGn-5CBNhvYY", 1551 | "outputId": "fa19c1ce-59ff-4eff-e46d-5bdd1b52e8cd" 1552 | }, 1553 | "outputs": [ 1554 | { 1555 | "data": { 1556 | "text/plain": [ 1557 | "(5515, 540, 620)" 1558 | ] 1559 | }, 1560 | "execution_count": 31, 1561 | "metadata": { 1562 | "tags": [] 1563 | }, 1564 | "output_type": "execute_result" 1565 | } 1566 | ], 1567 | "source": [ 1568 | "train_wiki = preprocess_wiki(train_wiki_raw)\n", 1569 | "val_wiki = preprocess_wiki(val_wiki_raw)\n", 1570 | "test_wiki = preprocess_wiki(test_wiki_raw)\n", 1571 | "len(train_wiki), len(val_wiki), len(test_wiki)" 1572 | ] 1573 | }, 1574 | { 1575 | "cell_type": "code", 1576 | "execution_count": 0, 1577 | "metadata": { 1578 | "colab": {}, 1579 | "colab_type": "code", 1580 | "id": "6mUAQF57hvYb" 1581 | }, 1582 | "outputs": [], 1583 | "source": [ 1584 | "# print(tokenizer.tokenize(train_wiki[0]))" 1585 | ] 1586 | }, 1587 | { 1588 | "cell_type": "code", 1589 | "execution_count": 0, 1590 | "metadata": { 1591 | "colab": {}, 1592 | "colab_type": "code", 1593 | "id": "rgIu1SWohvYf", 1594 | "outputId": "fa336cf2-029d-474b-a576-402022eff0e5" 1595 | }, 1596 | "outputs": [ 1597 | { 1598 | "name": "stdout", 1599 | "output_type": "stream", 1600 | "text": [ 1601 | "CPU times: user 32.4 s, sys: 11.8 ms, total: 32.4 s\n", 1602 | "Wall time: 32.4 s\n" 1603 | ] 1604 | } 1605 | ], 1606 | "source": [ 1607 | "%%time\n", 1608 | "w1 = count_vect.fit_transform(train_wiki)\n", 1609 | "w2 = count_vect.transform(val_wiki)\n", 1610 | "w3 = count_vect.transform(test_wiki)" 1611 | ] 1612 | }, 1613 | { 1614 | "cell_type": "code", 1615 | "execution_count": 0, 1616 | "metadata": { 1617 | "colab": {}, 1618 | "colab_type": "code", 1619 | "id": "THFbMqfohvYh", 1620 | "outputId": "4cb566b8-9d11-46db-f485-4b9bbcf863a6" 1621 | }, 1622 | "outputs": [ 1623 | { 1624 | "name": "stdout", 1625 | "output_type": "stream", 1626 | "text": [ 1627 | "CPU times: user 3.65 s, sys: 961 ms, total: 4.61 s\n", 1628 | "Wall time: 4.61 s\n" 1629 | ] 1630 | } 1631 | ], 1632 | "source": [ 1633 | "%%time\n", 1634 | "X_train_w = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in w1])\n", 1635 | "X_val_w = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in w2])\n", 1636 | "X_test_w = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in w3])" 1637 | ] 1638 | }, 1639 | { 1640 | "cell_type": "code", 1641 | "execution_count": 0, 1642 | "metadata": { 1643 | "colab": {}, 1644 | "colab_type": "code", 1645 | "id": "4VARgpF-hvYj", 1646 | "outputId": "113883f0-01e4-4a5b-cfae-c4ab6d7d7ae5" 1647 | }, 1648 | "outputs": [ 1649 | { 1650 | "data": { 1651 | "text/plain": [ 1652 | "((5515, 30522), (540, 30522), (620, 30522))" 1653 | ] 1654 | }, 1655 | "execution_count": 35, 1656 | "metadata": { 1657 | "tags": [] 1658 | }, 1659 | "output_type": "execute_result" 1660 | } 1661 | ], 1662 | "source": [ 1663 | "X_train_w.shape, X_val_w.shape, X_test_w.shape" 1664 | ] 1665 | }, 1666 | { 1667 | "cell_type": "markdown", 1668 | "metadata": { 1669 | "colab_type": "text", 1670 | "id": "vVKfdu5bhvYq" 1671 | }, 1672 | "source": [ 1673 | "## wiki" 1674 | ] 1675 | }, 1676 | { 1677 | "cell_type": "code", 1678 | "execution_count": 6, 1679 | "metadata": { 1680 | "colab": {}, 1681 | "colab_type": "code", 1682 | "id": "Y6jgr6ohhvYq" 1683 | }, 1684 | "outputs": [], 1685 | "source": [ 1686 | "# model = Autoencoder(len(tokenizer.vocab)).to(device)" 1687 | ] 1688 | }, 1689 | { 1690 | "cell_type": "code", 1691 | "execution_count": 7, 1692 | "metadata": { 1693 | "colab": {}, 1694 | "colab_type": "code", 1695 | "id": "IOKSk5n0hvYs" 1696 | }, 1697 | "outputs": [], 1698 | "source": [ 1699 | "# t = torch.Tensor(X_train_w)\n", 1700 | "# t2 = torch.Tensor(X_val_w)\n", 1701 | "# tr_d = TensorDataset(t,t)\n", 1702 | "# val_d = TensorDataset(t2,t2)\n", 1703 | "# tr_dl = DataLoader(tr_d, bs, shuffle=True)\n", 1704 | "# val_dl = DataLoader(val_d, bs, shuffle=True)\n", 1705 | "# data = DataBunch(tr_dl, val_dl)" 1706 | ] 1707 | }, 1708 | { 1709 | "cell_type": "code", 1710 | "execution_count": 8, 1711 | "metadata": { 1712 | "colab": {}, 1713 | "colab_type": "code", 1714 | "id": "ig4H58A-hvYt", 1715 | "outputId": "e7494367-63a1-40c7-f940-e73f9a1afae5" 1716 | }, 1717 | "outputs": [], 1718 | "source": [ 1719 | "# learn = Learner(data=data, model=model, loss_func=custom_loss)\n", 1720 | "# if n_gpu > 1: learn.model = torch.nn.DataParallel(learn.model)" 1721 | ] 1722 | }, 1723 | { 1724 | "cell_type": "code", 1725 | "execution_count": 9, 1726 | "metadata": { 1727 | "colab": {}, 1728 | "colab_type": "code", 1729 | "id": "QdAhtm6dhvYw", 1730 | "outputId": "ceb1183c-a418-46a0-8b24-87eb28c83894" 1731 | }, 1732 | "outputs": [], 1733 | "source": [ 1734 | "# learn.lr_find()\n", 1735 | "# learn.recorder.plot()" 1736 | ] 1737 | }, 1738 | { 1739 | "cell_type": "code", 1740 | "execution_count": 10, 1741 | "metadata": { 1742 | "colab": {}, 1743 | "colab_type": "code", 1744 | "id": "DKauv4OShvYy", 1745 | "outputId": "19c56fa2-0ecf-4797-d201-942236fdfb9b" 1746 | }, 1747 | "outputs": [], 1748 | "source": [ 1749 | "# learn.fit_one_cycle(10, slice(1e-03), wd=0.1)\n", 1750 | "# learn.save('model-pretrained')" 1751 | ] 1752 | }, 1753 | { 1754 | "cell_type": "markdown", 1755 | "metadata": { 1756 | "colab_type": "text", 1757 | "id": "riAviqbmhvY2" 1758 | }, 1759 | "source": [ 1760 | "## news20" 1761 | ] 1762 | }, 1763 | { 1764 | "cell_type": "code", 1765 | "execution_count": 30, 1766 | "metadata": {}, 1767 | "outputs": [], 1768 | "source": [ 1769 | "model = Autoencoder(len(tokenizer.vocab)).to(device)" 1770 | ] 1771 | }, 1772 | { 1773 | "cell_type": "code", 1774 | "execution_count": 12, 1775 | "metadata": {}, 1776 | "outputs": [], 1777 | "source": [ 1778 | "bs=32" 1779 | ] 1780 | }, 1781 | { 1782 | "cell_type": "code", 1783 | "execution_count": 36, 1784 | "metadata": {}, 1785 | "outputs": [ 1786 | { 1787 | "data": { 1788 | "text/plain": [ 1789 | "((25000, 30522), (25000, 30522), numpy.ndarray)" 1790 | ] 1791 | }, 1792 | "execution_count": 36, 1793 | "metadata": {}, 1794 | "output_type": "execute_result" 1795 | } 1796 | ], 1797 | "source": [ 1798 | "X_train_c = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in X_train_counts])\n", 1799 | "X_val_c = np.array([np.array(np.log10(1. + c.todense())).flatten() for c in X_val_counts])\n", 1800 | "X_train_c.shape, X_val_c.shape, type(X_train_c)" 1801 | ] 1802 | }, 1803 | { 1804 | "cell_type": "code", 1805 | "execution_count": 37, 1806 | "metadata": {}, 1807 | "outputs": [ 1808 | { 1809 | "data": { 1810 | "text/plain": [ 1811 | "((48000, 30522), (2000, 30522))" 1812 | ] 1813 | }, 1814 | "execution_count": 37, 1815 | "metadata": {}, 1816 | "output_type": "execute_result" 1817 | } 1818 | ], 1819 | "source": [ 1820 | "tr = np.concatenate((X_train_c, X_val_c), axis=0); \n", 1821 | "vl = tr[48000:50000,:]\n", 1822 | "tr = tr[:48000,:]\n", 1823 | "tr.shape, vl.shape" 1824 | ] 1825 | }, 1826 | { 1827 | "cell_type": "code", 1828 | "execution_count": null, 1829 | "metadata": {}, 1830 | "outputs": [], 1831 | "source": [] 1832 | }, 1833 | { 1834 | "cell_type": "code", 1835 | "execution_count": 38, 1836 | "metadata": { 1837 | "colab": {}, 1838 | "colab_type": "code", 1839 | "id": "7JWVVefohvY3" 1840 | }, 1841 | "outputs": [], 1842 | "source": [ 1843 | "t = torch.Tensor(tr)\n", 1844 | "t2 = torch.Tensor(vl)\n", 1845 | "tr_d = TensorDataset(t,t)\n", 1846 | "val_d = TensorDataset(t2,t2)\n", 1847 | "tr_dl = DataLoader(tr_d, bs, shuffle=True)\n", 1848 | "val_dl = DataLoader(val_d, bs, shuffle=True)\n", 1849 | "data = DataBunch(tr_dl, val_dl)" 1850 | ] 1851 | }, 1852 | { 1853 | "cell_type": "code", 1854 | "execution_count": 31, 1855 | "metadata": { 1856 | "colab": {}, 1857 | "colab_type": "code", 1858 | "id": "PXov4VZghvY8" 1859 | }, 1860 | "outputs": [], 1861 | "source": [ 1862 | "learn = Learner(data=data, model=model, loss_func=custom_loss)\n", 1863 | "if n_gpu > 1: learn.model = torch.nn.DataParallel(learn.model)" 1864 | ] 1865 | }, 1866 | { 1867 | "cell_type": "code", 1868 | "execution_count": 47, 1869 | "metadata": { 1870 | "colab": {}, 1871 | "colab_type": "code", 1872 | "id": "JaL5XnevhvZA", 1873 | "outputId": "c02d8e70-c534-4f96-d769-152b8f2b0018" 1874 | }, 1875 | "outputs": [ 1876 | { 1877 | "data": { 1878 | "text/html": [], 1879 | "text/plain": [ 1880 | "" 1881 | ] 1882 | }, 1883 | "metadata": {}, 1884 | "output_type": "display_data" 1885 | }, 1886 | { 1887 | "name": "stdout", 1888 | "output_type": "stream", 1889 | "text": [ 1890 | "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n" 1891 | ] 1892 | }, 1893 | { 1894 | "data": { 1895 | "image/png": "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\n", 1896 | "text/plain": [ 1897 | "
" 1898 | ] 1899 | }, 1900 | "metadata": { 1901 | "image/png": { 1902 | "height": 263, 1903 | "width": 384 1904 | }, 1905 | "needs_background": "light" 1906 | }, 1907 | "output_type": "display_data" 1908 | } 1909 | ], 1910 | "source": [ 1911 | "learn.lr_find()\n", 1912 | "learn.recorder.plot()" 1913 | ] 1914 | }, 1915 | { 1916 | "cell_type": "code", 1917 | "execution_count": 56, 1918 | "metadata": { 1919 | "colab": {}, 1920 | "colab_type": "code", 1921 | "id": "AdKUZ1E-hvZC", 1922 | "outputId": "f376366c-ee27-4a98-c44d-13c2f1d9187d" 1923 | }, 1924 | "outputs": [ 1925 | { 1926 | "data": { 1927 | "text/html": [ 1928 | "\n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | " \n", 1959 | " \n", 1960 | " \n", 1961 | " \n", 1962 | " \n", 1963 | " \n", 1964 | " \n", 1965 | " \n", 1966 | " \n", 1967 | " \n", 1968 | " \n", 1969 | "
epochtrain_lossvalid_losstime
05.6776556.75426401:46
15.7290726.79996501:46
25.8275286.73724001:46
35.6387406.70770201:46
45.4788926.70534301:46
" 1970 | ], 1971 | "text/plain": [ 1972 | "" 1973 | ] 1974 | }, 1975 | "metadata": {}, 1976 | "output_type": "display_data" 1977 | } 1978 | ], 1979 | "source": [ 1980 | "learn.fit_one_cycle(5, slice(1e-03), wd=0.1)" 1981 | ] 1982 | }, 1983 | { 1984 | "cell_type": "code", 1985 | "execution_count": 49, 1986 | "metadata": { 1987 | "colab": {}, 1988 | "colab_type": "code", 1989 | "id": "uGCakUfjhvZE", 1990 | "outputId": "31da8f55-2ecf-477d-c3e4-94969925ab49" 1991 | }, 1992 | "outputs": [ 1993 | { 1994 | "data": { 1995 | "image/png": "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\n", 1996 | "text/plain": [ 1997 | "
" 1998 | ] 1999 | }, 2000 | "metadata": { 2001 | "image/png": { 2002 | "height": 263, 2003 | "width": 393 2004 | }, 2005 | "needs_background": "light" 2006 | }, 2007 | "output_type": "display_data" 2008 | } 2009 | ], 2010 | "source": [ 2011 | "learn.recorder.plot_losses()" 2012 | ] 2013 | }, 2014 | { 2015 | "cell_type": "code", 2016 | "execution_count": 77, 2017 | "metadata": {}, 2018 | "outputs": [], 2019 | "source": [ 2020 | "x_train_a = transform_data_with_autoencoder(learn.model.module, X_train_c)\n", 2021 | "x_val_a = transform_data_with_autoencoder(learn.model.module, X_val_c)" 2022 | ] 2023 | }, 2024 | { 2025 | "cell_type": "code", 2026 | "execution_count": 84, 2027 | "metadata": { 2028 | "colab": {}, 2029 | "colab_type": "code", 2030 | "id": "rS9FiP48hvZM", 2031 | "outputId": "f75840f9-10d6-48c8-8de6-171c7009840f" 2032 | }, 2033 | "outputs": [ 2034 | { 2035 | "name": "stderr", 2036 | "output_type": "stream", 2037 | "text": [ 2038 | "/anaconda/envs/py36/lib/python3.6/site-packages/ipykernel/__main__.py:13: UserWarning: Attempted to set non-positive left xlim on a log-scaled axis.\n", 2039 | "Invalid limit will be ignored.\n" 2040 | ] 2041 | }, 2042 | { 2043 | "data": { 2044 | "image/png": "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49lnn+XKK69k/vz5AN5XEX8URkREREQCwIIFC0hLS+Pxxx9n2rRprFixwucYT1G7v3099ctf/pKdO3dy44038tJLL2GzuQfUfP/73+eSSy7pdKzNZmPFihW89dZbPPvssyxcuJAf/ehHvW6DDH0KIyIiIhLw0h5YM9hN6Lb8ny8d7CZ0y1//+leCgoJYsWKFN4iAu77k7rvv5pFHHhnE1slQoTAiIiIiMoS5XC4efvhhn+1f+cpXSE1N9XtORUUF+fn5pKWl+a07WbBggcKI9AmFEREREZEhzOVy8ZOf/MRn+6JFi7oMI1VVVQAkJCT43Z+cnNx3DZTzmsKIiIiIBLyuhj7V1NQAEBkZOZDNOafY7Xaf2a/OJDo6GoDS0lK/+4uLi3vdLhHQ1L4iIiIiASMoKAiA1tbWfn2f2NhY0tLSOHr0KAUFBT77N2zY0K/vL+cPhRERERGRABEbG4sxhiNHjvT7e9155520trby0EMP4XK5vNtzc3P53e9+1+/vL+cHDdMSERERCRARERHMmjWL9957j1tvvZXx48cTFBTE8uXLufjii/v0ve6//37+9a9/8fLLL3PppZdyzTXXUF5ezt///neuuOIKVq1a1afvJ+cnhRERERGRAPLss89y33338frrr/P8889jWRajRo3q8zASFhZGdnY2jzzyCK+++iq/+c1vSE9PZ8WKFSxdulRhRPqEwoiIiIhIABk3bhzZ2dl+9+Xn55/VNY8dO+Z3e3R0NL/85S958sknffb5K4pftGhRj4vl5fymmhERERERERkUCiMiIiIiIjIoFEZERERERGRQKIyIiIiIiMigUBgREREREZFBoTAiIiIiIiKDQmFEREREREQGhcKIiIiIiIgMCoUREREREREZFAojIiIiIiIyKBRGRERERERkUCiMiIiIiIjIoFAYERERERGRQaEwIiIiIhIg8vPzMcZwxx13DHZTRPqEwoiIiIiIiAwKhRERERERERkUCiMiIiIiIjIoFEZEREREAtC+ffu4/vrriYuLIzw8nHnz5vHmm292OqaqqopHH32UhQsXMmrUKEJCQkhISGD58uVs2rSpy2s/99xzZGZmkpiYSHp6OrfddhuFhYUsWLAAY0x/35qcRxRGRERERALM4cOHmTNnDuXl5Xzzm9/kc5/7HNu3b2fJkiW8+OKL3uP27t3LD3/4Q2w2G0uXLuU//uM/uPrqq3nnnXeYP38+r7/+us+1f/nLX/KlL32J/Px8brnlFr70pS+xZ88e5s6dS2Vl5UDeppwH7IPdABERERHpmXfffZfvfe97PProo95td999N3PmzOGuu+5iyZIlREVFMWnSJAoLC4mPj+90/rFjx5g5cyb33Xcfixcv9m7Py8vjhz/8IfHx8ezYsYOYmBgAIiIiuOWWW3jhhRcG5gblvKEwIiIiIoFvRbTfzZED3IxuWVHV60tER0fzX//1X522XXrppdx6662sXLmSf/3rX9x+++1ER/t/LqNGjeKmm27iiSee4MiRI6SmpgLwf//3fzidTr7zne8wevRoampqADDG8POf/5yXXnqJ1tbWXrdfxEPDtEREREQCTGZmJpGRvlFrwYIFAOzcudO77YMPPuDmm29m9OjROBwOjDEYY3jiiScAOH78uPdYz3nz5s3zufaYMWMYPXp0X96GiHpGRERERAJNUlKS3+3JycmAu3Ad4F//+hc33XQToaGhXH311WRkZBAeHo7NZmPDhg1s3LiRpqYm7/me87q6flJSEvn5+X14J3K+UxgRERGRwNfF0CfPMCN/vQiBrKSkxO/24uJiAO/wrB//+MeEhISwbds2Jk2a1OnYb37zm2zcuLHTtqioKO/1p0yZ0u33FTlbGqYlIiIiEmB27NjhDVodbdiwAYDp06cDcOjQISZPnuwTRFwuF++//77P+Z7z/O0rKCjg6NGjvW26SCcKIyIiIiIBpqqqiocffrjTtm3btvHcc88RHR3NDTfcAEBaWhoHDx6ksLDQe5xlWaxYsYKcnByf695yyy3Y7XaeeOKJTsHDsix+8IMfqHhd+pyGaYmIiIgEmPnz5/OXv/yFLVu2MHfuXIqKinjxxRdxuVz86U9/8g63uu+++7jrrruYPn06n/3sZwkODuaDDz4gJyeHrKwssrOzO103IyODhx9+mAcffJCpU6dy4403EhUVxcaNGykvL2fq1Kns3r17MG5Zhij1jIiIiIgEmLFjx/Lhhx8SGxvLH//4R/7+97+TmZnJ2rVr+fznP+897pvf/CZ//etfSUlJYeXKlTz33HOMHj2aLVu2kJmZ6ffaP/jBD3jmmWcYM2YMf/vb33jmmWeYNGkSH3zwAU6n0xt0RPqCekZEREREAkRaWhqWZXn//eqrr57xnDvuuIM77rjDZ/tFF13EihUr/J5z2223cdttt3WaAKC6uprc3FymTZt2Vm0X8Uc9IyIiIiLiVVpaSktLS6dtTqeT7373uzQ2NnrrUUT6gnpGRERERMTrn//8J//1X//FokWLSEpKoqKigk2bNnHgwAGmTZvGd77zncFuogwhCiMiIiIi4jVr1izmzZvHu+++y8mTJwF3jcoPf/hDvv/97xMWFjbILZShRGFERERERLymT5/Oyy+/DAzdRSPl3KGaERERERERGRQKIyIiIiIiMigURkREREREZFAojIiIiIiIyKBQGBERERERkUGhMCIiIiIiIoNCYURERERERAaFwoiIiIiIiAwKhRERERERERkUCiMiIiIiclby8/MxxnDHHXd02n7HHXdgjCE/P/+Mx8r5TWFERERERKQH0tLSSEtLG+xmDAn2wW6AiIiIiASmkSNHsnfvXqKjowe7KRKgFEZERERE5KwEBwczceLEwW6GBLCAHKZljBlljPl/xphCY0yTMSbfGPOYMSa2h9f5rDFmgzGmyhjTYIzZY4z5gTEmpL/aLiIiInI2Nm/ejDGGG264octjJk2ahMPhoLy8nObmZn73u99x3XXXMWbMGBwOB3FxcSxatIjXXnvN7/me4Ud1dXXcf//9TJ48mfj4eMaNG8cvfvELLMvqdHxf1IEcOHCABx54gEsvvZSEhAQcDgdjxozhG9/4BseOHevx9V555RW+9KUvMX78eMLDwwkPD+eSSy7ht7/9LS6Xy+f4BQsWYIzxe62nn34aYwxPP/00ABs2bMAYQ0FBAQUFBRhjvF+nPoO3336bxYsXExcXh8PhYPz48TzwwANUVVX1+J6GsoDrGTHGZAAfAonAq8A+YCZwD7DYGDPXsqyT3bjOT4EfALXAP4Fy4HLgp8BVxpgllmW19M9diIiIiPTM7NmzmTBhAmvXruXkyZMMHz680/6PPvqIffv28dnPfpa4uDiKi4u55557uOyyy7j66qtJSEigqKiI7OxsrrvuOv73f/+Xr33taz7v09LSwrXXXkthYSFXX301QUFBrF27lgceeIDGxkYeeuihPr2vl19+mT/+8Y9ceeWVXHbZZYSEhLBnzx7+8pe/kJ2dzbZt2xg5cmS3r/fAAw9gs9mYNWsWI0eOpKqqinfeeYd77rmHrVu38uyzz551W9PS0njooYd47LHHALj33nu9+6ZNm+b9/k9/+hPf+ta3CA8P53Of+xyJiYls2LCBX/ziF2RnZ/PBBx8QExNz1u0YSgIujAB/wB1E/t2yrCc8G40xvwbuAx4B7jrdBYwxmbiDSCVwiWVZeW3bTdv17wK+A/y6P25ARERE5GzcfvvtPPjggzz//PPcfffdnfatXLnSewxAbGwsBQUFjBo1qtNxVVVVzJ07l//8z//k1ltvJSwsrNP+wsJCpk6dyrp163A6nQA88sgjjB8/nt/85jc8+OCDBAcH99k93Xbbbdx33304HI5O2998802WLFnCf//3f/Pkk092+3pr1qwhIyOj0zaXy8Wdd97JM888w913382sWbPOqq1paWmsWLHC21OyYsUKn2MKCgr493//dyIiIvjoo486DWP79re/zZNPPsl//ud/8uc///ms2jDUBFQYaesVuQbIB35/yu6HgG8AtxljvmtZVt1pLnV92+tfPEEEwLIsyxjzIO4w8m8ojIiIiASEi1ZeNNhN6LZPbv/krM+97bbb+NGPfsTKlSs7hZHm5mZeeOEFEhMTWbJkCQAOh8MniABER0fzla98he9+97ts3bqV+fPn+xzz29/+lrCwMGpqagBITEzkM5/5DM888wz79+/nwgsvPOt7OFVXvR7XXHMNU6ZM4Y033ujR9U4NIgA2m4177rmHZ555hjfeeOOsw0h3/O1vf6O5uZnvfve7PvU0jzzyCH/729949tlneeKJJ3wC2PkooMIIcGXb65uWZXUa9GdZVo0x5gPcYWU28PZprpPc9pp36g7LsiqMMRVAujFmrGVZh/ug3SIiIiK9NmrUKK666irWrVtHTk4OkydPBiA7O5vy8nLuu+8+7Pb2j3d79uzh0Ucf5d1336WoqIjGxsZO1zt+/LjPe0RHRzNu3Dif7aNHjwagoqKiL28Jy7J47rnnePrpp9m1axcVFRW0trZ694eEtJfyVlZWeodIdXTvvfd6hz2dPHmSRx99lLVr15KXl0ddXee/T/u75760Y8cOABYuXOizLzY2lunTp/Puu++yb98+pk6d2q9tCQSBFkYmtL0e6GL/QdxhZDynDyNlba9jT91hjIkBPIXwEwCFERERETln3HHHHaxbt46VK1fyi1/8AvAdogXugveFCxfidDq56qqrWL58OVFRUdhsNj7++GNeffVVmpqafK7fVS2DJ+R0DAp94T/+4z94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\n", 2045 | "text/plain": [ 2046 | "
" 2047 | ] 2048 | }, 2049 | "metadata": { 2050 | "image/png": { 2051 | "height": 265, 2052 | "width": 401 2053 | }, 2054 | "needs_background": "light" 2055 | }, 2056 | "output_type": "display_data" 2057 | } 2058 | ], 2059 | "source": [ 2060 | "hist3 = get_acc_on_samples(x_train_a, x_val_a)\n", 2061 | "plot_new_hist(hist3, \"vanilla-auto\")" 2062 | ] 2063 | }, 2064 | { 2065 | "cell_type": "markdown", 2066 | "metadata": {}, 2067 | "source": [ 2068 | "## Transformer" 2069 | ] 2070 | }, 2071 | { 2072 | "cell_type": "code", 2073 | "execution_count": 3, 2074 | "metadata": {}, 2075 | "outputs": [], 2076 | "source": [ 2077 | "def prints(s):\n", 2078 | " current_time = time.strftime(\"%Y-%m-%d-%H:%M:%S\", time.gmtime())\n", 2079 | " with open(\"logs.txt\", \"a\") as text_file:\n", 2080 | " print(f\"{current_time}: {s}\", file=text_file)\n", 2081 | " print(s)\n", 2082 | " \n", 2083 | "import copy\n", 2084 | "class EncoderDecoder(nn.Module):\n", 2085 | " \"\"\"\n", 2086 | " A standard Encoder-Decoder architecture. Base for this and many \n", 2087 | " other models.\n", 2088 | " \"\"\"\n", 2089 | " def __init__(self, encoder, decoder, src_embed, tgt_embed, generator):\n", 2090 | " super(EncoderDecoder, self).__init__()\n", 2091 | " self.encoder = encoder\n", 2092 | " self.decoder = decoder\n", 2093 | " self.src_embed = src_embed\n", 2094 | " self.tgt_embed = tgt_embed\n", 2095 | " self.generator = generator\n", 2096 | " \n", 2097 | " def forward(self, src, tgt, src_mask, tgt_mask):\n", 2098 | " \"Take in and process masked src and target sequences.\"\n", 2099 | " return self.decode(self.encode(src, src_mask), src_mask,\n", 2100 | " tgt, tgt_mask)\n", 2101 | " \n", 2102 | " def encode(self, src, src_mask):\n", 2103 | " return self.encoder(self.src_embed(src), src_mask)\n", 2104 | " \n", 2105 | " def decode(self, memory, src_mask, tgt, tgt_mask):\n", 2106 | " return self.decoder(self.tgt_embed(tgt), memory, src_mask, tgt_mask)\n", 2107 | " \n", 2108 | "class Generator(nn.Module):\n", 2109 | " \"Define standard linear + softmax generation step.\"\n", 2110 | " def __init__(self, d_model, vocab):\n", 2111 | " super(Generator, self).__init__()\n", 2112 | " self.proj = nn.Linear(d_model, vocab)\n", 2113 | "\n", 2114 | " def forward(self, x):\n", 2115 | " return F.log_softmax(self.proj(x), dim=-1)\n", 2116 | " \n", 2117 | "def clones(module, N):\n", 2118 | " \"Produce N identical layers.\"\n", 2119 | " return nn.ModuleList([copy.deepcopy(module) for _ in range(N)])\n", 2120 | " \n", 2121 | "class Encoder(nn.Module):\n", 2122 | " \"Core encoder is a stack of N layers\"\n", 2123 | " def __init__(self, layer, N):\n", 2124 | " super(Encoder, self).__init__()\n", 2125 | " self.layers = clones(layer, N)\n", 2126 | " self.norm = LayerNorm(layer.size)\n", 2127 | " \n", 2128 | " def forward(self, x, mask):\n", 2129 | " \"Pass the input (and mask) through each layer in turn.\"\n", 2130 | " for layer in self.layers:\n", 2131 | " x = layer(x, mask)\n", 2132 | " res = self.norm(x) # ([30, 10, 512])\n", 2133 | " res = res[:,0].unsqueeze_(1).expand(res.size()) # ([30, 10, 512])\n", 2134 | " return res\n", 2135 | " \n", 2136 | "class LayerNorm(nn.Module):\n", 2137 | " \"Construct a layernorm module (See citation for details).\"\n", 2138 | " def __init__(self, features, eps=1e-6):\n", 2139 | " super(LayerNorm, self).__init__()\n", 2140 | " self.a_2 = nn.Parameter(torch.ones(features))\n", 2141 | " self.b_2 = nn.Parameter(torch.zeros(features))\n", 2142 | " self.eps = eps\n", 2143 | "\n", 2144 | " def forward(self, x):\n", 2145 | " mean = x.mean(-1, keepdim=True)\n", 2146 | " std = x.std(-1, keepdim=True)\n", 2147 | " return self.a_2 * (x - mean) / (std + self.eps) + self.b_2\n", 2148 | " \n", 2149 | "class SublayerConnection(nn.Module):\n", 2150 | " \"\"\"\n", 2151 | " A residual connection followed by a layer norm.\n", 2152 | " Note for code simplicity the norm is first as opposed to last.\n", 2153 | " \"\"\"\n", 2154 | " def __init__(self, size, dropout):\n", 2155 | " super(SublayerConnection, self).__init__()\n", 2156 | " self.norm = LayerNorm(size)\n", 2157 | " self.dropout = nn.Dropout(dropout)\n", 2158 | "\n", 2159 | " def forward(self, x, sublayer):\n", 2160 | " \"Apply residual connection to any sublayer with the same size.\"\n", 2161 | " return x + self.dropout(sublayer(self.norm(x)))\n", 2162 | " \n", 2163 | "class EncoderLayer(nn.Module):\n", 2164 | " \"Encoder is made up of self-attn and feed forward (defined below)\"\n", 2165 | " def __init__(self, size, self_attn, feed_forward, dropout):\n", 2166 | " super(EncoderLayer, self).__init__()\n", 2167 | " self.self_attn = self_attn\n", 2168 | " self.feed_forward = feed_forward\n", 2169 | " self.sublayer = clones(SublayerConnection(size, dropout), 2)\n", 2170 | " self.size = size\n", 2171 | "\n", 2172 | " def forward(self, x, mask):\n", 2173 | " \"Follow Figure 1 (left) for connections.\"\n", 2174 | " x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, mask))\n", 2175 | " return self.sublayer[1](x, self.feed_forward)\n", 2176 | " \n", 2177 | "class Decoder(nn.Module):\n", 2178 | " \"Generic N layer decoder with masking.\"\n", 2179 | " def __init__(self, layer, N):\n", 2180 | " super(Decoder, self).__init__()\n", 2181 | " self.layers = clones(layer, N)\n", 2182 | " self.norm = LayerNorm(layer.size)\n", 2183 | " \n", 2184 | " def forward(self, x, memory, src_mask, tgt_mask):\n", 2185 | " for layer in self.layers:\n", 2186 | " x = layer(x, memory, src_mask, tgt_mask)\n", 2187 | " return self.norm(x)\n", 2188 | " \n", 2189 | "class DecoderLayer(nn.Module):\n", 2190 | " \"Decoder is made of self-attn, src-attn, and feed forward (defined below)\"\n", 2191 | " def __init__(self, size, self_attn, src_attn, feed_forward, dropout):\n", 2192 | " super(DecoderLayer, self).__init__()\n", 2193 | " self.size = size\n", 2194 | " self.self_attn = self_attn\n", 2195 | " self.src_attn = src_attn\n", 2196 | " self.feed_forward = feed_forward\n", 2197 | " self.sublayer = clones(SublayerConnection(size, dropout), 3)\n", 2198 | " \n", 2199 | " def forward(self, x, memory, src_mask, tgt_mask):\n", 2200 | " \"Follow Figure 1 (right) for connections.\"\n", 2201 | " m = memory\n", 2202 | " x = self.sublayer[0](x, lambda x: self.self_attn(x, x, x, tgt_mask))\n", 2203 | " x = self.sublayer[1](x, lambda x: self.src_attn(x, m, m, src_mask))\n", 2204 | " return self.sublayer[2](x, self.feed_forward)\n", 2205 | "\n", 2206 | "def subsequent_mask(size):\n", 2207 | " \"Mask out subsequent positions.\"\n", 2208 | " attn_shape = (1, size, size)\n", 2209 | " subsequent_mask = np.triu(np.ones(attn_shape), k=1).astype('uint8')\n", 2210 | " return torch.from_numpy(subsequent_mask) == 0\n", 2211 | " \n", 2212 | "def attention(query, key, value, mask=None, dropout=None):\n", 2213 | " \"Compute 'Scaled Dot Product Attention'\"\n", 2214 | " d_k = query.size(-1)\n", 2215 | " scores = torch.matmul(query, key.transpose(-2, -1)) \\\n", 2216 | " / math.sqrt(d_k)\n", 2217 | " if mask is not None:\n", 2218 | " scores = scores.masked_fill(mask == 0, -1e9)\n", 2219 | " p_attn = F.softmax(scores, dim = -1)\n", 2220 | " if dropout is not None:\n", 2221 | " p_attn = dropout(p_attn)\n", 2222 | " return torch.matmul(p_attn, value), p_attn\n", 2223 | " \n", 2224 | "class MultiHeadedAttention(nn.Module):\n", 2225 | " def __init__(self, h, d_model, dropout=0.1):\n", 2226 | " \"Take in model size and number of heads.\"\n", 2227 | " super(MultiHeadedAttention, self).__init__()\n", 2228 | " assert d_model % h == 0\n", 2229 | " # We assume d_v always equals d_k\n", 2230 | " self.d_k = d_model // h\n", 2231 | " self.h = h\n", 2232 | " self.linears = clones(nn.Linear(d_model, d_model), 4)\n", 2233 | " self.attn = None\n", 2234 | " self.dropout = nn.Dropout(p=dropout)\n", 2235 | " \n", 2236 | " def forward(self, query, key, value, mask=None):\n", 2237 | " \"Implements Figure 2\"\n", 2238 | " if mask is not None:\n", 2239 | " # Same mask applied to all h heads.\n", 2240 | " mask = mask.unsqueeze(1)\n", 2241 | " nbatches = query.size(0)\n", 2242 | " \n", 2243 | " # 1) Do all the linear projections in batch from d_model => h x d_k \n", 2244 | " query, key, value = \\\n", 2245 | " [l(x).view(nbatches, -1, self.h, self.d_k).transpose(1, 2)\n", 2246 | " for l, x in zip(self.linears, (query, key, value))]\n", 2247 | " \n", 2248 | " # 2) Apply attention on all the projected vectors in batch. \n", 2249 | " x, self.attn = attention(query, key, value, mask=mask, \n", 2250 | " dropout=self.dropout)\n", 2251 | " \n", 2252 | " # 3) \"Concat\" using a view and apply a final linear. \n", 2253 | " x = x.transpose(1, 2).contiguous() \\\n", 2254 | " .view(nbatches, -1, self.h * self.d_k)\n", 2255 | " return self.linears[-1](x)\n", 2256 | " \n", 2257 | "class PositionwiseFeedForward(nn.Module):\n", 2258 | " \"Implements FFN equation.\"\n", 2259 | " def __init__(self, d_model, d_ff, dropout=0.1):\n", 2260 | " super(PositionwiseFeedForward, self).__init__()\n", 2261 | " self.w_1 = nn.Linear(d_model, d_ff)\n", 2262 | " self.w_2 = nn.Linear(d_ff, d_model)\n", 2263 | " self.dropout = nn.Dropout(dropout)\n", 2264 | "\n", 2265 | " def forward(self, x):\n", 2266 | " return self.w_2(self.dropout(F.relu(self.w_1(x))))\n", 2267 | "\n", 2268 | "class Embeddings(nn.Module):\n", 2269 | " def __init__(self, d_model, vocab):\n", 2270 | " super(Embeddings, self).__init__()\n", 2271 | " self.lut = nn.Embedding(vocab, d_model)\n", 2272 | " self.d_model = d_model\n", 2273 | "\n", 2274 | " def forward(self, x):\n", 2275 | " return self.lut(x) * math.sqrt(self.d_model)\n", 2276 | " \n", 2277 | "class PositionalEncoding(nn.Module):\n", 2278 | " \"Implement the PE function.\"\n", 2279 | " def __init__(self, d_model, dropout, max_len=5000):\n", 2280 | " super(PositionalEncoding, self).__init__()\n", 2281 | " self.dropout = nn.Dropout(p=dropout)\n", 2282 | " \n", 2283 | " # Compute the positional encodings once in log space.\n", 2284 | " pe = torch.zeros(max_len, d_model)\n", 2285 | " position = torch.arange(0., max_len).unsqueeze(1)\n", 2286 | " div_term = torch.exp(torch.arange(0., d_model, 2) * -(math.log(10000.0) / d_model))\n", 2287 | " pe[:, 0::2] = torch.sin(position * div_term)\n", 2288 | " pe[:, 1::2] = torch.cos(position * div_term)\n", 2289 | " pe = pe.unsqueeze(0)\n", 2290 | " self.register_buffer('pe', pe)\n", 2291 | " \n", 2292 | " def forward(self, x):\n", 2293 | " x = x + Variable(self.pe[:, :x.size(1)], \n", 2294 | " requires_grad=False)\n", 2295 | " return self.dropout(x)\n", 2296 | "\n", 2297 | "def make_model(src_vocab, tgt_vocab, N=6, \n", 2298 | " d_model=512, d_ff=2048, h=8, dropout=0.1):\n", 2299 | " \"Helper: Construct a model from hyperparameters.\"\n", 2300 | " c = copy.deepcopy\n", 2301 | " attn = MultiHeadedAttention(h, d_model)\n", 2302 | " ff = PositionwiseFeedForward(d_model, d_ff, dropout)\n", 2303 | " position = PositionalEncoding(d_model, dropout)\n", 2304 | " model = EncoderDecoder(\n", 2305 | " Encoder(EncoderLayer(d_model, c(attn), c(ff), dropout), N),\n", 2306 | " Decoder(DecoderLayer(d_model, c(attn), c(attn), \n", 2307 | " c(ff), dropout), N),\n", 2308 | " nn.Sequential(Embeddings(d_model, src_vocab), c(position)),\n", 2309 | " nn.Sequential(Embeddings(d_model, tgt_vocab), c(position)),\n", 2310 | " Generator(d_model, tgt_vocab))\n", 2311 | " \n", 2312 | " # This was important from their code. \n", 2313 | " # Initialize parameters with Glorot / fan_avg.\n", 2314 | " for p in model.parameters():\n", 2315 | " if p.dim() > 1:\n", 2316 | " nn.init.xavier_uniform_(p)\n", 2317 | " return model\n", 2318 | "\n", 2319 | "class Batch:\n", 2320 | " \"Object for holding a batch of data with mask during training.\"\n", 2321 | " def __init__(self, src, trg=None, pad=0):\n", 2322 | " self.src = src\n", 2323 | " self.src_mask = (src != pad).unsqueeze(-2)\n", 2324 | " if trg is not None:\n", 2325 | " self.trg = trg[:, :-1]\n", 2326 | " self.trg_y = trg[:, 1:]\n", 2327 | " self.trg_mask = \\\n", 2328 | " self.make_std_mask(self.trg, pad)\n", 2329 | " self.ntokens = (self.trg_y != pad).data.sum()\n", 2330 | " \n", 2331 | " @staticmethod\n", 2332 | " def make_std_mask(tgt, pad):\n", 2333 | " \"Create a mask to hide padding and future words.\"\n", 2334 | " tgt_mask = (tgt != pad).unsqueeze(-2)\n", 2335 | " tgt_mask = tgt_mask & Variable(\n", 2336 | " subsequent_mask(tgt.size(-1)).type_as(tgt_mask.data))\n", 2337 | " return tgt_mask\n", 2338 | " \n", 2339 | "class MyIterator(data.Iterator):\n", 2340 | " def create_batches(self):\n", 2341 | " if self.train:\n", 2342 | " def pool(d, random_shuffler):\n", 2343 | " for p in data.batch(d, self.batch_size * 100):\n", 2344 | " p_batch = data.batch(\n", 2345 | " sorted(p, key=self.sort_key),\n", 2346 | " self.batch_size, self.batch_size_fn)\n", 2347 | " for b in random_shuffler(list(p_batch)):\n", 2348 | " yield b\n", 2349 | " self.batches = pool(self.data(), self.random_shuffler)\n", 2350 | " \n", 2351 | " else:\n", 2352 | " self.batches = []\n", 2353 | " for b in data.batch(self.data(), self.batch_size,\n", 2354 | " self.batch_size_fn):\n", 2355 | " self.batches.append(sorted(b, key=self.sort_key))\n", 2356 | " \n", 2357 | "global max_src_in_batch\n", 2358 | "def batch_size_fn(new, count, sofar):\n", 2359 | " \"Keep augmenting batch and calculate total number of tokens + padding.\"\n", 2360 | " global max_src_in_batch\n", 2361 | " if count == 1:\n", 2362 | " max_src_in_batch = 0\n", 2363 | " max_src_in_batch = max(max_src_in_batch, len(new.text)+2)\n", 2364 | " src_elements = count * max_src_in_batch\n", 2365 | " return src_elements\n", 2366 | "\n", 2367 | "def run_epoch(data_iter, model, loss_compute):\n", 2368 | " \"Standard Training and Logging Function\"\n", 2369 | " start = time.time()\n", 2370 | " total_tokens = 0\n", 2371 | " total_loss = 0\n", 2372 | " tokens = 0\n", 2373 | " for i, batch in enumerate(data_iter):\n", 2374 | " out = model.forward(batch.src, batch.trg, \n", 2375 | " batch.src_mask, batch.trg_mask)\n", 2376 | " loss = loss_compute(out, batch.trg_y, batch.ntokens)\n", 2377 | " total_loss += loss\n", 2378 | " total_tokens += batch.ntokens\n", 2379 | " tokens += batch.ntokens\n", 2380 | " if i % 100 == 1:\n", 2381 | " elapsed = time.time() - start\n", 2382 | " s = \"Epoch Step: %d Loss: %f Tokens per Sec: %f\" % (i, loss / batch.ntokens, tokens / elapsed)\n", 2383 | " start = time.time()\n", 2384 | " prints(s)\n", 2385 | " tokens = 0\n", 2386 | " return total_loss / total_tokens\n", 2387 | "\n", 2388 | "class NoamOpt:\n", 2389 | " \"Optim wrapper that implements rate.\"\n", 2390 | " def __init__(self, model_size, factor, warmup, optimizer):\n", 2391 | " self.optimizer = optimizer\n", 2392 | " self._step = 0\n", 2393 | " self.warmup = warmup\n", 2394 | " self.factor = factor\n", 2395 | " self.model_size = model_size\n", 2396 | " self._rate = 0\n", 2397 | " \n", 2398 | " def step(self):\n", 2399 | " \"Update parameters and rate\"\n", 2400 | " self._step += 1\n", 2401 | " rate = self.rate()\n", 2402 | " for p in self.optimizer.param_groups:\n", 2403 | " p['lr'] = rate\n", 2404 | " self._rate = rate\n", 2405 | " self.optimizer.step()\n", 2406 | " \n", 2407 | " def rate(self, step = None):\n", 2408 | " \"Implement `lrate` above\"\n", 2409 | " if step is None:\n", 2410 | " step = self._step\n", 2411 | " return self.factor * \\\n", 2412 | " (self.model_size ** (-0.5) *\n", 2413 | " min(step ** (-0.5), step * self.warmup ** (-1.5)))\n", 2414 | " \n", 2415 | "def get_std_opt(model):\n", 2416 | " return NoamOpt(model.src_embed[0].d_model, 2, 4000,\n", 2417 | " torch.optim.Adam(model.parameters(), lr=0, betas=(0.9, 0.98), eps=1e-9))\n", 2418 | " \n", 2419 | "class LabelSmoothing(nn.Module):\n", 2420 | " \"Implement label smoothing.\"\n", 2421 | " def __init__(self, size, padding_idx, smoothing=0.0):\n", 2422 | " super(LabelSmoothing, self).__init__()\n", 2423 | " self.criterion = nn.KLDivLoss(reduction='sum')\n", 2424 | " self.padding_idx = padding_idx\n", 2425 | " self.confidence = 1.0 - smoothing\n", 2426 | " self.smoothing = smoothing\n", 2427 | " self.size = size\n", 2428 | " self.true_dist = None\n", 2429 | " \n", 2430 | " def forward(self, x, target):\n", 2431 | " assert x.size(1) == self.size\n", 2432 | " true_dist = x.data.clone()\n", 2433 | " true_dist.fill_(self.smoothing / (self.size - 2))\n", 2434 | " true_dist.scatter_(1, target.data.unsqueeze(1), self.confidence)\n", 2435 | " true_dist[:, self.padding_idx] = 0\n", 2436 | " mask = torch.nonzero(target.data == self.padding_idx)\n", 2437 | " if mask.dim() > 0:\n", 2438 | " true_dist.index_fill_(0, mask.squeeze(), 0.0)\n", 2439 | " self.true_dist = true_dist\n", 2440 | " return self.criterion(x, Variable(true_dist, requires_grad=False))\n", 2441 | "\n", 2442 | "class SimpleLossCompute:\n", 2443 | " \"A simple loss compute and train function.\"\n", 2444 | " def __init__(self, generator, criterion, opt=None):\n", 2445 | " self.generator = generator\n", 2446 | " self.criterion = criterion\n", 2447 | " self.opt = opt\n", 2448 | " \n", 2449 | " def __call__(self, x, y, norm):\n", 2450 | " x = self.generator(x)\n", 2451 | " loss = self.criterion(x.contiguous().view(-1, x.size(-1)), \n", 2452 | " y.contiguous().view(-1)) / norm\n", 2453 | " loss.backward()\n", 2454 | " if self.opt is not None:\n", 2455 | " self.opt.step()\n", 2456 | " self.opt.optimizer.zero_grad()\n", 2457 | " return loss * norm\n", 2458 | "\n", 2459 | "class MultiGPULossCompute:\n", 2460 | " \"A multi-gpu loss compute and train function.\"\n", 2461 | " def __init__(self, generator, criterion, devices, opt=None, chunk_size=5):\n", 2462 | " # Send out to different gpus.\n", 2463 | " self.generator = generator\n", 2464 | " self.criterion = nn.parallel.replicate(criterion, \n", 2465 | " devices=devices)\n", 2466 | " self.opt = opt\n", 2467 | " self.devices = devices\n", 2468 | " self.chunk_size = chunk_size\n", 2469 | " \n", 2470 | " def __call__(self, out, targets, normalize):\n", 2471 | " total = 0.0\n", 2472 | " out_scatter = nn.parallel.scatter(out, self.devices)\n", 2473 | " generator = nn.parallel.replicate(self.generator, list(range(len(out_scatter))))\n", 2474 | " out_grad = [[] for _ in out_scatter]\n", 2475 | " targets = nn.parallel.scatter(targets, \n", 2476 | " target_gpus=self.devices)\n", 2477 | " \n", 2478 | " # Divide generating into chunks.\n", 2479 | " chunk_size = self.chunk_size\n", 2480 | " for i in range(0, out_scatter[0].size(1), chunk_size):\n", 2481 | " # Predict distributions\n", 2482 | " out_column = [[Variable(o[:, i:i+chunk_size].data, \n", 2483 | " requires_grad=self.opt is not None)] \n", 2484 | " for o in out_scatter]\n", 2485 | " \n", 2486 | " gen = nn.parallel.parallel_apply(generator, out_column)\n", 2487 | "\n", 2488 | " # Compute loss. \n", 2489 | " y = [(g.contiguous().view(-1, g.size(-1)), \n", 2490 | " t[:, i:i+chunk_size].contiguous().view(-1)) \n", 2491 | " for g, t in zip(gen, targets)]\n", 2492 | " loss = nn.parallel.parallel_apply(self.criterion[:len(out_scatter)], y) \n", 2493 | " l = nn.parallel.gather(loss, \n", 2494 | " target_device=self.devices[0])\n", 2495 | " l = l.sum() / normalize\n", 2496 | " total += l.data\n", 2497 | "\n", 2498 | " # Backprop loss to output of transformer\n", 2499 | " if self.opt is not None:\n", 2500 | " l.backward()\n", 2501 | " for j, l in enumerate(loss):\n", 2502 | " out_grad[j].append(out_column[j][0].grad.data.clone())\n", 2503 | "\n", 2504 | " # Backprop all loss through transformer. \n", 2505 | " if self.opt is not None:\n", 2506 | " out_grad = [Variable(torch.cat(og, dim=1)) for og in out_grad]\n", 2507 | " o1 = out\n", 2508 | " o2 = nn.parallel.gather(out_grad, \n", 2509 | " target_device=self.devices[0])\n", 2510 | " o1.backward(gradient=o2)\n", 2511 | " self.opt.step()\n", 2512 | " self.opt.optimizer.zero_grad()\n", 2513 | " return total * normalize\n", 2514 | "\n", 2515 | "def greedy_decode(model, src, src_mask, max_len, start_symbol):\n", 2516 | " memory = model.encode(src, src_mask)\n", 2517 | " ys = torch.ones(1, 1).fill_(start_symbol).type_as(src.data)\n", 2518 | " for i in range(max_len-1):\n", 2519 | " out = model.decode(memory, src_mask, \n", 2520 | " Variable(ys), \n", 2521 | " Variable(subsequent_mask(ys.size(1))\n", 2522 | " .type_as(src.data)))\n", 2523 | " prob = model.generator(out[:, -1])\n", 2524 | " _, next_word = torch.max(prob, dim = 1)\n", 2525 | " next_word = next_word.data[0]\n", 2526 | " ys = torch.cat([ys, \n", 2527 | " torch.ones(1, 1).type_as(src.data).fill_(next_word)], dim=1)\n", 2528 | " return ys\n", 2529 | " \n", 2530 | "def test_quality(model):\n", 2531 | " l = sum(1 for _ in valid_iter)\n", 2532 | " for i, batch in islice(enumerate(valid_iter), l-4, l-1):\n", 2533 | " print(\"True:\", end=\"\\t\")\n", 2534 | " for i in range(1, batch.text.size(1)):\n", 2535 | " sym = TEXT.vocab.itos[batch.text.data[0, i]]\n", 2536 | " print(sym, end =\" \")\n", 2537 | " if sym == \"[SEP]\": break\n", 2538 | " print()\n", 2539 | "\n", 2540 | " src = batch.text[:1]\n", 2541 | " src_mask = (src != TEXT.vocab.stoi[\"[PAD]\"]).unsqueeze(-2)\n", 2542 | " out = greedy_decode(model, src, src_mask, \n", 2543 | " max_len=256, start_symbol=TEXT.vocab.stoi[\"[CLS]\"])\n", 2544 | " print(\"Predicted:\", end=\"\\t\")\n", 2545 | " for i in range(1, out.size(1)):\n", 2546 | " sym = TEXT.vocab.itos[out[0, i]]\n", 2547 | " print(sym, end =\" \")\n", 2548 | " if sym == \"[SEP]\": break\n", 2549 | " print()\n", 2550 | " print(\"------------------------------\")\n", 2551 | " \n", 2552 | "def data_gen(V, batch, nbatches):\n", 2553 | " \"Generate random data for a src-tgt copy task.\"\n", 2554 | " for i in range(nbatches):\n", 2555 | " data = torch.from_numpy(np.random.randint(1, V, size=(batch, 10)))\n", 2556 | " data[:, 0] = 1\n", 2557 | " src = Variable(data, requires_grad=False)\n", 2558 | " tgt = Variable(data, requires_grad=False)\n", 2559 | " yield Batch(src, tgt, 0)\n", 2560 | " \n", 2561 | "def plot_lengths(dataset):\n", 2562 | " plt.hist([len(e.text) for e in dataset.examples], bins=100, range=(0, 1000))\n", 2563 | " " 2564 | ] 2565 | }, 2566 | { 2567 | "cell_type": "code", 2568 | "execution_count": 5, 2569 | "metadata": {}, 2570 | "outputs": [], 2571 | "source": [ 2572 | "# V = 11\n", 2573 | "# criterion = LabelSmoothing(size=V, padding_idx=0, smoothing=0.0)\n", 2574 | "# model = make_model(V, V, N=2)\n", 2575 | "# model_opt = NoamOpt(model.src_embed[0].d_model, 1, 400,\n", 2576 | "# torch.optim.Adam(model.parameters(), lr=0, betas=(0.9, 0.98), eps=1e-9))\n", 2577 | "\n", 2578 | "# for epoch in range(2):\n", 2579 | "# model.train()\n", 2580 | "# run_epoch(data_gen(V, 30, 20), model, \n", 2581 | "# SimpleLossCompute(model.generator, criterion, model_opt))\n", 2582 | "# model.eval()\n", 2583 | "# print(run_epoch(data_gen(V, 30, 5), model, \n", 2584 | "# SimpleLossCompute(model.generator, criterion, None)))" 2585 | ] 2586 | }, 2587 | { 2588 | "cell_type": "code", 2589 | "execution_count": 4, 2590 | "metadata": {}, 2591 | "outputs": [ 2592 | { 2593 | "data": { 2594 | "text/plain": [ 2595 | "22365" 2596 | ] 2597 | }, 2598 | "execution_count": 4, 2599 | "metadata": {}, 2600 | "output_type": "execute_result" 2601 | }, 2602 | { 2603 | "data": { 2604 | "image/png": "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\n", 2605 | "text/plain": [ 2606 | "
" 2607 | ] 2608 | }, 2609 | "metadata": { 2610 | "image/png": { 2611 | "height": 250, 2612 | "width": 383 2613 | }, 2614 | "needs_background": "light" 2615 | }, 2616 | "output_type": "display_data" 2617 | } 2618 | ], 2619 | "source": [ 2620 | "MAX_LEN = 512\n", 2621 | "TEXT = data.Field(tokenize=tokenizer.tokenize, \n", 2622 | " batch_first=True,\n", 2623 | " init_token='[CLS]',\n", 2624 | " eos_token='[SEP]', \n", 2625 | " pad_token='[PAD]',\n", 2626 | " unk_token='[UNK]', \n", 2627 | " preprocessing=lambda x: x[0:MAX_LEN-2])\n", 2628 | "LABEL = data.Field(sequential=False)\n", 2629 | "\n", 2630 | "train, val = datasets.IMDB.splits(text_field=TEXT, \n", 2631 | " label_field=LABEL)\n", 2632 | "\n", 2633 | "MIN_FREQ = 3\n", 2634 | "TEXT.build_vocab(train, min_freq=MIN_FREQ)\n", 2635 | "LABEL.build_vocab(train)\n", 2636 | "\n", 2637 | "plot_lengths(train)\n", 2638 | "len(TEXT.vocab) # 22365" 2639 | ] 2640 | }, 2641 | { 2642 | "cell_type": "code", 2643 | "execution_count": 13, 2644 | "metadata": {}, 2645 | "outputs": [], 2646 | "source": [ 2647 | "orig_train_examples = copy.deepcopy(train.examples)\n", 2648 | "orig_val_examples = copy.deepcopy(val.examples)" 2649 | ] 2650 | }, 2651 | { 2652 | "cell_type": "code", 2653 | "execution_count": 9, 2654 | "metadata": {}, 2655 | "outputs": [], 2656 | "source": [ 2657 | "def get_auto_datasets(size=512):\n", 2658 | " tr = [ex for ex in orig_train_examples if len(ex.text) < size-1]\n", 2659 | " vl = [ex for ex in orig_val_examples if len(ex.text) < size-1]\n", 2660 | " exs = tr + vl\n", 2661 | " X_tr, X_vl = train_test_split(exs, test_size=0.1, random_state=42)\n", 2662 | " train.examples = X_tr\n", 2663 | " val.examples = X_vl\n", 2664 | " return train, val" 2665 | ] 2666 | }, 2667 | { 2668 | "cell_type": "code", 2669 | "execution_count": 11, 2670 | "metadata": {}, 2671 | "outputs": [ 2672 | { 2673 | "data": { 2674 | "text/plain": [ 2675 | "(3312, 368)" 2676 | ] 2677 | }, 2678 | "execution_count": 11, 2679 | "metadata": {}, 2680 | "output_type": "execute_result" 2681 | }, 2682 | { 2683 | "data": { 2684 | "image/png": "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\n", 2685 | "text/plain": [ 2686 | "
" 2687 | ] 2688 | }, 2689 | "metadata": { 2690 | "image/png": { 2691 | "height": 250, 2692 | "width": 377 2693 | }, 2694 | "needs_background": "light" 2695 | }, 2696 | "output_type": "display_data" 2697 | } 2698 | ], 2699 | "source": [ 2700 | "f_train, f_val = get_auto_datasets(100)\n", 2701 | "plot_lengths(f_train)\n", 2702 | "plot_lengths(f_val)\n", 2703 | "len(f_train), len(f_val)" 2704 | ] 2705 | }, 2706 | { 2707 | "cell_type": "code", 2708 | "execution_count": 8, 2709 | "metadata": {}, 2710 | "outputs": [], 2711 | "source": [ 2712 | "pad_idx = TEXT.vocab.stoi[\"[PAD]\"]\n", 2713 | "\n", 2714 | "criterion = LabelSmoothing(size=len(TEXT.vocab), padding_idx=pad_idx, smoothing=0.1)\n", 2715 | "criterion.to(device)\n", 2716 | "\n", 2717 | "model = torch.load('./trauto_2019-05-14-01:21:08_520.pth')\n", 2718 | "# model = make_model(len(TEXT.vocab), len(TEXT.vocab), N=6)\n", 2719 | "model.to(device) \n", 2720 | "if n_gpu > 1: \n", 2721 | " model_par = nn.DataParallel(model).to(device)\n", 2722 | "\n", 2723 | "model_opt = NoamOpt(model.src_embed[0].d_model, 1, 2000,\n", 2724 | " torch.optim.Adam(model.parameters(), lr=0, betas=(0.9, 0.98), eps=1e-9))" 2725 | ] 2726 | }, 2727 | { 2728 | "cell_type": "code", 2729 | "execution_count": 13, 2730 | "metadata": {}, 2731 | "outputs": [], 2732 | "source": [ 2733 | "BATCH_SIZE = 10000\n", 2734 | "train_iter = MyIterator(f_train, batch_size=BATCH_SIZE, device=device,\n", 2735 | " repeat=False, sort_key=lambda x: (len(x.text)),\n", 2736 | " batch_size_fn=batch_size_fn, train=True)\n", 2737 | "valid_iter = MyIterator(f_val, batch_size=BATCH_SIZE, device=device,\n", 2738 | " repeat=False, sort_key=lambda x: (len(x.text)),\n", 2739 | " batch_size_fn=batch_size_fn, train=False)" 2740 | ] 2741 | }, 2742 | { 2743 | "cell_type": "code", 2744 | "execution_count": 5, 2745 | "metadata": {}, 2746 | "outputs": [], 2747 | "source": [ 2748 | "tr_losses = []\n", 2749 | "vl_losses = []" 2750 | ] 2751 | }, 2752 | { 2753 | "cell_type": "code", 2754 | "execution_count": 9, 2755 | "metadata": {}, 2756 | "outputs": [ 2757 | { 2758 | "name": "stdout", 2759 | "output_type": "stream", 2760 | "text": [ 2761 | "Epoch: 1\n" 2762 | ] 2763 | }, 2764 | { 2765 | "name": "stderr", 2766 | "output_type": "stream", 2767 | "text": [ 2768 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/nn/parallel/_functions.py:61: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n", 2769 | " warnings.warn('Was asked to gather along dimension 0, but all '\n" 2770 | ] 2771 | }, 2772 | { 2773 | "name": "stdout", 2774 | "output_type": "stream", 2775 | "text": [ 2776 | "Epoch Step: 1 Loss: 1.378235 Tokens per Sec: 1592.000000\n", 2777 | "Epoch Step: 101 Loss: 1.870785 Tokens per Sec: 6227.000000\n", 2778 | "Epoch Step: 301 Loss: 1.819553 Tokens per Sec: 6266.000000\n", 2779 | "Epoch Step: 401 Loss: 1.803898 Tokens per Sec: 6214.000000\n", 2780 | "Epoch Step: 501 Loss: 3.167712 Tokens per Sec: 6162.000000\n", 2781 | "Epoch Step: 601 Loss: 2.758060 Tokens per Sec: 6205.000000\n", 2782 | "Epoch Step: 701 Loss: 1.498593 Tokens per Sec: 6217.000000\n", 2783 | "Epoch Step: 801 Loss: 1.354508 Tokens per Sec: 6194.000000\n", 2784 | "True:\tjohn wayne is without a doubt one of the most popular and loved actors of all time . his career stretched over forty years , and within that time he starred in films such as \" angel and the bad ##man \" , \" the green be ##ret ##s \" , \" sands of i ##wo jim ##a \" , \" rio bravo \" , \" north to alaska \" , and \" the [UNK] \" . < br / > < br / > the film ' s listed above are hailed as some of his best , unlike this 1934 effort \" randy rides alone \" , which has been pretty much forgotten about as time ' s gone on , which is un ##sur ##pr ##ising , as it ' s nothing memorable apart from its very short running time of just 53 minutes . < br / > < br / > a young john wayne plays randy bow ##ers , who for reasons never really explained , arrives at a saloon in the middle of nowhere and finds that everyone inside has been killed . while looking around , a posse arrives and finds randy there and they arrest him , accusing him of being a gang member and demand to know where the rest of his gang is . he is put in jail accused of the murders . sally rogers , whose uncle owned the saloon and was murdered , arrives at the jail to see randy in order to clarify that he was one of the gang members ( she was hiding in a secret room when the shooting took place ) . sally doesn ' t believe that randy is a killer , and doesn ' t recognise him , so while the sheriff is out , she slips him the keys and randy escapes . while running away from the sheriff and his posse , randy convenient ##ly stumble ##s into the gang ' s hideout in a cave who were responsible for the murders . randy sets out to clear his name , and also to bring the gang to justice . < br / > < br / > \" randy rides alone \" can be a fun film to watch , especially if you ' re a john wayne fan . but at the same time it has far too many flaws that are impossible to ignore . the film is also extremely dated , as you would expect ; we have the terrible camera shooting which makes everyone look like they are moving in super - fast motion , and the dialogue is terrible . the acting isn ' t great either , and wayne ' s character is very wooden and he , along with the rest of the cast , look like wooden puppets who are being conducted by someone ( in this case it ' s by director harry fraser ) . harry fraser is at the helm , and does a good [SEP] \n", 2785 | "Predicted:\tjohn wayne ' s \" the trouble \" is that john ford , who , as a fan of his work , is one of the most under ##rated actors of all time . he ' s been in the \" home \" and \" the last great \" films , and i ' ve seen him in \" the rain \" and \" the incredible bad guy \" . < br / > < br / > the film begins with john wayne , and his brother , randy ( randy ) , who is also a pretty good looking guy , and has been told by a gang of thugs . he is about to be at the top of his game , which is apparently un ##com ##men ##dable , and his brother , randy , and his sister , and his sister , and brother , randy . they are also very much in place of the gang , which looks like a lot of people are being held apart by the gang . < br / > < br / > the rest of the cast are pretty much wasted in such films as \" randy \" , \" randy rides \" , and \" the gang \" . this is a very hard time capsule of the original film , which is about as far as i can tell . it ' s not that anyone else has ever been in a film that looks like a randy qu \n", 2786 | "------------------------------\n", 2787 | "True:\tthis is slightly less sick ##ening than the first two films , but otherwise it ' s business as usual : a sc ##uz ##zy , sl ##ea ##zy and un ##balance ##d slice of disease ##d cinema . charles bro ##nson is back , blasting into action when his friend is killed by yo ##bs terror ##ising the neighbourhood . crime , you see , is up 11 % in the south belmont area . . . so what ' s to be done ? a stronger police presence ? tough ##er jail ##s ? harsh ##er sentences ? nope , the only solution is to send in a loose cannon like bro ##nson to met ##e out blood ##thi ##rst ##y revenge or , as the writers would have it , justice : this time he ' s the personal killing machine of police chief ed lau ##ter . < br / > < br / > the writers bend over backwards to make ke ##rse ##y the hero , sending the useless cops into the area only to con ##fi ##sca ##te a weapon from an elderly resident who keeps it for protection , and supplying a scene in which ke ##rse ##y has his camera stolen and shoots the thief right in the back , to applause from the watching crowd . capital punishment for theft ? well , okay . the attitude of everyone in the film is that this is a solution , and the dish ##ones ##t twisting of the characters into cipher ##s who exist only to cheer ke ##rse ##y on or back him up is app ##all ##ing . < br / > < br / > sure , these villains are sc ##um , but shouldn ' t the film leave the audience to make up its mind , rather than slant ##ing the entire thing towards ke ##rse ##y and his mind ##less answer ? fun ##ni ##ly enough the bel ##ea ##gue ##red residents don ' t fear gang rep ##ris ##als or blame ke ##rse ##y for any of the violence , which is odd as one character is killed precisely because of ke ##rse ##y ' s involvement . at the end of the film they all take guns from their sock drawers and glee ##fully join in with the massacre , never stopping to think things through or struggle with the thought of having to kill another human being . < br / > < br / > the at ##ro ##cious ##ly shallow performances don ' t help bro ##nson has literally one facial expression throughout and can ' t even put in ##fle ##ction on the right words . new heights of stupidity are reached here a machine gun ? a rocket launcher ? ! and new low ##s of mis ##ogy ##ny : the movie con ##tri ##ves to des ##ec ##rate every female character in sight , whether by rape , explosion or throat - slash ##ing ; and it [SEP] \n", 2788 | "Predicted:\tthis is a crime movie , but it is only the second time in its execution . the plot is pure exploitation . the action is pure and un ##in ##vo ##lved for a sl ##ea ##zy , and un ##in ##hi ##bit ##ed , and the violence is rather than death wish . the film is set in new york city , which is why it has to be taken as a whole , so why would you want to make a movie like this ? the first thing is , it ' s a lo ##ony crime scene , which is actually quite right from the start . < br / > < br / > the film opens with a bunch of people who are watching a bunch of lo ##bot ##omi ##zed by the police , who ' s having fun watching him . the police don ' t take the time to kill , because of his own , or at least , when they ' re being attacked by the police ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? well , the villains are all rep ##ulsive , especially when they ' re not as lo ##ath ##some as the villains . the villains are more than menacing , and the villains are more than menacing . one of the villains is the villains who ' ve got \n", 2789 | "------------------------------\n", 2790 | "True:\tlos angeles physician tom reed ( vincent vent ##res ##ca ) survives a tragic auto accident but ends up going to prison in the high desert of california . when his time is up he lands in a small , wind - swept town named pu ##rga ##tory flats . his first stop is a bar , where he quickly slams a beer and gets hired as a bartender . so much for ex - con ##s having a tough time finding work . this is the first in a long line of absurd ##ities that make up the plot of writer / director harris done ' s silly attempt at modern , desert - set , film noir . < br / > < br / > his first night on the job tom meets a sexy femme fatal named sunny ( alexandra holden ) , who hangs out with a family of bad boys : the me ##ck ##lins , consisting of uncle dean ( gregg henry ) and his two nephew ##s , the drug addicted owen ( kevin alejandro ) , who is sunny ' s husband , and aw ##ol soldier randy ( \" 90 ##21 ##0 \" s brian austin greer ) . after his shift is finished there ' s a shooting , and dr . tom just happens to be nearby . he agrees to treat one of the wounded and , most importantly , not tell the cops . i ' m not sure that ' s a good move for a guy fresh out of the pen , but this script ( co - written by diane fine ) has very little to do with logic . < br / > < br / > tom makes a series of poor decisions that get him further and further en ##tangled with the criminal ##ly inclined me ##ck ##lin boys , including stealing medical supplies and hopping into the sack with sunny . everybody in the theater is screaming , \" don ' t do it ! walk away \" , but tom does it anyway . < br / > < br / > in a classic film noir like \" body heat \" or \" double ind ##em ##nity \" we root for and em ##path ##ize with william hurt and fred mc ##mur ##ray as they get sucked into the web of bright , sexy , devi ##ous femme fatal ##s like kathleen turner and barbara stan ##wy ##ck . it ' s not their fault . we ' d probably be tempted by all that money or that particular dame , too . but dr . tom ' s weakness seems to stem from stupidity more than circumstances . sunny is sexy but not a very compelling character , and there ' s no money to te ##mpt him . you ' re left wondering if he attended the same medical school as dr . nick river ##ia from \" the simpsons \" . < br / [SEP] \n" 2791 | ] 2792 | }, 2793 | { 2794 | "name": "stdout", 2795 | "output_type": "stream", 2796 | "text": [ 2797 | "Predicted:\tfirst , tom brown ( tom mc ##int ##ire ) is a tough , tough , tough - guy who is a loser . he is a tough guy who is a victim of a small town in the desert . he ' s a tough guy , but he ' s not a bad writer . his partner , tom ( tom mc ##int ##ire ) , is left to live with him and his partner ( robert eng ##lund ) . his sister is left in jail for the first time . when he meets the young couple , he decides to make a job of finding out that the writer and director of \" the left me in trouble \" . < br / > < br / > so , we get a big mistake . this is a very good example of how the film opens up with a series of flashbacks and no one left in the desert . the two meet at the end of the film , where the two cops and their daughter get a job . < br / > < br / > but that ' s not the case . this is a very med ##io ##cre film that shows the tough ##ness of the first film . it ' s not easy to tell . but it ' s just a big mistake . < br / > < br / > tom brown ( as tom sk ##er ##rit ##t ) \n", 2798 | "------------------------------\n", 2799 | "Epoch Step: 1 Loss: 0.816386 Tokens per Sec: 4294967295.000000\n", 2800 | "Epoch Step: 101 Loss: 1.110516 Tokens per Sec: 18208.000000\n", 2801 | "Epoch Step: 201 Loss: 1.353794 Tokens per Sec: 17860.000000\n", 2802 | "Epoch Step: 301 Loss: 1.542023 Tokens per Sec: 17830.000000\n", 2803 | "Epoch Step: 401 Loss: 1.974018 Tokens per Sec: 16623.000000\n", 2804 | "Epoch Step: 501 Loss: 2.386497 Tokens per Sec: 16226.000000\n", 2805 | "Epoch Step: 601 Loss: 2.921898 Tokens per Sec: 15519.000000\n", 2806 | "Epoch Step: 701 Loss: 3.273592 Tokens per Sec: 16009.000000\n", 2807 | "Epoch Step: 801 Loss: 3.188971 Tokens per Sec: 15642.000000\n", 2808 | "VALIDATION LOSS: 2.162333\n", 2809 | "Epoch: 2\n", 2810 | "Epoch Step: 1 Loss: 2.722145 Tokens per Sec: 7865.000000\n", 2811 | "Epoch Step: 101 Loss: 2.581414 Tokens per Sec: 6211.000000\n", 2812 | "Epoch Step: 201 Loss: 2.105173 Tokens per Sec: 6204.000000\n", 2813 | "Epoch Step: 301 Loss: 1.778284 Tokens per Sec: 6283.000000\n", 2814 | "Epoch Step: 401 Loss: 3.200924 Tokens per Sec: 6157.000000\n", 2815 | "Epoch Step: 501 Loss: 2.187073 Tokens per Sec: 6222.000000\n", 2816 | "Epoch Step: 601 Loss: 1.960883 Tokens per Sec: 6161.000000\n", 2817 | "Epoch Step: 701 Loss: 3.372905 Tokens per Sec: 6213.000000\n", 2818 | "Epoch Step: 801 Loss: 1.785080 Tokens per Sec: 6144.000000\n", 2819 | "Epoch: 3\n", 2820 | "Epoch Step: 1 Loss: 1.922140 Tokens per Sec: 7819.000000\n", 2821 | "Epoch Step: 101 Loss: 3.165004 Tokens per Sec: 6124.000000\n", 2822 | "Epoch Step: 201 Loss: 3.373371 Tokens per Sec: 6220.000000\n", 2823 | "Epoch Step: 301 Loss: 3.152642 Tokens per Sec: 6154.000000\n", 2824 | "Epoch Step: 401 Loss: 1.921576 Tokens per Sec: 6222.000000\n", 2825 | "Epoch Step: 501 Loss: 2.082068 Tokens per Sec: 6109.000000\n", 2826 | "Epoch Step: 601 Loss: 2.416815 Tokens per Sec: 6155.000000\n", 2827 | "Epoch Step: 701 Loss: 2.246686 Tokens per Sec: 6261.000000\n", 2828 | "Epoch Step: 801 Loss: 2.041450 Tokens per Sec: 6207.000000\n", 2829 | "Epoch: 4\n", 2830 | "Epoch Step: 1 Loss: 1.489060 Tokens per Sec: 7781.000000\n", 2831 | "Epoch Step: 101 Loss: 1.749454 Tokens per Sec: 5976.000000\n", 2832 | "Epoch Step: 201 Loss: 1.775020 Tokens per Sec: 6025.000000\n", 2833 | "Epoch Step: 301 Loss: 3.134117 Tokens per Sec: 6222.000000\n", 2834 | "Epoch Step: 401 Loss: 2.777619 Tokens per Sec: 6144.000000\n", 2835 | "Epoch Step: 501 Loss: 3.150565 Tokens per Sec: 6167.000000\n", 2836 | "Epoch Step: 601 Loss: 3.433340 Tokens per Sec: 6195.000000\n", 2837 | "Epoch Step: 701 Loss: 2.639482 Tokens per Sec: 6214.000000\n", 2838 | "Epoch Step: 801 Loss: 3.146263 Tokens per Sec: 6158.000000\n", 2839 | "Epoch: 5\n", 2840 | "Epoch Step: 1 Loss: 1.802351 Tokens per Sec: 7850.000000\n", 2841 | "Epoch Step: 101 Loss: 1.762089 Tokens per Sec: 6030.000000\n", 2842 | "Epoch Step: 201 Loss: 3.023382 Tokens per Sec: 6019.000000\n", 2843 | "Epoch Step: 301 Loss: 3.073139 Tokens per Sec: 6229.000000\n", 2844 | "Epoch Step: 401 Loss: 2.404180 Tokens per Sec: 6259.000000\n", 2845 | "Epoch Step: 501 Loss: 2.722541 Tokens per Sec: 6196.000000\n", 2846 | "Epoch Step: 601 Loss: 3.099750 Tokens per Sec: 6210.000000\n", 2847 | "Epoch Step: 701 Loss: 3.217110 Tokens per Sec: 6111.000000\n", 2848 | "Epoch Step: 801 Loss: 3.350076 Tokens per Sec: 6207.000000\n", 2849 | "Epoch: 6\n", 2850 | "Epoch Step: 1 Loss: 1.626878 Tokens per Sec: 7834.000000\n", 2851 | "Epoch Step: 101 Loss: 2.725226 Tokens per Sec: 6141.000000\n", 2852 | "Epoch Step: 201 Loss: 2.504176 Tokens per Sec: 6214.000000\n", 2853 | "Epoch Step: 301 Loss: 3.014816 Tokens per Sec: 6149.000000\n", 2854 | "Epoch Step: 401 Loss: 3.088159 Tokens per Sec: 6180.000000\n", 2855 | "Epoch Step: 501 Loss: 2.008882 Tokens per Sec: 6159.000000\n", 2856 | "Epoch Step: 601 Loss: 1.785432 Tokens per Sec: 6218.000000\n", 2857 | "Epoch Step: 701 Loss: 2.967357 Tokens per Sec: 6216.000000\n", 2858 | "Epoch Step: 801 Loss: 1.798384 Tokens per Sec: 6225.000000\n", 2859 | "True:\tjohn wayne is without a doubt one of the most popular and loved actors of all time . his career stretched over forty years , and within that time he starred in films such as \" angel and the bad ##man \" , \" the green be ##ret ##s \" , \" sands of i ##wo jim ##a \" , \" rio bravo \" , \" north to alaska \" , and \" the [UNK] \" . < br / > < br / > the film ' s listed above are hailed as some of his best , unlike this 1934 effort \" randy rides alone \" , which has been pretty much forgotten about as time ' s gone on , which is un ##sur ##pr ##ising , as it ' s nothing memorable apart from its very short running time of just 53 minutes . < br / > < br / > a young john wayne plays randy bow ##ers , who for reasons never really explained , arrives at a saloon in the middle of nowhere and finds that everyone inside has been killed . while looking around , a posse arrives and finds randy there and they arrest him , accusing him of being a gang member and demand to know where the rest of his gang is . he is put in jail accused of the murders . sally rogers , whose uncle owned the saloon and was murdered , arrives at the jail to see randy in order to clarify that he was one of the gang members ( she was hiding in a secret room when the shooting took place ) . sally doesn ' t believe that randy is a killer , and doesn ' t recognise him , so while the sheriff is out , she slips him the keys and randy escapes . while running away from the sheriff and his posse , randy convenient ##ly stumble ##s into the gang ' s hideout in a cave who were responsible for the murders . randy sets out to clear his name , and also to bring the gang to justice . < br / > < br / > \" randy rides alone \" can be a fun film to watch , especially if you ' re a john wayne fan . but at the same time it has far too many flaws that are impossible to ignore . the film is also extremely dated , as you would expect ; we have the terrible camera shooting which makes everyone look like they are moving in super - fast motion , and the dialogue is terrible . the acting isn ' t great either , and wayne ' s character is very wooden and he , along with the rest of the cast , look like wooden puppets who are being conducted by someone ( in this case it ' s by director harry fraser ) . harry fraser is at the helm , and does a good [SEP] \n", 2860 | "Predicted:\t\" the incredible melting man \" is one of john saxon ' s finest films . he has a small role as a young and pretty much the same actor , and he has been in such a short time for his \" live action \" films , which he has been in some of his films as \" the rest of the cast \" , which is at least one of his most appealing performances . < br / > < br / > however , the film is also pretty bad . the film is about a group of gang boss , who is murdered by a gang of hood ##lum ##s , and is in love with the gang of villains , including john wayne , and the gang that includes peter weston ( al clive ##r ) . they are also being held into the house , and they are quickly killed by a gang of villains who are being held at home by a gang of villains . < br / > < br / > this film is very hard to tell , and you can tell that there are no such reasons as \" the naked city \" and \" the naked city \" . it ' s hard to tell which this film was made , and that ' s not all that great . < br / > < br / > the film is shot in black and white , which looks like a lot \n", 2861 | "------------------------------\n", 2862 | "True:\tthis is slightly less sick ##ening than the first two films , but otherwise it ' s business as usual : a sc ##uz ##zy , sl ##ea ##zy and un ##balance ##d slice of disease ##d cinema . charles bro ##nson is back , blasting into action when his friend is killed by yo ##bs terror ##ising the neighbourhood . crime , you see , is up 11 % in the south belmont area . . . so what ' s to be done ? a stronger police presence ? tough ##er jail ##s ? harsh ##er sentences ? nope , the only solution is to send in a loose cannon like bro ##nson to met ##e out blood ##thi ##rst ##y revenge or , as the writers would have it , justice : this time he ' s the personal killing machine of police chief ed lau ##ter . < br / > < br / > the writers bend over backwards to make ke ##rse ##y the hero , sending the useless cops into the area only to con ##fi ##sca ##te a weapon from an elderly resident who keeps it for protection , and supplying a scene in which ke ##rse ##y has his camera stolen and shoots the thief right in the back , to applause from the watching crowd . capital punishment for theft ? well , okay . the attitude of everyone in the film is that this is a solution , and the dish ##ones ##t twisting of the characters into cipher ##s who exist only to cheer ke ##rse ##y on or back him up is app ##all ##ing . < br / > < br / > sure , these villains are sc ##um , but shouldn ' t the film leave the audience to make up its mind , rather than slant ##ing the entire thing towards ke ##rse ##y and his mind ##less answer ? fun ##ni ##ly enough the bel ##ea ##gue ##red residents don ' t fear gang rep ##ris ##als or blame ke ##rse ##y for any of the violence , which is odd as one character is killed precisely because of ke ##rse ##y ' s involvement . at the end of the film they all take guns from their sock drawers and glee ##fully join in with the massacre , never stopping to think things through or struggle with the thought of having to kill another human being . < br / > < br / > the at ##ro ##cious ##ly shallow performances don ' t help bro ##nson has literally one facial expression throughout and can ' t even put in ##fle ##ction on the right words . new heights of stupidity are reached here a machine gun ? a rocket launcher ? ! and new low ##s of mis ##ogy ##ny : the movie con ##tri ##ves to des ##ec ##rate every female character in sight , whether by rape , explosion or throat - slash ##ing ; and it [SEP] \n" 2863 | ] 2864 | }, 2865 | { 2866 | "name": "stdout", 2867 | "output_type": "stream", 2868 | "text": [ 2869 | "Predicted:\tthis is a film that is so bad , it ' s hard to watch . but the only reason why ? because the film is so un ##watch ##able is the only reason for watching it . the first hour or so are the usual suspects : 1 . the second , the protagonist , a sc ##um ##onic , is a lo ##ony who would rather be in the same league as the original , and the subsequent fight scenes , which make up the entire movie . < br / > < br / > the protagonist , a young man who has been murdered by his gang , is forced to live in a small town in new york . but his own brother , who has been murdered by the gang of thugs , and his gang of thugs , and his gang of thugs , take over the entire city . this is a rather sc ##um ##my , and un ##sca ##ry piece of cinema . < br / > < br / > the film opens with a gun taking up from a gang of thugs , and the gang of thugs , and the gang of thugs , to help him . as the police come to the rescue , the cops are forced to shoot the cops , and shoot themselves into the car , and shoot him in the back of the car , and then shoot him in the back of his own \n", 2870 | "------------------------------\n", 2871 | "True:\tlos angeles physician tom reed ( vincent vent ##res ##ca ) survives a tragic auto accident but ends up going to prison in the high desert of california . when his time is up he lands in a small , wind - swept town named pu ##rga ##tory flats . his first stop is a bar , where he quickly slams a beer and gets hired as a bartender . so much for ex - con ##s having a tough time finding work . this is the first in a long line of absurd ##ities that make up the plot of writer / director harris done ' s silly attempt at modern , desert - set , film noir . < br / > < br / > his first night on the job tom meets a sexy femme fatal named sunny ( alexandra holden ) , who hangs out with a family of bad boys : the me ##ck ##lins , consisting of uncle dean ( gregg henry ) and his two nephew ##s , the drug addicted owen ( kevin alejandro ) , who is sunny ' s husband , and aw ##ol soldier randy ( \" 90 ##21 ##0 \" s brian austin greer ) . after his shift is finished there ' s a shooting , and dr . tom just happens to be nearby . he agrees to treat one of the wounded and , most importantly , not tell the cops . i ' m not sure that ' s a good move for a guy fresh out of the pen , but this script ( co - written by diane fine ) has very little to do with logic . < br / > < br / > tom makes a series of poor decisions that get him further and further en ##tangled with the criminal ##ly inclined me ##ck ##lin boys , including stealing medical supplies and hopping into the sack with sunny . everybody in the theater is screaming , \" don ' t do it ! walk away \" , but tom does it anyway . < br / > < br / > in a classic film noir like \" body heat \" or \" double ind ##em ##nity \" we root for and em ##path ##ize with william hurt and fred mc ##mur ##ray as they get sucked into the web of bright , sexy , devi ##ous femme fatal ##s like kathleen turner and barbara stan ##wy ##ck . it ' s not their fault . we ' d probably be tempted by all that money or that particular dame , too . but dr . tom ' s weakness seems to stem from stupidity more than circumstances . sunny is sexy but not a very compelling character , and there ' s no money to te ##mpt him . you ' re left wondering if he attended the same medical school as dr . nick river ##ia from \" the simpsons \" . < br / [SEP] \n", 2872 | "Predicted:\tfirst of all , this is a pretty bad film . but it ' s not a good film . the plot is set in new york city , where the characters live in a small town , and the two of them live together . a series of mis ##fi ##ts that make us believe that a small town is set in the early 1970s . < br / > < br / > tom ( robert mitch ##um ) is a young tom ( tom everett scott ) , a former high school student who has been sleeping with his uncle , a high - school boss ( robert eng ##lund ) , and his daughter jenny ( kathy baker ) . he ' s a doctor who has been en ##tic ##ing his own ne ##rdy high - school boss , a former student who is a former roommate who is also a suspect . he ' s a former student of the first \" big \" type of guy , and he ' s up to his job . but when he gets into trouble , he gets a job and gets into a job that is going to be left alone for him . < br / > < br / > but there ' s no more to this story than the first two minutes of the film . we get to see the \" sexy \" guy ( robert eng ##lund ) , a tough guy who looks \n", 2873 | "------------------------------\n", 2874 | "Epoch Step: 1 Loss: 1.513008 Tokens per Sec: 13743.000000\n", 2875 | "Epoch Step: 101 Loss: 2.129503 Tokens per Sec: 18208.000000\n", 2876 | "Epoch Step: 201 Loss: 2.412512 Tokens per Sec: 17860.000000\n", 2877 | "Epoch Step: 301 Loss: 2.429930 Tokens per Sec: 17434.000000\n", 2878 | "Epoch Step: 401 Loss: 2.640728 Tokens per Sec: 16623.000000\n", 2879 | "Epoch Step: 501 Loss: 2.995038 Tokens per Sec: 15895.000000\n", 2880 | "Epoch Step: 601 Loss: 3.302456 Tokens per Sec: 15835.000000\n", 2881 | "Epoch Step: 701 Loss: 3.615057 Tokens per Sec: 15682.000000\n", 2882 | "Epoch Step: 801 Loss: 3.474561 Tokens per Sec: 15968.000000\n", 2883 | "VALIDATION LOSS: 2.839061\n", 2884 | "Epoch: 7\n", 2885 | "Epoch Step: 1 Loss: 1.133549 Tokens per Sec: 7642.000000\n", 2886 | "Epoch Step: 101 Loss: 2.903978 Tokens per Sec: 6148.000000\n", 2887 | "Epoch Step: 201 Loss: 2.025905 Tokens per Sec: 6263.000000\n", 2888 | "Epoch Step: 301 Loss: 2.917012 Tokens per Sec: 6218.000000\n", 2889 | "Epoch Step: 401 Loss: 1.610366 Tokens per Sec: 6171.000000\n", 2890 | "Epoch Step: 501 Loss: 2.082399 Tokens per Sec: 6164.000000\n", 2891 | "Epoch Step: 601 Loss: 2.872767 Tokens per Sec: 6172.000000\n", 2892 | "Epoch Step: 701 Loss: 1.825423 Tokens per Sec: 6207.000000\n", 2893 | "Epoch Step: 801 Loss: 2.296348 Tokens per Sec: 6272.000000\n", 2894 | "Epoch: 8\n", 2895 | "Epoch Step: 1 Loss: 1.366967 Tokens per Sec: 7664.000000\n", 2896 | "Epoch Step: 101 Loss: 1.555836 Tokens per Sec: 6170.000000\n", 2897 | "Epoch Step: 201 Loss: 2.823003 Tokens per Sec: 6202.000000\n", 2898 | "Epoch Step: 301 Loss: 2.913805 Tokens per Sec: 6224.000000\n", 2899 | "Epoch Step: 401 Loss: 1.527506 Tokens per Sec: 6153.000000\n", 2900 | "Epoch Step: 501 Loss: 2.917202 Tokens per Sec: 6222.000000\n", 2901 | "Epoch Step: 601 Loss: 2.701970 Tokens per Sec: 6203.000000\n", 2902 | "Epoch Step: 701 Loss: 2.151023 Tokens per Sec: 6169.000000\n", 2903 | "Epoch Step: 801 Loss: 1.452205 Tokens per Sec: 6161.000000\n", 2904 | "Epoch: 9\n", 2905 | "Epoch Step: 1 Loss: 2.744883 Tokens per Sec: 7665.000000\n", 2906 | "Epoch Step: 101 Loss: 2.333969 Tokens per Sec: 6167.000000\n", 2907 | "Epoch Step: 201 Loss: 2.664581 Tokens per Sec: 6164.000000\n", 2908 | "Epoch Step: 301 Loss: 2.387236 Tokens per Sec: 6157.000000\n", 2909 | "Epoch Step: 401 Loss: 2.851847 Tokens per Sec: 6210.000000\n", 2910 | "Epoch Step: 501 Loss: 2.730557 Tokens per Sec: 6208.000000\n", 2911 | "Epoch Step: 601 Loss: 2.911171 Tokens per Sec: 6163.000000\n", 2912 | "Epoch Step: 701 Loss: 1.779993 Tokens per Sec: 6224.000000\n", 2913 | "Epoch Step: 801 Loss: 2.861305 Tokens per Sec: 6193.000000\n", 2914 | "Epoch: 10\n", 2915 | "Epoch Step: 1 Loss: 2.380349 Tokens per Sec: 7825.000000\n", 2916 | "Epoch Step: 101 Loss: 1.334219 Tokens per Sec: 5972.000000\n", 2917 | "Epoch Step: 201 Loss: 1.693183 Tokens per Sec: 6056.000000\n", 2918 | "Epoch Step: 301 Loss: 2.246971 Tokens per Sec: 5972.000000\n", 2919 | "Epoch Step: 401 Loss: 2.063526 Tokens per Sec: 6167.000000\n", 2920 | "Epoch Step: 501 Loss: 2.856549 Tokens per Sec: 6259.000000\n", 2921 | "Epoch Step: 601 Loss: 2.717936 Tokens per Sec: 6163.000000\n", 2922 | "Epoch Step: 701 Loss: 1.543654 Tokens per Sec: 6273.000000\n", 2923 | "Epoch Step: 801 Loss: 2.622971 Tokens per Sec: 6162.000000\n", 2924 | "Epoch: 11\n", 2925 | "Epoch Step: 1 Loss: 2.607197 Tokens per Sec: 7887.000000\n", 2926 | "Epoch Step: 101 Loss: 2.636989 Tokens per Sec: 6254.000000\n", 2927 | "Epoch Step: 201 Loss: 1.629218 Tokens per Sec: 6266.000000\n", 2928 | "Epoch Step: 301 Loss: 1.980191 Tokens per Sec: 6314.000000\n", 2929 | "Epoch Step: 401 Loss: 2.183221 Tokens per Sec: 6157.000000\n", 2930 | "Epoch Step: 501 Loss: 2.624758 Tokens per Sec: 6114.000000\n", 2931 | "Epoch Step: 601 Loss: 1.443795 Tokens per Sec: 6277.000000\n", 2932 | "Epoch Step: 701 Loss: 2.746735 Tokens per Sec: 6119.000000\n", 2933 | "Epoch Step: 801 Loss: 2.718351 Tokens per Sec: 6100.000000\n", 2934 | "True:\tjohn wayne is without a doubt one of the most popular and loved actors of all time . his career stretched over forty years , and within that time he starred in films such as \" angel and the bad ##man \" , \" the green be ##ret ##s \" , \" sands of i ##wo jim ##a \" , \" rio bravo \" , \" north to alaska \" , and \" the [UNK] \" . < br / > < br / > the film ' s listed above are hailed as some of his best , unlike this 1934 effort \" randy rides alone \" , which has been pretty much forgotten about as time ' s gone on , which is un ##sur ##pr ##ising , as it ' s nothing memorable apart from its very short running time of just 53 minutes . < br / > < br / > a young john wayne plays randy bow ##ers , who for reasons never really explained , arrives at a saloon in the middle of nowhere and finds that everyone inside has been killed . while looking around , a posse arrives and finds randy there and they arrest him , accusing him of being a gang member and demand to know where the rest of his gang is . he is put in jail accused of the murders . sally rogers , whose uncle owned the saloon and was murdered , arrives at the jail to see randy in order to clarify that he was one of the gang members ( she was hiding in a secret room when the shooting took place ) . sally doesn ' t believe that randy is a killer , and doesn ' t recognise him , so while the sheriff is out , she slips him the keys and randy escapes . while running away from the sheriff and his posse , randy convenient ##ly stumble ##s into the gang ' s hideout in a cave who were responsible for the murders . randy sets out to clear his name , and also to bring the gang to justice . < br / > < br / > \" randy rides alone \" can be a fun film to watch , especially if you ' re a john wayne fan . but at the same time it has far too many flaws that are impossible to ignore . the film is also extremely dated , as you would expect ; we have the terrible camera shooting which makes everyone look like they are moving in super - fast motion , and the dialogue is terrible . the acting isn ' t great either , and wayne ' s character is very wooden and he , along with the rest of the cast , look like wooden puppets who are being conducted by someone ( in this case it ' s by director harry fraser ) . harry fraser is at the helm , and does a good [SEP] \n" 2935 | ] 2936 | }, 2937 | { 2938 | "name": "stdout", 2939 | "output_type": "stream", 2940 | "text": [ 2941 | "Predicted:\tjohn saxon is one of the greatest actors of all time , and he ' s always been a big fan of his work . however , \" the night time \" is a very small one , which has been the best of his films , and \" the night time \" , which is also one of the best of his films . < br / > < br / > as such , \" the night at the time \" is a pretty forget ##table look at the film . it ' s hard to believe that john savage , who was in charge of the film , was in trouble for a film that was filmed in black and white , and has a great look to it . as such , \" randy \" is a pretty bad film , and you ' ll be wishing that someone would put them in a studio . < br / > < br / > anyway , the rest of the cast is pretty much wasted . randy qu ##aid , whose character , \" randy \" , is called \" randy from \" the naked mile \" , is just about as bad as he looks and looks like he ' s in the film . < br / > < br / > anyway , the rest of the cast are pretty much wasted . randy qu ##aid , whose character , \" randy \" , is about as wooden \n", 2942 | "------------------------------\n", 2943 | "True:\tthis is slightly less sick ##ening than the first two films , but otherwise it ' s business as usual : a sc ##uz ##zy , sl ##ea ##zy and un ##balance ##d slice of disease ##d cinema . charles bro ##nson is back , blasting into action when his friend is killed by yo ##bs terror ##ising the neighbourhood . crime , you see , is up 11 % in the south belmont area . . . so what ' s to be done ? a stronger police presence ? tough ##er jail ##s ? harsh ##er sentences ? nope , the only solution is to send in a loose cannon like bro ##nson to met ##e out blood ##thi ##rst ##y revenge or , as the writers would have it , justice : this time he ' s the personal killing machine of police chief ed lau ##ter . < br / > < br / > the writers bend over backwards to make ke ##rse ##y the hero , sending the useless cops into the area only to con ##fi ##sca ##te a weapon from an elderly resident who keeps it for protection , and supplying a scene in which ke ##rse ##y has his camera stolen and shoots the thief right in the back , to applause from the watching crowd . capital punishment for theft ? well , okay . the attitude of everyone in the film is that this is a solution , and the dish ##ones ##t twisting of the characters into cipher ##s who exist only to cheer ke ##rse ##y on or back him up is app ##all ##ing . < br / > < br / > sure , these villains are sc ##um , but shouldn ' t the film leave the audience to make up its mind , rather than slant ##ing the entire thing towards ke ##rse ##y and his mind ##less answer ? fun ##ni ##ly enough the bel ##ea ##gue ##red residents don ' t fear gang rep ##ris ##als or blame ke ##rse ##y for any of the violence , which is odd as one character is killed precisely because of ke ##rse ##y ' s involvement . at the end of the film they all take guns from their sock drawers and glee ##fully join in with the massacre , never stopping to think things through or struggle with the thought of having to kill another human being . < br / > < br / > the at ##ro ##cious ##ly shallow performances don ' t help bro ##nson has literally one facial expression throughout and can ' t even put in ##fle ##ction on the right words . new heights of stupidity are reached here a machine gun ? a rocket launcher ? ! and new low ##s of mis ##ogy ##ny : the movie con ##tri ##ves to des ##ec ##rate every female character in sight , whether by rape , explosion or throat - slash ##ing ; and it [SEP] \n", 2944 | "Predicted:\tthis is a new entry in the series of films , which are only 10 times better than this . it is a crime against crime , but it is fun to watch , and is so un ##for ##get ##table that it is hard to make a film like this . < br / > < br / > the protagonist , roy sc ##hei ##der , is the protagonist of the new york city , and is the only person who has the right to call the police , as well as the writers , the protagonist , is a lo ##vable mis ##guide ##d scientist who keeps his teeth from turning into a lo ##ony drug addict . the opening scene is rather jar ##ring , but the rest of the film is shot in the back of the day . < br / > < br / > spoil ##ers : in the opening scene , the protagonist ' s character is killed by a fire ##fighter , and an angry sh ##red of his own pre ##text or the gang ' s own sc ##um . the gang ' s gang at the first time , as is the police force , and the gang ' s gang ' s gang leader , as usual , is killed off by a gang of thugs . why would they want to shoot him ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \n", 2945 | "------------------------------\n", 2946 | "True:\tlos angeles physician tom reed ( vincent vent ##res ##ca ) survives a tragic auto accident but ends up going to prison in the high desert of california . when his time is up he lands in a small , wind - swept town named pu ##rga ##tory flats . his first stop is a bar , where he quickly slams a beer and gets hired as a bartender . so much for ex - con ##s having a tough time finding work . this is the first in a long line of absurd ##ities that make up the plot of writer / director harris done ' s silly attempt at modern , desert - set , film noir . < br / > < br / > his first night on the job tom meets a sexy femme fatal named sunny ( alexandra holden ) , who hangs out with a family of bad boys : the me ##ck ##lins , consisting of uncle dean ( gregg henry ) and his two nephew ##s , the drug addicted owen ( kevin alejandro ) , who is sunny ' s husband , and aw ##ol soldier randy ( \" 90 ##21 ##0 \" s brian austin greer ) . after his shift is finished there ' s a shooting , and dr . tom just happens to be nearby . he agrees to treat one of the wounded and , most importantly , not tell the cops . i ' m not sure that ' s a good move for a guy fresh out of the pen , but this script ( co - written by diane fine ) has very little to do with logic . < br / > < br / > tom makes a series of poor decisions that get him further and further en ##tangled with the criminal ##ly inclined me ##ck ##lin boys , including stealing medical supplies and hopping into the sack with sunny . everybody in the theater is screaming , \" don ' t do it ! walk away \" , but tom does it anyway . < br / > < br / > in a classic film noir like \" body heat \" or \" double ind ##em ##nity \" we root for and em ##path ##ize with william hurt and fred mc ##mur ##ray as they get sucked into the web of bright , sexy , devi ##ous femme fatal ##s like kathleen turner and barbara stan ##wy ##ck . it ' s not their fault . we ' d probably be tempted by all that money or that particular dame , too . but dr . tom ' s weakness seems to stem from stupidity more than circumstances . sunny is sexy but not a very compelling character , and there ' s no money to te ##mpt him . you ' re left wondering if he attended the same medical school as dr . nick river ##ia from \" the simpsons \" . < br / [SEP] \n", 2947 | "Predicted:\ttom ( tom bar ##man ) is a small town writer who is working in a small town where he ' s going to work for a long time . he ' s the first of his career , but he ' s out of jail and gets a job with a big job . < br / > < br / > after a long time , tom ( paul rudd ) and his girlfriend ( tom ( ed me ##y ) , a crazy , but big jerk ##y , a small town . the first victim is killed by a car that ' s not sure of . the film starts out like a series of \" the usual suspects \" , but it gets very much in the first place . < br / > < br / > the film begins with a series of events that make up for a series of coincidence ##s and events that occur in the first place . tom turns up at a car crash and gets into a van - like \" tom , \" tom , \" tom , and his buddy . the two cops at the bar , and there ' s no fuel in the middle of the night . tom is a jerk ##y , self - conscious and mis ##ogy ##ny , and he ' s just not sure what to do . < br / > < br / > so we get to see tom \n", 2948 | "------------------------------\n", 2949 | "Epoch Step: 1 Loss: 1.616261 Tokens per Sec: 4294967295.000000\n", 2950 | "Epoch Step: 101 Loss: 2.287065 Tokens per Sec: 17794.000000\n", 2951 | "Epoch Step: 201 Loss: 2.584965 Tokens per Sec: 17463.000000\n", 2952 | "Epoch Step: 301 Loss: 2.565032 Tokens per Sec: 17830.000000\n", 2953 | "Epoch Step: 401 Loss: 2.764774 Tokens per Sec: 16623.000000\n", 2954 | "Epoch Step: 501 Loss: 3.119474 Tokens per Sec: 16226.000000\n" 2955 | ] 2956 | }, 2957 | { 2958 | "name": "stdout", 2959 | "output_type": "stream", 2960 | "text": [ 2961 | "Epoch Step: 601 Loss: 3.404990 Tokens per Sec: 15835.000000\n", 2962 | "Epoch Step: 701 Loss: 3.727908 Tokens per Sec: 16009.000000\n", 2963 | "Epoch Step: 801 Loss: 3.577969 Tokens per Sec: 16308.000000\n", 2964 | "VALIDATION LOSS: 2.967480\n", 2965 | "Epoch: 12\n", 2966 | "Epoch Step: 1 Loss: 1.634545 Tokens per Sec: 7782.000000\n", 2967 | "Epoch Step: 101 Loss: 1.236310 Tokens per Sec: 6253.000000\n", 2968 | "Epoch Step: 201 Loss: 1.848471 Tokens per Sec: 6272.000000\n", 2969 | "Epoch Step: 301 Loss: 2.022540 Tokens per Sec: 6218.000000\n", 2970 | "Epoch Step: 401 Loss: 2.116828 Tokens per Sec: 6108.000000\n", 2971 | "Epoch Step: 501 Loss: 1.854738 Tokens per Sec: 6177.000000\n", 2972 | "Epoch Step: 601 Loss: 2.192439 Tokens per Sec: 6105.000000\n", 2973 | "Epoch Step: 701 Loss: 1.825527 Tokens per Sec: 6157.000000\n", 2974 | "Epoch Step: 801 Loss: 2.387137 Tokens per Sec: 6162.000000\n", 2975 | "Epoch: 13\n", 2976 | "Epoch Step: 1 Loss: 2.383227 Tokens per Sec: 7715.000000\n", 2977 | "Epoch Step: 101 Loss: 1.378927 Tokens per Sec: 6147.000000\n", 2978 | "Epoch Step: 201 Loss: 2.516225 Tokens per Sec: 6101.000000\n", 2979 | "Epoch Step: 301 Loss: 2.101686 Tokens per Sec: 6218.000000\n", 2980 | "Epoch Step: 401 Loss: 2.543607 Tokens per Sec: 6123.000000\n", 2981 | "Epoch Step: 501 Loss: 1.956255 Tokens per Sec: 6105.000000\n", 2982 | "Epoch Step: 601 Loss: 2.256653 Tokens per Sec: 6159.000000\n", 2983 | "Epoch Step: 701 Loss: 1.669684 Tokens per Sec: 6166.000000\n", 2984 | "Epoch Step: 801 Loss: 2.555591 Tokens per Sec: 6127.000000\n", 2985 | "Epoch: 14\n", 2986 | "Epoch Step: 1 Loss: 2.659044 Tokens per Sec: 7716.000000\n", 2987 | "Epoch Step: 101 Loss: 1.941702 Tokens per Sec: 6164.000000\n", 2988 | "Epoch Step: 201 Loss: 2.620811 Tokens per Sec: 6161.000000\n", 2989 | "Epoch Step: 301 Loss: 2.589362 Tokens per Sec: 6171.000000\n", 2990 | "Epoch Step: 401 Loss: 2.001449 Tokens per Sec: 6204.000000\n", 2991 | "Epoch Step: 501 Loss: 1.472722 Tokens per Sec: 6249.000000\n", 2992 | "Epoch Step: 601 Loss: 2.719321 Tokens per Sec: 6217.000000\n", 2993 | "Epoch Step: 701 Loss: 2.654023 Tokens per Sec: 6324.000000\n", 2994 | "Epoch Step: 801 Loss: 2.533460 Tokens per Sec: 6065.000000\n", 2995 | "Epoch: 15\n", 2996 | "Epoch Step: 1 Loss: 2.537005 Tokens per Sec: 7770.000000\n", 2997 | "Epoch Step: 101 Loss: 1.265391 Tokens per Sec: 6210.000000\n", 2998 | "Epoch Step: 201 Loss: 1.229011 Tokens per Sec: 6215.000000\n", 2999 | "Epoch Step: 301 Loss: 1.765888 Tokens per Sec: 6204.000000\n", 3000 | "Epoch Step: 401 Loss: 2.439212 Tokens per Sec: 6268.000000\n", 3001 | "Epoch Step: 501 Loss: 2.609391 Tokens per Sec: 6161.000000\n", 3002 | "Epoch Step: 601 Loss: 1.569594 Tokens per Sec: 6206.000000\n", 3003 | "Epoch Step: 701 Loss: 1.985846 Tokens per Sec: 6212.000000\n", 3004 | "Epoch Step: 801 Loss: 1.156709 Tokens per Sec: 6214.000000\n", 3005 | "Epoch: 16\n", 3006 | "Epoch Step: 1 Loss: 1.699267 Tokens per Sec: 7874.000000\n", 3007 | "Epoch Step: 101 Loss: 2.180212 Tokens per Sec: 6076.000000\n", 3008 | "Epoch Step: 201 Loss: 1.445212 Tokens per Sec: 6123.000000\n", 3009 | "Epoch Step: 301 Loss: 2.181925 Tokens per Sec: 6161.000000\n", 3010 | "Epoch Step: 401 Loss: 2.318261 Tokens per Sec: 6208.000000\n", 3011 | "Epoch Step: 501 Loss: 2.208717 Tokens per Sec: 6218.000000\n", 3012 | "Epoch Step: 601 Loss: 2.105663 Tokens per Sec: 6310.000000\n", 3013 | "Epoch Step: 701 Loss: 2.285606 Tokens per Sec: 6152.000000\n", 3014 | "Epoch Step: 801 Loss: 2.741899 Tokens per Sec: 6209.000000\n", 3015 | "True:\tjohn wayne is without a doubt one of the most popular and loved actors of all time . his career stretched over forty years , and within that time he starred in films such as \" angel and the bad ##man \" , \" the green be ##ret ##s \" , \" sands of i ##wo jim ##a \" , \" rio bravo \" , \" north to alaska \" , and \" the [UNK] \" . < br / > < br / > the film ' s listed above are hailed as some of his best , unlike this 1934 effort \" randy rides alone \" , which has been pretty much forgotten about as time ' s gone on , which is un ##sur ##pr ##ising , as it ' s nothing memorable apart from its very short running time of just 53 minutes . < br / > < br / > a young john wayne plays randy bow ##ers , who for reasons never really explained , arrives at a saloon in the middle of nowhere and finds that everyone inside has been killed . while looking around , a posse arrives and finds randy there and they arrest him , accusing him of being a gang member and demand to know where the rest of his gang is . he is put in jail accused of the murders . sally rogers , whose uncle owned the saloon and was murdered , arrives at the jail to see randy in order to clarify that he was one of the gang members ( she was hiding in a secret room when the shooting took place ) . sally doesn ' t believe that randy is a killer , and doesn ' t recognise him , so while the sheriff is out , she slips him the keys and randy escapes . while running away from the sheriff and his posse , randy convenient ##ly stumble ##s into the gang ' s hideout in a cave who were responsible for the murders . randy sets out to clear his name , and also to bring the gang to justice . < br / > < br / > \" randy rides alone \" can be a fun film to watch , especially if you ' re a john wayne fan . but at the same time it has far too many flaws that are impossible to ignore . the film is also extremely dated , as you would expect ; we have the terrible camera shooting which makes everyone look like they are moving in super - fast motion , and the dialogue is terrible . the acting isn ' t great either , and wayne ' s character is very wooden and he , along with the rest of the cast , look like wooden puppets who are being conducted by someone ( in this case it ' s by director harry fraser ) . harry fraser is at the helm , and does a good [SEP] \n", 3016 | "Predicted:\tjohn wayne ' s \" the night of the dead \" , starring robert reed as one of his best actors , \" the incredible trail \" , and \" the night of the dead \" , starring robert reed as jeff clark , who has a small role in \" the naked mile \" . < br / > < br / > however , despite being a pretty good film , it is also pretty much a one that has to be seen to be believed . the rest of the cast is pretty bad , especially jeff ##ery tam ##bor , who is so under ##used and looks like a 16 year old from \" the time of the dead \" and \" the gang \" who killed him . he and his gang are all un ##lika ##ble , and they are both very funny and honest . < br / > < br / > when you think about it , it ' s hard to believe that john wayne and ruby keel ##er ( who was never a sports star ) , and they are just in trouble for being there . however , despite being a very good actor , jeff ##ery tam ##bly ##n is in some of his best performances . he ' s a very small time actor and is in some of his films , such as \" the one in which he and ruby keel ##er ( who is always a great actor \n", 3017 | "------------------------------\n", 3018 | "True:\tthis is slightly less sick ##ening than the first two films , but otherwise it ' s business as usual : a sc ##uz ##zy , sl ##ea ##zy and un ##balance ##d slice of disease ##d cinema . charles bro ##nson is back , blasting into action when his friend is killed by yo ##bs terror ##ising the neighbourhood . crime , you see , is up 11 % in the south belmont area . . . so what ' s to be done ? a stronger police presence ? tough ##er jail ##s ? harsh ##er sentences ? nope , the only solution is to send in a loose cannon like bro ##nson to met ##e out blood ##thi ##rst ##y revenge or , as the writers would have it , justice : this time he ' s the personal killing machine of police chief ed lau ##ter . < br / > < br / > the writers bend over backwards to make ke ##rse ##y the hero , sending the useless cops into the area only to con ##fi ##sca ##te a weapon from an elderly resident who keeps it for protection , and supplying a scene in which ke ##rse ##y has his camera stolen and shoots the thief right in the back , to applause from the watching crowd . capital punishment for theft ? well , okay . the attitude of everyone in the film is that this is a solution , and the dish ##ones ##t twisting of the characters into cipher ##s who exist only to cheer ke ##rse ##y on or back him up is app ##all ##ing . < br / > < br / > sure , these villains are sc ##um , but shouldn ' t the film leave the audience to make up its mind , rather than slant ##ing the entire thing towards ke ##rse ##y and his mind ##less answer ? fun ##ni ##ly enough the bel ##ea ##gue ##red residents don ' t fear gang rep ##ris ##als or blame ke ##rse ##y for any of the violence , which is odd as one character is killed precisely because of ke ##rse ##y ' s involvement . at the end of the film they all take guns from their sock drawers and glee ##fully join in with the massacre , never stopping to think things through or struggle with the thought of having to kill another human being . < br / > < br / > the at ##ro ##cious ##ly shallow performances don ' t help bro ##nson has literally one facial expression throughout and can ' t even put in ##fle ##ction on the right words . new heights of stupidity are reached here a machine gun ? a rocket launcher ? ! and new low ##s of mis ##ogy ##ny : the movie con ##tri ##ves to des ##ec ##rate every female character in sight , whether by rape , explosion or throat - slash ##ing ; and it [SEP] \n" 3019 | ] 3020 | }, 3021 | { 3022 | "name": "stdout", 3023 | "output_type": "stream", 3024 | "text": [ 3025 | "Predicted:\tthis is a crime against crime against the system , but it is only the third time in the film . it is set in new york city , which is rather than the usual suspects , but it is so much fun to watch . < br / > < br / > the film has a strong protagonist , robert blake , a sc ##am , who ' s been blackmail ##ed by the gang , is killed by a gang of thugs who are sc ##um ##ming up the city for a killing sp ##ree ##ching him . the first clue is to what the heck is going on and what ' s up with him ? ? ? ? ? ? ? ? ? the lo ##vable , mean spirited , and un ##in ##formed . the two cops , make their own or re ##tar ##ded , turn into lo ##vable and lo ##vable as the one in this movie . the villains are so un ##bel ##ie ##va ##bly ugly that you almost feel sorry for them . the villains , especially the villains , are only as worthy as they seem to be in the first place . the villains , the villains , the villains , the villains , the villains , the villains , the villains , the villains , the villains , the villains , the sc ##umb ##ag , the villains , the villains , the villains , the villains , the villains , \n", 3026 | "------------------------------\n", 3027 | "True:\tlos angeles physician tom reed ( vincent vent ##res ##ca ) survives a tragic auto accident but ends up going to prison in the high desert of california . when his time is up he lands in a small , wind - swept town named pu ##rga ##tory flats . his first stop is a bar , where he quickly slams a beer and gets hired as a bartender . so much for ex - con ##s having a tough time finding work . this is the first in a long line of absurd ##ities that make up the plot of writer / director harris done ' s silly attempt at modern , desert - set , film noir . < br / > < br / > his first night on the job tom meets a sexy femme fatal named sunny ( alexandra holden ) , who hangs out with a family of bad boys : the me ##ck ##lins , consisting of uncle dean ( gregg henry ) and his two nephew ##s , the drug addicted owen ( kevin alejandro ) , who is sunny ' s husband , and aw ##ol soldier randy ( \" 90 ##21 ##0 \" s brian austin greer ) . after his shift is finished there ' s a shooting , and dr . tom just happens to be nearby . he agrees to treat one of the wounded and , most importantly , not tell the cops . i ' m not sure that ' s a good move for a guy fresh out of the pen , but this script ( co - written by diane fine ) has very little to do with logic . < br / > < br / > tom makes a series of poor decisions that get him further and further en ##tangled with the criminal ##ly inclined me ##ck ##lin boys , including stealing medical supplies and hopping into the sack with sunny . everybody in the theater is screaming , \" don ' t do it ! walk away \" , but tom does it anyway . < br / > < br / > in a classic film noir like \" body heat \" or \" double ind ##em ##nity \" we root for and em ##path ##ize with william hurt and fred mc ##mur ##ray as they get sucked into the web of bright , sexy , devi ##ous femme fatal ##s like kathleen turner and barbara stan ##wy ##ck . it ' s not their fault . we ' d probably be tempted by all that money or that particular dame , too . but dr . tom ' s weakness seems to stem from stupidity more than circumstances . sunny is sexy but not a very compelling character , and there ' s no money to te ##mpt him . you ' re left wondering if he attended the same medical school as dr . nick river ##ia from \" the simpsons \" . < br / [SEP] \n", 3028 | "Predicted:\ttom is a long - time writer who ' s been in a small town , a tough guy with a bad hair ##head ( tom hank ##s ) . he ' s not a bad guy , but he ' s the first victim of his life . when he discovers that his ex - wife ( gene tierney ) is driving home to drive him to the small room . after driving a car , he meets a sexy hip ##pie named lyle ( paul douglas ) , a trio of thieves and keep taking advantage of his work . < br / > < br / > first , this time , tom hank ##s is the most appealing and bel ##ie ##vable man in the world . tom turns out to be a high - school bully , but is so much more interested in the script and the script . there ' s a very good deal of tension and tension . < br / > < br / > the film starts out like a series of long wind ##ed , where the two cops make up their holiday and run into a van that is so easy to get into . but it gets no more than a few good lines . first , the ex - vietnam vet ##s are killed by a mysterious psychic ( robert mc ##lag ##len ) and tom ( as the tough - guy who has a job as a tough guy \n", 3029 | "------------------------------\n", 3030 | "Epoch Step: 1 Loss: 1.684819 Tokens per Sec: 4294967295.000000\n", 3031 | "Epoch Step: 101 Loss: 2.416137 Tokens per Sec: 18208.000000\n", 3032 | "Epoch Step: 201 Loss: 2.719902 Tokens per Sec: 17463.000000\n", 3033 | "Epoch Step: 301 Loss: 2.670963 Tokens per Sec: 17434.000000\n", 3034 | "Epoch Step: 401 Loss: 2.847700 Tokens per Sec: 16985.000000\n", 3035 | "Epoch Step: 501 Loss: 3.213319 Tokens per Sec: 16226.000000\n", 3036 | "Epoch Step: 601 Loss: 3.480537 Tokens per Sec: 16165.000000\n", 3037 | "Epoch Step: 701 Loss: 3.842853 Tokens per Sec: 16009.000000\n", 3038 | "Epoch Step: 801 Loss: 3.651115 Tokens per Sec: 16308.000000\n", 3039 | "VALIDATION LOSS: 3.069046\n", 3040 | "CPU times: user 12h 27min 22s, sys: 4h 34min, total: 17h 1min 22s\n", 3041 | "Wall time: 5h 25min 37s\n" 3042 | ] 3043 | } 3044 | ], 3045 | "source": [ 3046 | "%%time\n", 3047 | "# for i in range(100,550,20):\n", 3048 | "# print(i)\n", 3049 | "# f_train, f_val = get_auto_datasets(515)\n", 3050 | "BATCH_SIZE = 8000\n", 3051 | "train_iter = MyIterator(train, batch_size=BATCH_SIZE, device=device,\n", 3052 | " repeat=False, sort_key=lambda x: (len(x.text)),\n", 3053 | " batch_size_fn=batch_size_fn, train=True)\n", 3054 | "valid_iter = MyIterator(val, batch_size=BATCH_SIZE, device=device,\n", 3055 | " repeat=False, sort_key=lambda x: (len(x.text)),\n", 3056 | " batch_size_fn=batch_size_fn, train=False)\n", 3057 | "for epoch in range(16):\n", 3058 | " prints(\"Epoch: %s\" % (epoch+1))\n", 3059 | " model_par.train()\n", 3060 | " loss = run_epoch((Batch(b.text, b.text, pad_idx) for b in train_iter), \n", 3061 | " model_par, \n", 3062 | " MultiGPULossCompute(model.generator, criterion, \n", 3063 | " devices=[0,1,2,3], opt=model_opt, chunk_size=514))\n", 3064 | " tr_losses.append(loss)\n", 3065 | " model_par.eval()\n", 3066 | " if epoch % 5 == 0:\n", 3067 | " with torch.no_grad():\n", 3068 | " test_quality(model)\n", 3069 | " loss = run_epoch((Batch(b.text, b.text, pad_idx) for b in valid_iter), \n", 3070 | " model_par, \n", 3071 | " MultiGPULossCompute(model.generator, criterion, \n", 3072 | " devices=[0,1,2,3], opt=None, chunk_size=514))\n", 3073 | " prints(\"VALIDATION LOSS: %f\" % loss.item())\n", 3074 | " vl_losses.append(loss)\n", 3075 | " \n", 3076 | "# if i % 100 == 0:\n", 3077 | "# name = str(i)\n", 3078 | "# current_time = time.strftime(\"%Y-%m-%d-%H:%M:%S\", time.gmtime())\n", 3079 | "# torch.save(model, \"./trauto_%s_%s.pth\" % (current_time, name))" 3080 | ] 3081 | }, 3082 | { 3083 | "cell_type": "code", 3084 | "execution_count": 96, 3085 | "metadata": {}, 3086 | "outputs": [ 3087 | { 3088 | "data": { 3089 | "text/plain": [ 3090 | "[tensor(7.8959, device='cuda:0'),\n", 3091 | " tensor(6.6865, device='cuda:0'),\n", 3092 | " tensor(4.6938, device='cuda:0'),\n", 3093 | " tensor(4.3410, device='cuda:0'),\n", 3094 | " tensor(4.1935, device='cuda:0'),\n", 3095 | " tensor(4.3383, device='cuda:0'),\n", 3096 | " tensor(4.7120, device='cuda:0'),\n", 3097 | " tensor(3.3147, device='cuda:0'),\n", 3098 | " tensor(3.7002, device='cuda:0'),\n", 3099 | " tensor(4.2839, device='cuda:0'),\n", 3100 | " tensor(2.2390, device='cuda:0'),\n", 3101 | " tensor(2.8114, device='cuda:0'),\n", 3102 | " tensor(3.3543, device='cuda:0')]" 3103 | ] 3104 | }, 3105 | "execution_count": 96, 3106 | "metadata": {}, 3107 | "output_type": "execute_result" 3108 | } 3109 | ], 3110 | "source": [ 3111 | "vl_losses" 3112 | ] 3113 | }, 3114 | { 3115 | "cell_type": "code", 3116 | "execution_count": 10, 3117 | "metadata": {}, 3118 | "outputs": [ 3119 | { 3120 | "name": "stderr", 3121 | "output_type": "stream", 3122 | "text": [ 3123 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type EncoderDecoder. It won't be checked for correctness upon loading.\n", 3124 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3125 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type Encoder. It won't be checked for correctness upon loading.\n", 3126 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3127 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type EncoderLayer. It won't be checked for correctness upon loading.\n", 3128 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3129 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type MultiHeadedAttention. It won't be checked for correctness upon loading.\n", 3130 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3131 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type PositionwiseFeedForward. It won't be checked for correctness upon loading.\n", 3132 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3133 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type SublayerConnection. It won't be checked for correctness upon loading.\n", 3134 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3135 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type LayerNorm. It won't be checked for correctness upon loading.\n", 3136 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3137 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type Decoder. It won't be checked for correctness upon loading.\n", 3138 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3139 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type DecoderLayer. It won't be checked for correctness upon loading.\n", 3140 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3141 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type Embeddings. It won't be checked for correctness upon loading.\n", 3142 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3143 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type PositionalEncoding. It won't be checked for correctness upon loading.\n", 3144 | " \"type \" + obj.__name__ + \". It won't be checked \"\n", 3145 | "/anaconda/envs/py36/lib/python3.6/site-packages/torch/serialization.py:251: UserWarning: Couldn't retrieve source code for container of type Generator. It won't be checked for correctness upon loading.\n", 3146 | " \"type \" + obj.__name__ + \". It won't be checked \"\n" 3147 | ] 3148 | } 3149 | ], 3150 | "source": [ 3151 | "name = \"520-16\"\n", 3152 | "current_time = time.strftime(\"%Y-%m-%d-%H:%M:%S\", time.gmtime())\n", 3153 | "torch.save(model, \"./trauto_%s_%s.pth\" % (current_time, name))\n", 3154 | "# net.load_state_dict(torch.load('./net.pth'))" 3155 | ] 3156 | }, 3157 | { 3158 | "cell_type": "code", 3159 | "execution_count": 24, 3160 | "metadata": {}, 3161 | "outputs": [ 3162 | { 3163 | "data": { 3164 | "text/plain": [ 3165 | "([tensor(8.4402, device='cuda:0'),\n", 3166 | " tensor(8.4993, device='cuda:0'),\n", 3167 | " tensor(8.0315, device='cuda:0'),\n", 3168 | " tensor(7.4370, device='cuda:0'),\n", 3169 | " tensor(6.6916, device='cuda:0'),\n", 3170 | " tensor(6.0129, device='cuda:0'),\n", 3171 | " tensor(5.6707, device='cuda:0'),\n", 3172 | " tensor(5.5260, device='cuda:0'),\n", 3173 | " tensor(5.1802, device='cuda:0'),\n", 3174 | " tensor(4.8976, device='cuda:0'),\n", 3175 | " tensor(4.7065, device='cuda:0'),\n", 3176 | " tensor(4.5639, device='cuda:0'),\n", 3177 | " tensor(4.4391, device='cuda:0'),\n", 3178 | " tensor(4.4793, device='cuda:0'),\n", 3179 | " tensor(4.3287, device='cuda:0'),\n", 3180 | " tensor(4.1916, device='cuda:0'),\n", 3181 | " tensor(4.0643, device='cuda:0'),\n", 3182 | " tensor(3.9462, device='cuda:0'),\n", 3183 | " tensor(3.8135, device='cuda:0'),\n", 3184 | " tensor(4.0398, device='cuda:0'),\n", 3185 | " tensor(3.8437, device='cuda:0'),\n", 3186 | " tensor(3.6698, device='cuda:0'),\n", 3187 | " tensor(3.4946, device='cuda:0'),\n", 3188 | " tensor(3.3382, device='cuda:0'),\n", 3189 | " tensor(3.1766, device='cuda:0'),\n", 3190 | " tensor(3.5171, device='cuda:0'),\n", 3191 | " tensor(3.2971, device='cuda:0'),\n", 3192 | " tensor(3.0783, device='cuda:0'),\n", 3193 | " tensor(2.8765, device='cuda:0'),\n", 3194 | " tensor(2.7002, device='cuda:0'),\n", 3195 | " tensor(2.5246, device='cuda:0'),\n", 3196 | " tensor(2.8960, device='cuda:0'),\n", 3197 | " tensor(2.6964, device='cuda:0'),\n", 3198 | " tensor(2.5395, device='cuda:0'),\n", 3199 | " tensor(2.3993, device='cuda:0'),\n", 3200 | " tensor(2.2754, device='cuda:0'),\n", 3201 | " tensor(2.1594, device='cuda:0'),\n", 3202 | " tensor(2.5364, device='cuda:0'),\n", 3203 | " tensor(2.3870, device='cuda:0'),\n", 3204 | " tensor(2.2818, device='cuda:0'),\n", 3205 | " tensor(2.1870, device='cuda:0'),\n", 3206 | " tensor(2.0967, device='cuda:0'),\n", 3207 | " tensor(2.0198, device='cuda:0'),\n", 3208 | " tensor(2.3417, device='cuda:0'),\n", 3209 | " tensor(2.2287, device='cuda:0'),\n", 3210 | " tensor(2.1468, device='cuda:0'),\n", 3211 | " tensor(2.0806, device='cuda:0'),\n", 3212 | " tensor(2.0170, device='cuda:0'),\n", 3213 | " tensor(1.9589, device='cuda:0'),\n", 3214 | " tensor(2.2168, device='cuda:0'),\n", 3215 | " tensor(2.1337, device='cuda:0'),\n", 3216 | " tensor(2.0735, device='cuda:0'),\n", 3217 | " tensor(2.0168, device='cuda:0'),\n", 3218 | " tensor(1.9727, device='cuda:0'),\n", 3219 | " tensor(1.9259, device='cuda:0'),\n", 3220 | " tensor(2.1583, device='cuda:0'),\n", 3221 | " tensor(2.0888, device='cuda:0'),\n", 3222 | " tensor(2.0379, device='cuda:0'),\n", 3223 | " tensor(1.9936, device='cuda:0'),\n", 3224 | " tensor(1.9538, device='cuda:0'),\n", 3225 | " tensor(1.9192, device='cuda:0'),\n", 3226 | " tensor(2.1177, device='cuda:0'),\n", 3227 | " tensor(2.0585, device='cuda:0'),\n", 3228 | " tensor(2.0155, device='cuda:0'),\n", 3229 | " tensor(1.9798, device='cuda:0'),\n", 3230 | " tensor(1.9463, device='cuda:0'),\n", 3231 | " tensor(1.9180, device='cuda:0'),\n", 3232 | " tensor(2.0867, device='cuda:0'),\n", 3233 | " tensor(2.0369, device='cuda:0'),\n", 3234 | " tensor(2.0014, device='cuda:0'),\n", 3235 | " tensor(1.9705, device='cuda:0'),\n", 3236 | " tensor(1.9416, device='cuda:0'),\n", 3237 | " tensor(1.9172, device='cuda:0'),\n", 3238 | " tensor(2.0702, device='cuda:0'),\n", 3239 | " tensor(2.0278, device='cuda:0'),\n", 3240 | " tensor(1.9949, device='cuda:0'),\n", 3241 | " tensor(1.9684, device='cuda:0'),\n", 3242 | " tensor(1.9441, device='cuda:0'),\n", 3243 | " tensor(1.9215, device='cuda:0'),\n", 3244 | " tensor(2.0615, device='cuda:0'),\n", 3245 | " tensor(2.0231, device='cuda:0'),\n", 3246 | " tensor(1.9944, device='cuda:0'),\n", 3247 | " tensor(1.9704, device='cuda:0'),\n", 3248 | " tensor(1.9484, device='cuda:0'),\n", 3249 | " tensor(1.9280, device='cuda:0'),\n", 3250 | " tensor(2.0616, device='cuda:0'),\n", 3251 | " tensor(2.0260, device='cuda:0'),\n", 3252 | " tensor(2.0009, device='cuda:0'),\n", 3253 | " tensor(1.9784, device='cuda:0'),\n", 3254 | " tensor(1.9589, device='cuda:0'),\n", 3255 | " tensor(1.9408, device='cuda:0'),\n", 3256 | " tensor(2.0565, device='cuda:0'),\n", 3257 | " tensor(2.0240, device='cuda:0'),\n", 3258 | " tensor(2.0010, device='cuda:0'),\n", 3259 | " tensor(1.9812, device='cuda:0'),\n", 3260 | " tensor(1.9635, device='cuda:0'),\n", 3261 | " tensor(1.9475, device='cuda:0'),\n", 3262 | " tensor(2.0562, device='cuda:0'),\n", 3263 | " tensor(2.0263, device='cuda:0'),\n", 3264 | " tensor(2.0052, device='cuda:0'),\n", 3265 | " tensor(1.9871, device='cuda:0'),\n", 3266 | " tensor(1.9711, device='cuda:0'),\n", 3267 | " tensor(1.9561, device='cuda:0'),\n", 3268 | " tensor(2.0610, device='cuda:0'),\n", 3269 | " tensor(2.0343, device='cuda:0'),\n", 3270 | " tensor(2.0152, device='cuda:0'),\n", 3271 | " tensor(1.9978, device='cuda:0'),\n", 3272 | " tensor(1.9828, device='cuda:0'),\n", 3273 | " tensor(1.9686, device='cuda:0'),\n", 3274 | " tensor(2.0582, device='cuda:0'),\n", 3275 | " tensor(2.0322, device='cuda:0'),\n", 3276 | " tensor(2.0152, device='cuda:0'),\n", 3277 | " tensor(1.9993, device='cuda:0'),\n", 3278 | " tensor(1.9857, device='cuda:0'),\n", 3279 | " tensor(1.9732, device='cuda:0'),\n", 3280 | " tensor(2.0601, device='cuda:0'),\n", 3281 | " tensor(2.0356, device='cuda:0'),\n", 3282 | " tensor(2.0191, device='cuda:0'),\n", 3283 | " tensor(2.0044, device='cuda:0'),\n", 3284 | " tensor(1.9914, device='cuda:0'),\n", 3285 | " tensor(1.9794, device='cuda:0'),\n", 3286 | " tensor(2.0607, device='cuda:0'),\n", 3287 | " tensor(2.0381, device='cuda:0'),\n", 3288 | " tensor(2.0222, device='cuda:0'),\n", 3289 | " tensor(2.0088, device='cuda:0'),\n", 3290 | " tensor(1.9968, device='cuda:0'),\n", 3291 | " tensor(1.9860, device='cuda:0'),\n", 3292 | " tensor(2.5128, device='cuda:0'),\n", 3293 | " tensor(2.4721, device='cuda:0'),\n", 3294 | " tensor(2.4477, device='cuda:0'),\n", 3295 | " tensor(2.4283, device='cuda:0'),\n", 3296 | " tensor(2.4117, device='cuda:0'),\n", 3297 | " tensor(2.3970, device='cuda:0'),\n", 3298 | " tensor(2.3831, device='cuda:0'),\n", 3299 | " tensor(2.3702, device='cuda:0'),\n", 3300 | " tensor(2.3586, device='cuda:0'),\n", 3301 | " tensor(2.3483, device='cuda:0'),\n", 3302 | " tensor(2.3374, device='cuda:0'),\n", 3303 | " tensor(2.3278, device='cuda:0')],\n", 3304 | " [tensor(8.1753, device='cuda:0'),\n", 3305 | " tensor(8.2121, device='cuda:0'),\n", 3306 | " tensor(5.6380, device='cuda:0'),\n", 3307 | " tensor(5.3670, device='cuda:0'),\n", 3308 | " tensor(4.5743, device='cuda:0'),\n", 3309 | " tensor(4.4048, device='cuda:0'),\n", 3310 | " tensor(4.1665, device='cuda:0'),\n", 3311 | " tensor(3.9326, device='cuda:0'),\n", 3312 | " tensor(3.8588, device='cuda:0'),\n", 3313 | " tensor(3.4387, device='cuda:0'),\n", 3314 | " tensor(3.5454, device='cuda:0'),\n", 3315 | " tensor(2.7719, device='cuda:0'),\n", 3316 | " tensor(3.0922, device='cuda:0'),\n", 3317 | " tensor(2.2784, device='cuda:0'),\n", 3318 | " tensor(2.6855, device='cuda:0'),\n", 3319 | " tensor(2.0504, device='cuda:0'),\n", 3320 | " tensor(2.4754, device='cuda:0'),\n", 3321 | " tensor(1.9140, device='cuda:0'),\n", 3322 | " tensor(2.3159, device='cuda:0'),\n", 3323 | " tensor(1.8427, device='cuda:0'),\n", 3324 | " tensor(2.2275, device='cuda:0'),\n", 3325 | " tensor(1.7557, device='cuda:0'),\n", 3326 | " tensor(2.1277, device='cuda:0'),\n", 3327 | " tensor(1.7653, device='cuda:0'),\n", 3328 | " tensor(2.1099, device='cuda:0'),\n", 3329 | " tensor(1.7105, device='cuda:0'),\n", 3330 | " tensor(2.0463, device='cuda:0'),\n", 3331 | " tensor(1.6892, device='cuda:0'),\n", 3332 | " tensor(2.0110, device='cuda:0'),\n", 3333 | " tensor(1.6745, device='cuda:0'),\n", 3334 | " tensor(1.9939, device='cuda:0'),\n", 3335 | " tensor(1.6453, device='cuda:0'),\n", 3336 | " tensor(1.9480, device='cuda:0'),\n", 3337 | " tensor(1.6494, device='cuda:0'),\n", 3338 | " tensor(1.9437, device='cuda:0'),\n", 3339 | " tensor(1.6476, device='cuda:0'),\n", 3340 | " tensor(1.9268, device='cuda:0'),\n", 3341 | " tensor(1.6661, device='cuda:0'),\n", 3342 | " tensor(1.9406, device='cuda:0'),\n", 3343 | " tensor(1.6442, device='cuda:0'),\n", 3344 | " tensor(1.9116, device='cuda:0'),\n", 3345 | " tensor(1.6579, device='cuda:0'),\n", 3346 | " tensor(1.9229, device='cuda:0'),\n", 3347 | " tensor(2.1860, device='cuda:0'),\n", 3348 | " tensor(2.3678, device='cuda:0'),\n", 3349 | " tensor(2.3918, device='cuda:0'),\n", 3350 | " tensor(2.4828, device='cuda:0')])" 3351 | ] 3352 | }, 3353 | "execution_count": 24, 3354 | "metadata": {}, 3355 | "output_type": "execute_result" 3356 | } 3357 | ], 3358 | "source": [ 3359 | "tr_losses,vl_losses" 3360 | ] 3361 | }, 3362 | { 3363 | "cell_type": "markdown", 3364 | "metadata": {}, 3365 | "source": [ 3366 | "# Final" 3367 | ] 3368 | }, 3369 | { 3370 | "cell_type": "code", 3371 | "execution_count": 11, 3372 | "metadata": {}, 3373 | "outputs": [ 3374 | { 3375 | "name": "stdout", 3376 | "output_type": "stream", 3377 | "text": [ 3378 | "True:\tthis is one of the worst sandra bullock movie since speed 2 but not quite that bad . i really lost it with those out of the blue not so \" special effect \" . guys , if you ' re an ins ##om ##nia ##c go with your girl to see this movie . i give it three sleep ##ies ! [SEP] \n", 3379 | "Predicted:\tthis is one of the worst movies i ' ve ever seen . not since the very bad guys \" with 2 guys that really ins ##om ##nia ##c \" , but it is so camp ##y that it bog ##s down an ins ##om ##nia ##c ' s with 2 guys sitting in a pile of really hot . i give this movie 2 out of 10 . [SEP] \n", 3380 | "---------------\n", 3381 | "True:\ti think the film makes a sub ##tile reference to rouge of ki ##es ##low ##ski , as the whole atmosphere gives me a feeling of red . it seems to be that a lot of the backgrounds contain red , think of the tea - room f . e . i also think this is one of the greatest movies of the last years . [SEP] \n", 3382 | "Predicted:\ti think of the last of the film , a red haired red ##eem ##ing features of a lot of the previous films , a sub - titles that seems to be red ##eem ##ed , gives the whole movie a feeling of amusement . also i think this is one of the greatest films i have ever seen . it seems to me that it is as strong as the god awful red ##unda ##ncy . [SEP] \n", 3383 | "---------------\n", 3384 | "True:\tpublicity got me to the theatre < br / > < br / > advice will take you away from this waist of time . < br / > < br / > very bad everything . < br / > < br / > do you really want to see a monkey talking with a technological device ? < br / > < br / > x [SEP] \n", 3385 | "Predicted:\tgot to the video rental place . < br / > < br / > take a very bad advice from you will want to see this . < br / > < br / > flight got everything with a very difficult talking nonsense and talking animals talking about the windows of course . < br / > < br / > do you want to see a total nonsense ? < br / > < br / > [SEP] \n", 3386 | "---------------\n" 3387 | ] 3388 | } 3389 | ], 3390 | "source": [ 3391 | "for i, batch in islice(enumerate(valid_iter), 3, 6):\n", 3392 | " print(\"True:\", end=\"\\t\")\n", 3393 | " for i in range(1, batch.text.size(1)):\n", 3394 | " sym = TEXT.vocab.itos[batch.text.data[0, i]]\n", 3395 | " print(sym, end =\" \")\n", 3396 | " if sym == \"[SEP]\": break\n", 3397 | " print()\n", 3398 | "\n", 3399 | " src = batch.text[:1]\n", 3400 | " src_mask = (src != TEXT.vocab.stoi[\"[PAD]\"]).unsqueeze(-2)\n", 3401 | " with torch.no_grad():\n", 3402 | " out = greedy_decode(model, src, src_mask, \n", 3403 | " max_len=256, start_symbol=TEXT.vocab.stoi[\"[CLS]\"])\n", 3404 | " print(\"Predicted:\", end=\"\\t\")\n", 3405 | " for i in range(1, out.size(1)):\n", 3406 | " sym = TEXT.vocab.itos[out[0, i]]\n", 3407 | " print(sym, end =\" \")\n", 3408 | " if sym == \"[SEP]\": break\n", 3409 | " print()\n", 3410 | " print(\"---------------\")" 3411 | ] 3412 | }, 3413 | { 3414 | "cell_type": "code", 3415 | "execution_count": null, 3416 | "metadata": {}, 3417 | "outputs": [], 3418 | "source": [ 3419 | "# with open('VOCAB.pkl', 'wb') as output:\n", 3420 | "# pickle.dump(TEXT.vocab, output, pickle.HIGHEST_PROTOCOL)\n", 3421 | "\n", 3422 | "with open('VOCAB.pkl', 'rb') as input:\n", 3423 | " vocab = pickle.load(input)\n", 3424 | " print(len(vocab)) # 22365" 3425 | ] 3426 | }, 3427 | { 3428 | "cell_type": "code", 3429 | "execution_count": 22, 3430 | "metadata": {}, 3431 | "outputs": [], 3432 | "source": [ 3433 | "model = torch.load('./trauto_2019-05-14-01:21:08_520.pth')" 3434 | ] 3435 | }, 3436 | { 3437 | "cell_type": "code", 3438 | "execution_count": 23, 3439 | "metadata": {}, 3440 | "outputs": [ 3441 | { 3442 | "name": "stdout", 3443 | "output_type": "stream", 3444 | "text": [ 3445 | "0\n", 3446 | "1000\n", 3447 | "2000\n", 3448 | "3000\n", 3449 | "4000\n", 3450 | "5000\n", 3451 | "6000\n", 3452 | "7000\n", 3453 | "8000\n", 3454 | "9000\n", 3455 | "10000\n", 3456 | "11000\n", 3457 | "12000\n", 3458 | "13000\n", 3459 | "14000\n", 3460 | "15000\n", 3461 | "16000\n", 3462 | "17000\n", 3463 | "18000\n", 3464 | "19000\n", 3465 | "20000\n", 3466 | "21000\n", 3467 | "22000\n", 3468 | "23000\n", 3469 | "24000\n", 3470 | "0\n", 3471 | "1000\n", 3472 | "2000\n", 3473 | "3000\n", 3474 | "4000\n", 3475 | "5000\n", 3476 | "6000\n", 3477 | "7000\n", 3478 | "8000\n", 3479 | "9000\n", 3480 | "10000\n", 3481 | "11000\n", 3482 | "12000\n", 3483 | "13000\n", 3484 | "14000\n", 3485 | "15000\n", 3486 | "16000\n", 3487 | "17000\n", 3488 | "18000\n", 3489 | "19000\n", 3490 | "20000\n", 3491 | "21000\n", 3492 | "22000\n", 3493 | "23000\n", 3494 | "24000\n" 3495 | ] 3496 | } 3497 | ], 3498 | "source": [ 3499 | "def get_auto_hid(exs):\n", 3500 | " x_auto = torch.zeros(25000, 512)\n", 3501 | " y_auto = []\n", 3502 | " model.eval()\n", 3503 | "\n", 3504 | " with torch.no_grad():\n", 3505 | " for i, ex in enumerate(exs):\n", 3506 | " src = torch.tensor([TEXT.vocab.stoi[\"[CLS]\"]] + [TEXT.vocab.stoi[t] for t in ex.text] + [TEXT.vocab.stoi[\"[SEP]\"]]).unsqueeze(-2)\n", 3507 | " src_mask = torch.ones(src.size())\n", 3508 | " hid = model.encode(src.to(device), src_mask.to(device))\n", 3509 | " x_auto[i] = hid[0,0]\n", 3510 | " y_auto.append(ex.label)\n", 3511 | " if i % 1000 == 0: print(i)\n", 3512 | " return x_auto, y_auto \n", 3513 | "\n", 3514 | "x_tr_auto, y_tr_auto = get_auto_hid(orig_train_examples)\n", 3515 | "x_vl_auto, y_vl_auto = get_auto_hid(orig_val_examples)" 3516 | ] 3517 | }, 3518 | { 3519 | "cell_type": "code", 3520 | "execution_count": 24, 3521 | "metadata": {}, 3522 | "outputs": [ 3523 | { 3524 | "name": "stderr", 3525 | "output_type": "stream", 3526 | "text": [ 3527 | "/anaconda/envs/py36/lib/python3.6/site-packages/ipykernel/__main__.py:37: UserWarning: Attempted to set non-positive left xlim on a log-scaled axis.\n", 3528 | "Invalid limit will be ignored.\n" 3529 | ] 3530 | }, 3531 | { 3532 | "data": { 3533 | "image/png": "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NUDwUURERERGTmFEJoU1a9aQl5fHxo0bWbZsGRs2bOhzTKCovb99I/Xd736XnTt3cvPNN/PEE0/gcjmdhF/96lc577zzeh3rcrnYsGEDf/rTn9i0aROXXnopX//618+4DSIiIiJTncLIJJf3/54PdROGrew7Hwt1E4btkUcewe12853vfCcYRMCpL/nCF77Agw8+GMLWiYiIiEwNCiMS1nw+Hw888ECf7XfeeSe5ubn9nlNXVxecRjhQp9LTmjVrFEZEREREJoDCiIQ1n8/H/fff32f75ZdfPmAYaWhoAGDGjBn97s/MzBy7BoqIiIjIgBRGJrnRDn1qamoCIDExcSybM+lERET0mf1qKMnJyQCcPHmy3/0nTpw443aJiIiIyNA0ta9MGm63GwCv1zuuz5OamkpeXh5Hjx6lrKysz/6tW7eO6/OLiIiIiENhRCaN1NRUjDEcPXp03J/rU5/6FF6vl69+9av4fL7g9tLSUn70ox+N+/OLiIiIiIZpySSSkJDABRdcwGuvvca6desoKCjA7XZzzTXXsHTp0jF9rq985Sv84Q9/YMuWLZSUlHDllVdSW1vLli1buOSSS/jjH/84ps8nIiIiIn0pjMiksmnTJu655x5efPFFnnjiCay1ZGdnj3kYiY2N5ZVXXuGb3/wmv/3tb3nooYeYO3cuGzZs4GMf+5jCiIiIiMgEUBiRSWX+/Pk8++yz/e7rr75jOMrLy/vdnpyczMaNG9m4cWOffY2NjX22XX755SMulhcRERGRgalmREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhREREREREQkJhRCaNsrIyjDHccccdoW6KiIiIiEwAhREREREREQkJhREREREREQkJhREREREREQkJhRGZlPbv3891111HWloa8fHxXHTRRbz00ku9jmloaOB73/sel156KdnZ2URFRZGRkcE111zDm2++OeC1H3/8cVasWEFsbCzTp09n/fr1VFRUsGbNGowx431rIiIiIuKnMCKTzuHDh1m5ciW1tbXcddddfOITn2Dnzp1cffXVbN68OXjcvn37uPfee3G5XHzsYx/ji1/8IldccQWvvPIKq1ev5sUXX+xz7e9+97vceuutlJWVcfvtt/OpT32KvXv3smrVKurr6yfyNkVERESmvIhQN0DkdNu3b+fLX/4y3/ve94LbvvCFL7By5Uo+97nPcfXVV5OUlMTChQupqKggPT291/nl5eWcf/753HPPPVx11VXB7YcOHeLee+8lPT2dXbt2kZOTA8B3vvMdbrnlFp588smJuUERERERARRGJr8NyaM6LXGMmzEsGxrG5DLJycl885vf7LXtQx/6EOvWrePRRx/l97//PbfffjvJyf2/NtnZ2dx00008/PDDHD16lNzcXAB+85vf4PF4uPvuu4NBBMAYw3e+8x1++9vf4vV6x+QeRERERGRoGqYlk86KFStITOwbp9asWQPAu+++G9y2Y8cObr75ZnJycoiOjsYYgzGGhx9+GIDjx48Hjw2cd9FFF/W59uzZs3sFFBEREREZf+oZkUlnxowZ/W7PzMwEnMJ1gN///vfcdNNNxMTEcMUVVzBv3jzi4+NxuVxs3bqVbdu20dHRETw/cN5A158xYwZlZWVjeCciIiIiMhiFkclulEOfmpqaAPrtYZjsTp482e/2EydOAASHZ33jG98gKiqKd955h4ULF/Y69q677mLbtm29tiUlJQWvv3jx4mE/r4iIiIiMDw3Tkkln165dwTDV09atWwFYvnw5AAcPHmTRokV9gojP5+P111/vc37gvP72HTlyhGPHjp1p00VERERkBBRGZNJpaGjggQce6LXtnXfe4fHHHyc5OZnrr78egLy8PEpKSqioqAgeZ61lw4YNFBUV9bnuLbfcQkREBA8//HCv4GGt5Wtf+5qK10VEREQmmIZpyaSzevVqfv7zn/PWW2+xatUqKisr2bx5Mz6fj5/+9KfB4Vb33HMPn/vc51i+fDk33ngjkZGR7Nixg6KiIj7+8Y/z7LPP9rruvHnzeOCBB/jXf/1XCgsL+eQnP0lycjIvv/wytbW1FBYWsnv37lDcsoiIiMiUpJ4RmXTmzJnDG2+8QWpqKj/5yU/YsmULK1as4IUXXuCTn/xk8Li77rqLRx55hJkzZ/Loo4/y+OOPk5OTw1tvvcWKFSv6vfbXvvY1HnvsMWbPns0jjzzCL37xCxYuXMiOHTvweDzBoCMiIiIi4089IzJp5OXlYa0N/vkPf/jDkOfccccd3HHHHX22L1myhA0bNvR7zvr161m/fn2vbY2NjZSWlrJs2bIRtVlERERERk89IzKlVFVV0dXV1Wubx+PhS1/6Eu3t7cF6FBEREREZf+oZkSnlqaee4pvf/CaXX345OTk51NbWsn37doqLi1m2bBl33313qJsoIiIiMmUojMiUcsEFF3DRRRexfft2ampqAKdG5d577+WrX/0qsbGxIW6hiIiIyNShMCJTyvLly3n66adD3QwRERERQTUjIiIiIiISIgojIiIiIiISEgojIiIiIiISEgojIiIiIiISEgojIiIiIiISEgojIiIiIiISEgojIiIiIiISEgojIiIiIiISEgojIiIiIiISElqBXURERERkEuryddHc2UxzV3Ofx6bOJlq6WmjqaqLOWxfqpo6awohMGmVlZcyZM4fbb7+dX/3qV2N67Z///Od85jOfGXD/z372Mz796U/32vb222/z8ssv89577/Huu+9y6tQpZs+eTVlZWb/XqK6u5ve//z3PP/88H3zwAcePHyc6OpolS5Zw5513cscdd2CMGcvbEhERkUnIWkubp61XYOgTKvzf9zympbOlV9Bo97YP6/mavc3jfEfjR2FEppTrr7+epUuX9tm+YsWKPts2b97Mz372M6Kioli4cCGnTp0a9NpPPvkkd999N7NmzWLt2rXk5ORw4sQJnn76ae68805efPFFNm/ePGb3IiIiImOvy9dFS6c/HHS10NTZ1CdABIOE/5j+tvmsL9S3EhYURmRKueGGG7j11luHdez69ev5/Oc/z+LFizHGEBkZOejxCxYs4LnnnuPqq6/G5eoux3rwwQc5//zz2bJlC7fccgvXXnvtGd2DiIiI9BXojRgoMDR1NvXaN1DQGG5vxERwGRfxkfEkRiYSH+U8JkQlBLclRCWQEJnAfRH3UUllqJs7KmEZRowx2cADwFXANKASeAa431o77EFzxpgbgbuB5UAUcAj4NfCf1trOsW63DGzDhg3cf//9ADz66KM8+uijwX2PPPIIeXl5rF27lvvuu4+PfvSj3H///bz55pvU1dVx+PBh8vLyxrxNy5YtIzExEQCPxzPk8Zdffnm/22fNmsVnP/tZ7rvvPrZu3aowIiIichqPz9NvYAgMV+pVI9HZO1z03Oa13lDfSlCMO8YJDVGJJEQm9AoTCZEJ3Y89v49KcIKH/7zYiNhhDfH+nut7E3BH4yPs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\n", 3534 | "text/plain": [ 3535 | "
" 3536 | ] 3537 | }, 3538 | "metadata": { 3539 | "image/png": { 3540 | "height": 265, 3541 | "width": 401 3542 | }, 3543 | "needs_background": "light" 3544 | }, 3545 | "output_type": "display_data" 3546 | } 3547 | ], 3548 | "source": [ 3549 | "hist3 = get_acc_on_samples(x_tr_auto.cpu().numpy(), y_tr_auto, x_vl_auto.cpu().numpy(), y_vl_auto)\n", 3550 | "plot_new_hist(hist3, \"tr-512\")" 3551 | ] 3552 | }, 3553 | { 3554 | "cell_type": "code", 3555 | "execution_count": 25, 3556 | "metadata": {}, 3557 | "outputs": [ 3558 | { 3559 | "data": { 3560 | "text/plain": [ 3561 | "[0.75752, 0.79372, 0.84776, 0.85912, 0.8792, 0.90064, 0.90316, 0.91012]" 3562 | ] 3563 | }, 3564 | "execution_count": 25, 3565 | "metadata": {}, 3566 | "output_type": "execute_result" 3567 | } 3568 | ], 3569 | "source": [ 3570 | "hist3" 3571 | ] 3572 | }, 3573 | { 3574 | "cell_type": "code", 3575 | "execution_count": null, 3576 | "metadata": {}, 3577 | "outputs": [], 3578 | "source": [] 3579 | } 3580 | ], 3581 | "metadata": { 3582 | "accelerator": "GPU", 3583 | "colab": { 3584 | "name": "kursa4.ipynb", 3585 | "provenance": [], 3586 | "toc_visible": true, 3587 | "version": "0.3.2" 3588 | }, 3589 | "kernelspec": { 3590 | "display_name": "Python 3", 3591 | "language": "python", 3592 | "name": "python3" 3593 | }, 3594 | "language_info": { 3595 | "codemirror_mode": { 3596 | "name": "ipython", 3597 | "version": 3 3598 | }, 3599 | "file_extension": ".py", 3600 | "mimetype": "text/x-python", 3601 | "name": "python", 3602 | "nbconvert_exporter": "python", 3603 | "pygments_lexer": "ipython3", 3604 | "version": "3.7.1" 3605 | }, 3606 | "pycharm": { 3607 | "stem_cell": { 3608 | "cell_type": "raw", 3609 | "metadata": { 3610 | "collapsed": false 3611 | }, 3612 | "source": [] 3613 | } 3614 | } 3615 | }, 3616 | "nbformat": 4, 3617 | "nbformat_minor": 1 3618 | } 3619 | --------------------------------------------------------------------------------