-
Notifications
You must be signed in to change notification settings - Fork 0
/
dcgan.py
552 lines (552 loc) · 125 KB
/
dcgan.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "5f4a2dbe-dfdc-4f91-8e8d-6c59443292c9",
"metadata": {},
"outputs": [],
"source": [
"import torch \n",
"import torch.nn as nn \n",
"import numpy as np \n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.metrics import accuracy_score\n",
"from torchvision import transforms\n",
"from torch.utils.data import DataLoader\n",
"from torchvision.utils import make_grid\n",
"import matplotlib.pyplot as plt\n",
"import torch.nn.functional as F\n",
"from tqdm import tqdm\n",
"import os \n",
"from torchvision.io import read_image\n",
"import argparse\n",
"import os\n",
"import random\n",
"import torch.nn.parallel\n",
"import torch.optim as optim\n",
"import torchvision.utils as vutils\n",
"import matplotlib.animation as animation\n",
"from IPython.display import HTML\n",
"from torchvision.datasets import ImageFolder\n",
"from torch.optim import Adam\n",
"import glob\n",
"import json\n",
"# from torchinfo import summary"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "ef6e5007-d472-4aa6-ba45-5efb3d25cf70",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Device: cuda:0\n"
]
}
],
"source": [
"# Root directory for dataset\n",
"root_dir = r'/run/media/magnusjsc/T7/Classification-and-3D-reconstruction-of-archaeological-artifacts_DATA/Splitted data by era - GAN project/test_iron'\n",
"res_dir = r'results/gan_results'\n",
"\n",
"# Number of workers for dataloader. (4 * nr_gpus)\n",
"workers = (4 * 1)\n",
"\n",
"# Spatial size of training images. All images will be resized to this size, using a transformer.\n",
"image_size = 64\n",
"\n",
"# Beta1 hyperparameter for Adam optimizers\n",
"beta1 = 0.5\n",
"\n",
"# RGB\n",
"n_channels = 3 \n",
"\n",
"# Number of GPUs available. Use 0 for CPU mode.\n",
"ngpu = 1\n",
"\n",
"# Decide which device we want to run on\n",
"device = torch.device(\"cuda:0\" if (torch.cuda.is_available() and ngpu > 0) else \"cpu\")\n",
"print(\"Device: \", device)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "703866ef-ef7e-4d5d-a754-51dd23d80704",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-1.0..0.7647059].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-1.0..0.9137255].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-1.0..0.9764706].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-0.81960785..1.0].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-1.0..0.96862745].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-0.73333335..0.9764706].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-1.0..0.88235295].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-0.90588236..0.8745098].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-0.99215686..0.78039217].\n",
"Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers). Got range [-0.9372549..1.0].\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAHuCAYAAADeCcaMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOyde3hcVbn/306H6XQ6TIc0hDQNIYRSaqm11For1oKVqyIHERH9KTf1wFFEUVGPihzRgyIcBA+iR1FRKV5ARbyBcriJ5V7aUkrpNQ1pmqZpOk2n02E6nfn9wWG937U6a7pzmSaTfj/Pk+d5Z++1915777XWXnvn/b7vqGKxWBRCCCGEEEIIIYQQQgaZ0FBXgBBCCCGEEEIIIYSMTPjhiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhF4IcnQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhH44YkQQgghhBBCCCGEVAR+eOoHt99+u4waNUqeeeaZoa5KRfn+978v73vf+6SpqUlGjRolF1544VBXiZBB4UDowy+//LJ87Wtfkzlz5sghhxwitbW1cuKJJ8oDDzww1FUjZEAcCP13165d8pGPfESmT58u48ePl3g8Lm94wxvk5ptvlt27dw919QgZEAdCH3Z57LHHZNSoUTJq1Cjp7u4e6uoQ0m8OlP77Wn91/771rW8NddWqlvBQV4AMX6677jrZsWOHzJkzRzZt2jTU1SGE9IE//OEPct1118lZZ50lF1xwgeTzefn5z38uJ598svzkJz+Riy66aKirSAjxsGvXLnnhhRfkne98pzQ3N0soFJJFixbJFVdcIU8++aTceeedQ11FQkhACoWCfPKTn5Rx48bJzp07h7o6hJCAnHzyyXL++edby4477rghqk31ww9PxMsjjzxivJ3i8fhQV4cQ0gfe/va3S1tbm9TW1ppll156qcycOVO++tWv8sMTIcOYmpoaeeKJJ6xll156qYwfP15uueUWufHGG6W+vn6IakcI6Qs//OEP5eWXX5aPfvSjcvPNNw91dQghAZkyZYp86EMfGupqjBgotRskLrzwQonH49LW1iZnnHGGxONxmTRpknzve98TEZHnn39eFixYIOPGjZMjjjhir/9W9vT0yOc+9zl5/etfL/F4XBKJhJx++umydOnSvY61YcMGOfPMM2XcuHFSV1cnV1xxhdx///0yatQoefjhh62yTz75pJx22mkyfvx4icVicsIJJ8g///nPQOd0xBFHyKhRo/p3QQipMkZaHz722GOtj04iImPGjJF3vvOd0t7eLjt27OjjFSJk+DLS+q+P5uZmERFJpVL93gchw5GR2od7enrkK1/5ilxzzTWSTCb7fF0IqQZGav8VedUDOZvN9u2CkJLww9MgsmfPHjn99NPl8MMPl29/+9vS3Nwsl112mdx+++1y2mmnyezZs+W6666Tgw8+WM4//3xZv3692XbdunVyzz33yBlnnCE33nijXHnllfL888/LCSecIB0dHabczp07ZcGCBfLAAw/I5ZdfLl/+8pdl0aJF8oUvfGGv+jz44IMyf/586e3tlauvvlquvfZaSaVSsmDBAnnqqaf2yzUhpJo4EPpwZ2enxGIxicVi/dqekOHKSOy/uVxOuru75eWXX5bf//73csMNN8gRRxwhkydPHvgFI2SYMRL78FVXXSX19fVyySWXDPwCETKMGYn99/bbb5dx48bJ2LFjZdq0aZS5D5Qi6TM//elPiyJSfPrpp82yCy64oCgixWuvvdYs27ZtW3Hs2LHFUaNGFX/1q1+Z5StXriyKSPHqq682y7LZbHHPnj3WcdavX18cM2ZM8ZprrjHL/uu//qsoIsV77rnHLNu1a1dx6tSpRREpPvTQQ8VisVgsFArFo48+unjqqacWC4WCKZvJZIpHHnlk8eSTT+7TOY8bN654wQUX9GkbQoYrB2IfLhaLxdWrVxej0Wjxwx/+cJ+3JWS4cCD131/+8pdFETF/s2fPLi5btizQtoQMVw6UPrx06dLi6NGji/fff3+xWCwWr7766qKIFLds2bLPbQkZrhwo/ff4448v3nTTTcU//OEPxe9///vF6dOnF0WkeOutt+77IpGS0ONpkPnoRz9q7GQyKcccc4yMGzdOzj33XLP8mGOOkWQyKevWrTPLxowZI6HQq7djz549snXrVonH43LMMcfI4sWLTbn77rtPJk2aJGeeeaZZFo1G5WMf+5hVjyVLlsjq1avlgx/8oGzdulW6u7ulu7tbdu7cKe94xzvk0UcflUKhMOjnT0i1M1L7cCaTkfe9730yduxYZuQgI5aR1n/f/va3y9///ne566675NJLL5WDDjqIwYnJiGYk9eHLL79cTj/9dDnllFP6dzEIqTJGUv/95z//KZ/61KfkzDPPlEsvvVSeffZZmT59unzpS1+SXbt29e8CHeAwuPggEo1G5dBDD7WWjR8/XhobG/eKlTR+/HjZtm2b+V0oFOTmm2+WW2+9VdavXy979uwx6yZMmGDsDRs2yFFHHbXX/ly3+9WrV4uIyAUXXOCt7/bt2+WQQw4JeHaEjHxGah/es2ePnHfeebJixQr561//Kg0NDfvchpBqYyT238MOO0wOO+wwERE555xz5Nprr5WTTz5ZVq9ezeDiZMQxkvrwr3/9a1m0aJEsX77cuz0hI4mR1H9LEYlE5LLLLjMfoebNmxd4W/Iq/PA0iIwePbpPy4vForGvvfZaueqqq+Tiiy+Wr3/961JTUyOhUEg+/elP98sz6bVtrr/+epk5c2bJMsxUR4jNSO3DH/vYx+RPf/qTLFy4UBYsWNDnuhBSDYzU/oucc8458uUvf1n+8Ic/MGYMGXGMpD585ZVXyvve9z6JRCLS2toqIpoU4OWXX5ZcLsd/ApERxUjqvz4OP/xwEXk1GDrpO/zwNEy4++675e1vf7v8+Mc/tpanUikrM9URRxwhK1askGKxaH3tXbNmjbXdUUcdJSIiiURCTjrppArWnBAiMnz78JVXXik//elP5aabbpIPfOAD/d4PISOZ4dp/XV5z79++ffug7ZOQkcBw68Mvv/yy3HnnnSWDEc+aNUve8IY3yJIlS/q8X0JGIsOt//p4TR7oenaRYDDG0zBh9OjR1pdfEZG77rpLNm7caC079dRTZePGjXLvvfeaZdlsVn70ox9Z5d74xjfKUUcdJTfccIOk0+m9jrdly5ZBrD0hZDj24euvv15uuOEG+dKXviSf+tSn+nI6hBxQDLf+293dvVd9RERuu+02ERGZPXt2+RMi5ABjuPXh3//+93v9vf/97xcRkZ///Ofyne98p0/nR8hIZrj131Lrd+zYITfddJPU1tbKG9/4xn2eE9kbejwNE8444wy55ppr5KKLLpLjjz9enn/+eVm4cKG0tLRY5S655BK55ZZb5AMf+IB86lOfkokTJ8rChQslGo2KiJivv6FQSG677TY5/fTT5dhjj5WLLrpIJk2aJBs3bpSHHnpIEomE/PGPfyxbpz/+8Y+ydOlSERHZvXu3LFu2TL7xjW+IiMiZZ54pM2bMGOzLQEjVMtz68O9//3v5/Oc/L0cffbS87nWvkzvuuMNaf/LJJ5vYMYQc6Ay3/nvHHXfID37wAznrrLOkpaVFduzYIffff7/8/e9/l3e/+92UzBLiMNz68FlnnbXXstc8nE4//XTLi4OQA53h1n+/973vyT333CPvfve7pampSTZt2iQ/+clPpK2tTX7xi19IJBKp3MUYwfDD0zDhS1/6kuzcuVPuvPNO+fWvfy2zZs2SP//5z/LFL37RKhePx+XBBx+UT37yk3LzzTdLPB6X888/X44//nh573vfazqeiMiJJ54ojz/+uHz961+XW265RdLptNTX18ub3/zmQLEhfvvb38rPfvYz8/u5556T5557TkREGhsb+eGJEGC49eHXPhqvXr1aPvzhD++1/qGHHuKHJ0L+j+HWf+fNmyeLFi2SX/7yl7J582YJh8NyzDHHyI033iif/OQnK3INCKlmhlsfJoQEZ7j137e+9a2yaNEiue2222Tr1q0ybtw4mTNnjvzkJz/hP34GwKhiKV9uUnXcdNNNcsUVV0h7e7tMmjRpqKtDCOkj7MOEVC/sv4RUN+zDhFQv7L/VAT88VSG7du2SsWPHmt/ZbFaOO+442bNnj6xatWoIa0YICQL7MCHVC/svIdUN+zAh1Qv7b/VCqV0VcvbZZ0tTU5PMnDlTtm/fLnfccYesXLlSFi5cONRVI4QEgH2YkOqF/ZeQ6oZ9mJDqhf23euGHpyrk1FNPldtuu00WLlwoe/bskWnTpsmvfvUrky2DEDK8YR8mpHph/yWkumEfJqR6Yf+tXii1I4QQQgghhBBCCCEVITTUFSCEEEIIIYQQQgghIxN+eCKEEEIIIYQQQgghFYEfngghhBBCCCGEEEJIRQgcXHzUqFGVrAchVc9wD5fGPkxIeYZzH65U/8X9Tp8+3dizZs0ydmdnp7UN/m5qajJ2LpczdiKRMPZTTz1l7FRPxtixeNTa76ZNLxt73Lhxxt65c2fJuh9yiJaprasxdmNDs1Wura3N2O3t7cZ+5ZU9JfdL9mbsmNHGnjFjhrFra2utcn/+69/3W51chnP/FRGRh283Zj6dNnY21WPsQjqDW0g0r30q35Mydqary9jhgk7lQzHtB2u6db+/efRRa78/WL/N2NuD1H2AjAV71yDudwzYCbBjYEfAzoPdIzZ4HUaDnQQbX5rwP/cFsHud/Q7m+e5vDgI7CXYz2PPBrofHVARvgoiE4YLF4KaE4OKd3zN8+zDn0ISUJ8gzmB5PhBBCCCGEEEIIIaQiBPZ4IoQQQkj1M3as+h9ks1lj9/SoD8CqVauMjZ5MIiKhkP7PKpVKGbujo8PY0Wi0ZJl8Xretra2z9jt16lRjd3aqZ1Jr67qS5xGPq49DIpE0dk1NjVUuDd4la9duKLkvZOxY/T9/Nrvb2IEdavAf40mwt8mgcfTR440djcaN3d6m9yAW0+WTJ0+xts/n1c0Ar53v/5H5vPqKxOO6X/QmExEZf7C2re07qtnXY/DJ9qovTAT6UCSsfSUXylrbhCK6Lgz3sxDRfXWl1O7p1rZ+D3g5/W2ztmOR/ePlhKA3UhzsLQPc7yuefY0DG4+H3k+2r55dR/SMQr9MdOLBnuIrLyLSDXZp383hC74k4rXDc7RGDPhRQDcwESmESpcL8030AAZ9IfG5ja3N1wqTzr4ism/609gK+y5ikd93kb1AT9cgxyt4bPc31iUtpcHrhs+fjQHq0Xfo8UQIIYQQQgghhBBCKgI/PBFCCCGEEEIIIYSQinDAOTh+9op/M/aMGdOtdWHw98xBQEdc7v9S5/EhDUi4z76mfXX9s+UR3iq6rrHgK4tyi0WLNFjs9//np32uCyF94u0Q6jMKzu5hpyFb3RBcTAtoezdQM1LGZdfX9fKeFXk8NrixOoE3JYzbY71gbEBf9RyUB/mS9DjylidLV4scWEyaNMnYDQ0Nxu4F+Q9K4lasWOHdVyajbuG4L+SFF14w9iGHTDD2tGkqp0vWJKxtGhrqjR2HwOP46OruVuFKMpk0dn29yvbmzp1r7TcW08729NPPlawvsmvX7pLLjzhKz6Mjv9VaFwXdTm2L2utRJei5pG+ZqyGSk6FGa10mh2OR2hGQMtbW6HW78PzZxkYpYt43Poktt8S5CMotMSg7Ll/x4mprX8M3NPDQk8vodbZGe3hGhCO2UCufg23gnseatJ20ZdYY+8EVi419N8jrSotV9x8o+ECJm09q54Zx7mu7Qkkbiljw2O40GB/JGHjcJ2rxSfDcRzsKiDJSmhTYmz1lhgK8b3i9msHGJ0AsCXO1sD3mRCO6hygM6rlc6fGWDCbYo7DlJp1y+LzBlusL1x/12G4vQLBcOIDtm4/nnN9B3ov742+zP6R2g/k5xvcu4bvuWF8UBi8Wm6UDrNfeNSKEEEIIIYQQQgghZNDghydCCCGEEEIIIYQQUhEOCKndMa870tgzZk6FNXb2EPRED6NvP7itFbwud1o+HHJzWuz7+14o0CdAOHbIdeXbtytgOAS323M8NwsFSngwS9EppywwdjKp7vzfvO7mfdaDkEB8QGUtMgWcuSMgz3HbMbp2h8ANN++R2qFEDTth1NkxdgzsejmUvmF5WI4DC8gm9joG/vYo7STicY+1ZLTOsH4KVOwplWTI/TuEHDhMmzbN2JjlDTPZbdnS9xxTmO2srk7lbpj5LJlUl/26Wu3LXV2d1r7SaRWioDwOnz0R6AMoBUcpWS5nP9ubm5uNfeSRhxt7/fqX3dPZi+OOe72x61uSxp411a578ywdl5ase1aPsQoKYbW0SjJz+vHGnt4wz9rvyjaVuHV06jF7e/UeNjbozhIJEBPBOJRJq6RSxLmmYZUyJOB5jmVQXtkJ9Qg5mqg91Np5wfmjNd+EAT/kTMsLIL3LhXSj3rSO63c/BtnrXtBxfe3Aqjuo4CMNH5WHgY0t1J2K4jZ9bWJYPgW2m+MpIaVJeWzMyZkE232xikHirlqchoOCCFSYkgSdIEr+BpoBsD/4RDt4rcKqFJY8jMkRJ4RINKZtOQphEvKp/Z1jcTiDA2o5AWfCY/u2QblaudAwQaRvPnkd0uv89rWkiKeMzw4a1qavfjV9D1/T92OXyz6XLlOur+D2vntY+huH/YJTmU9E9HgihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhFGbIyncQdrSs/PfObjsAbS1pY9e5++NAChcjpO39H6dozQXukagxyjT8VFRCQMsR/seBqquJ85c6ax/+v6rxv7s1deFewghLwGxEKQFojrlAAdec6n9xYRaK9WEA3LhvJZWF6AFRmng2QgwgTGaUEZewa3h+VWV4VBJxoXC4h/IBHYKA7nmAQ75rHdca0B9rsAYtzVQ4yan+071g2pPiZM0DhpGK8H7dbW1gEdA+NFZbPaOWpqakqWSaU0zlhXV4e9MwyzFtWGXFur0VTq6jSGET6HWls1YXxNEpOmiyQSGgMjEvGlZi4NxqqKWX02aRcMQUyqJAxkyV1QBsrDOJLJ6rbxaKO120RMr113JKW7Tep59EJsrLZWjQmFB8zl7DkDxt2Kx8NQTq9pGCZJGMtr6zaNIzTmIDvIUxKuV2+vltu9Rw54otAnchjUB59pzvwxBPH7erq6jP23R58w9h0Q12njYFS0BBBx0Ypz5N7WcWAnwcZHIibsjntsN/7SYIUO2+2xRUSgp1qRdnzHxrhTGIvJjRUVgx0nsdx4taELSu0ktXthjrHGCcvYBfYuqTw1YCfBzljhNPVqJSP2FS5APKA8vISEo6Nl5DDO+e2LpYPxl6KeMjiZc2M8JcHGnuOLv+SJD7rXy6AvDhAux22wF/jO1T0mkgtQBifdeE7OHDpQHCvfMYK+gw/g20DZGE9B6rXvGNN7g/vFFxbf9fG1v8GDHk+EEEIIIYQQQgghpCLwwxMhhBBCCCGEEEIIqQgjVmr31a9+3tiRSOnva4WCvRxdmoMs99HH4v3aJuSmTA+0TX++M5aWNYU8ZZqbm4z9s59+39hf+cpXrC1e3ri1H3UhI57zj1E7Cm6zljeuR0InYvvzo4wuDXY2X9pG6UMKdyQiPbCuB9ZtrJR+BFzPx8F1mAbyw0Zw6K+B8WCvrLvQW9Gffyokg74OpEmLlqj9B+ZGryaOOuoo6/eHPvQhY3eBTGfx4sXGRmlVUEaP1vaZyWh/2L1bpRVbt5Ye40eJ5t6umZC01q1YscLYiYQ25KYmfa7kctoXw5CSOwNyMzxXEZHOTpWV9lVauGrVKmOva9PljWlbzlfbkDR2IqZ9a/yUDcbevgY2AKVra6fK41KTUVYgEgK5WwHkwDU1evxMRl3o17WqHQmrLKG+HsYOEQmBpCuVSmndQb6AEkWUHCKFgj1GJJNJYzc26n1b+vwLJbc/kAjV6PUMg+Qz36P3LOxMy/PwjFu+SuWkd//pSWNXSl6HoMAFW74rEPElcPeJc3wCk6H+r3iQJ59PKOPMHiyhkCWc2a52/CC1Q3Cxo3AhGm1Vq1XJDVIZfDMcr+gHmm84cpC1LgLhBDK9KV2Rq3Yd7sFg1zrr8O5jy8fxFMWZ2HqwF2APFAn2+u5roTlPGXedT6Lmk+Bh7086+8VtfJK4IKOBR6++12/fNj7KSdp8UrSBSu0Q3zUZqNTOJ51DG9sW1qO+zH77z1CP7YQQQgghhBBCCCFkhMIPT4QQQgghhBBCCCGkIowoqd2HL3q3sesb1N0Rs7FJwedqJuL7DhcKcpnAbX2/SO0C1t0uEeAgZTPyFcDyXCuQPsTj6nZ57bXfsMo9+ugiY//ox7/Yd73IyOVNYNeBqy76bOegvYG0Zy9P215or5jAIQUF10DWpy7IBbM/0sIEBlzPd0LFnl4LNhQ/BKR5DSChExFpAnfZOriOqLxBr+/ZM9SeAm7Xi1aJxT+r3T1+5IFZ5URElixZYuwpU6YYG6VrKKf6+9//XnK/hx12mPUbt1m9enWf6hgfh1nPeq11u3dre0OJPJ7Hjh1Oaqf/Y9zBKutAaZ2IX2Y+ceKhxsZMfyg/7OjYbOwiSFs2brClhD3drcZuOU3HsVpQXmyfDBuAGnBV51JjZ0KYH0sE1HKSBKlWXa3mmCoUkloeNsD7lHdUDCF4nvemU8aOxXV7nDv5JJlutjrMYBiL6b3GDIs+GWZQxo/XdGDbt28vU3J4kYvpMy0c1msTAjldode+UWmQQS5evMzYK9yUbBUGM9GhMCjplEPRBp4JijYwYx3mYMRZrdvafHnPhvIp9ArY5QTLKF5BIRVeh3q4n0nYGahoLdmdiEgSTh73u6VMXQZCPoANw6glJ3WJQCiFUKTaX0V9WeVEnDTKnu19siefPM1dh/ikWeX2FQSfFCyIfMtd58OXOS/I8dxyfWUopHY+ga7vGAPNahdE7oj09fyCQY8nQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFSEavdvlIkT1eV6/vz5xrbkdRZwyoWAUrtAOrigUeWDAPuCY+MphfrlKumpo7W4TIYDqEvI4wZZKJTOiBCL2am2TjvtFGNPmz7T2Ndcc42xt22rHhd6MgDmHau25acPLqKd0N46U2p3o7O6iLTB725oiztHeHa2beBzv22Tve4F+D1hnNqzmtVuhvHEyoIHN+Q0kOCJiJwI9+fe59V+Xsh+5OCDNaNO3tFTPfroo8Zua9OUbFOnTjX2tGlqL1um2e7yOd1XXY3KukSkf3ry/yO9U/to0RKr2PT0pIy9e7e/3Gvs3KFalbQj4auB+sdAC5IBWVgCpOH5nI43xYBDx+olWsdos9phlLTiZUyquSmldnvvcmu/NSEVKeFzN5vTc4xGVOrR1Kjl8R6mUs41QQ0gSPXiIIHJpnWbmoQeY9xBml5r5277AuVB7hmH5/7kyc3GDoO0ZvMmlTIGBbPnhsP9mQsNDVmYxMUgW2E0ruK1ro42a5vb77jD2A88/qKx3cxplcYncCknHsHZIIqMsCUOK4X7INHr/MZu73vpQiljepvalsjI0RXirLoZ7EpJ7Xy50KApSyKhcwzMcCkiks9pq41FofYFXzazasGXv9HFJ9lCcBKMrcUd53zlfC0sqMyqr9ngfGV8skIRv/zLJyvz1dcVuGY863wSQJRIBn2O9DUnZ7msfUHkhIOZ1c6XXxPPCUcvW/Y/WNDjiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVoeqldt8AaVYYsmCFLYlaaXc2V0IHCdksl/YQuIGGrDKlXeNyTjR/PE4hr66A6J7qdR4EN/JCIeQpJIJucyHrRPYtryvAtq5UI+z12oTriEkDC6FSRcR1EcR70lCfNPYt3/22sb/97RuNvfT5lzwVIVXJuyFLFmRqkig07C6wH4XcNy+AH3pADgIbnWt9zryVclUfcrbuVPvvL6g9DnIGzWxUe2pS7QbHFTkGV++co9VuWqf2n5n5rtIsANlyzslqt2KFZsF67rnnjL18udr1dZptbHKT6sISce0pmaz9wOno6JL+Uk5ehwSR102YoFnp8NyzaVuI1A3137Z9p5QiFlaxSyIRL1mmLLDb5x+EOs5Ueyw8E3e1wLZw255Y84C12+Mb3mnsJpCYta5ZY+y2VKuxIzCq1ddChsu8fU06WjVLZQ4kMBmPd31DrY7TM6do5Z95Ya1VLglSvTq4jt1ZzHYHEwtV7YmUkTW++c3H6Q9LnVGZzDuVoAD32coMDPOmTNY+nycWq3Z5DSwfaCACzBKXBBt7Okq5cFZbTliE22c8dum8lNVNOUUu5nDE7uW7vmlPGVeog6MUTtXHgz2YAStSYFv3FjLyxSH7Zdh9/4AXigKsC0fcDGjVhu/uidh3KQl2EClZOaldxFMuiKQu5ylT6vdr4B238hgGqIeIX1bmy4+IYH3x+i53ysHc8yA4XgTeMXZi1uepYOMDOens1ydX88n5gkgf3e19x0OC+gpZQliwIwFs3NbJkD1I0OOJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRWhKqV2n73iE8bGjCY+ZZcvK527uCClZWKWS7S1TWlJm3s8y/ERZHBhQZdUrXAEts/lwa0QpIShkO2KZ7m0emw7Nn7pc8VsMyJOsgmfag+vVUC3d6x/KAp1yev9/OpXv2TsZcvUpfJrX78+0DHIMGKC83tus9ppS6updg+0/X7I6xB0V0fn0Q6w0SF6xErtfOwESdw/N6iNGQQxC56ISD24WNfCuDFzutozYHDIwmCyBEQjD43EvEaDz+hxmr3urLPOMjZmDuvsaMdNvMmCorExxu7pTRkbJeYotWtumWxt39HZIcOBujrNzBaFbHWTm5qtcm2trcbu7lGxSzKpLvibtqooZdO20nK8wEAiya2YZPL1ao5D73+4T88+YItj0g0qvfvq5/7D2BGYD3R1dhobM8gma5LGXrcOhVoiK5brM7UGrmNjo0ptcX7V1Izp+XR5GLNTiUgmo1KETK60FKEmqcdLJVPGxtlDNGJLPlIpLYcZD92MucOZaETrmkvp8y3VnTL2E089YW3TBk3RzZY2oLqAHfPYEc9yn0BExBbkpMAOJrAd+aAkb6fHPhjsct4BmAnPJ4UcTLAu1vFAt4nhOrq6bEl2JKJ7SCS0RUVjCaluyl1xXy/Ch7NPolYuw1wQaVd/9hvkHc53TuXGYl+mNrwOOK9YCXZr6fJjnZFol2o+R8GEvmWKHnvtMgjbsgv3Ow/sKfZ+rbyUQWShQa67+3t/SMZ9Mk7fp6B+hBzoYy0IIYQQQgghhBBCCBk0+OGJEEIIIYQQQgghhFSEqpDave6YI63f06dPg199c09DSVrIzbRmJRkpfWkKlqSudJmII4PDbDLZlDrHPvbgn4y9bpW6vSfA/T8H0qMISAmicdsFLg6/83AiYXBXnzFjlrFr6tRtPmbty3YZLaBbYcGntStAEVvQ50f3lc2ruyS61+fyuv3MmTONvfAXPzL2jTfeZO312edeEDIMufxY+3cEXWShnfSCG+2K/mfOcsGjYU4KbKF2ziciIiJrQfazbpm9bmaz2seDK3IdjIs4nCRgLFkwQ+05jh7stmfV3irk/7j045cbOwLZgbq7VGYVjbqu7jrOjoLsYXW19caurdV7l81p70BpVjhmP2/qG3T79g7Vku3az3qaLjj3GTO0TWXc7KzwjGto1uw1UcjAhlK7SjEGBpnmepU7tnfphdvu6Hxf2qIL2jvgfKfr+TY2aLa7LGb3A3lrNmdfk64eFW71wjwjCjI4S+0WyZcs0zwVpLUi0gsZBbu7db6TTqu0rAAaUFRX19aWlk66dHer9LpYHJgMe38Shn6bh7nkY4sWGfueP/3J2gbldXbOyoGB0i58DmJP98m3vFmYxZ9ri1K74Piy/rmCLuzRKbAHs50gviyFGVDqJwogJnRCb+DPNEhyQ5GqeBUtA94Zd9zy9QjxLA8qiQtSLoi0ytXj+zLL+eR1cc9yt744koGk7nAd8yWSUrtrhdo5ldAdgopvZ/CJQtVroLqhbn2GjoMq7rQmLI/5dywwXxWUhQaReQd7D94/UrsglGtzg38EQgghhBBCCCGEEEIGDX54IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhFqAph7eWXX1ZmLegivdLEAiyGFW6MJmt7XzwjXW4lw4Ti+WzK2mTZEw8b+44f/tbYa71ZxH0Kb2W08xvVoUUpzaGjHzL21OljjT1v3nxjT5s2y9ommWw2diyW1BUY1wliP1mSbizjqZOIfakLeK9ge7y+GJfjS1/6orWv5ctVF3z1175Z5qik4pwMQWViTn+COCQSg57UA/YzA0xpDmBX2wD2OLAHL6LUyGRU0R5Zis+t1x8Y1wliBlkS+KzV0ZUaJybC596k9mJIAX9X9cRyqQQYnxBjxWAcv0QiaW3TDPGMOiE+0Nq12gsw9s7kqVON3dDYbGw3Bkc8rnEOTpz3ZmM/89STxt6y78fYXkyaeIgeE57PL2/cUqq4bN2qbSIF8RO7unuscqlUb8lyO3cM3hhzyEE63m3bXfop3JzQ84vltJ9sX7020DF+fscdxr70o/9q7JYWvc/p9nZj53MaqyIWx9gUIk3NzcbuzmjElrZOvT55iAsVCnWUXL5yFfRREclAjKetWzX+19ixOtrW12tcj+3b9R7kcjowTJ482dpvT4/e06JvkjPMieCcE+KxdXTotW3dbEdDwmgjlTpt31QUo7dgPfBp7sYdSo6BH3Aqg9fTDizKxdPCdxDv68QggsfHXo9P8AIUikacZ3tY+3cOYrums9UYYRPmt2VT0+Nvt7fsa7lvP+7vIDGeIh7bvfbYqnD7mMfGMhhdLC02rWBDvNCwPpvf2qxtIhPVuE4YurcOX/ndEEtQ9e42tXMYg0wfwfaYNE4Hq3GzktZud/4DrxFeO198ZLwOnni2IrJ/fH98b9++5eViPB0FdrA5y76OQAghhBBCCCGEEELIoMEPT4QQQgghhBBCCCGkIgxbqd0XrvyEsWMx210z5PEEC3lsLFSAFXup6SDFr626K/19rgCl0j3qnn7fb263yv36/hdLbj8QXMdMX/rUg8BOgbvhoqXqmLtm6f3Gjo+7X5CZs4819nnnnW/smvo6Y6MkIm+578Fyx6svDNq5iCXJw4Jq58F/11Lz2buVadNUKvKLn/2PsT/3xc8Ze/OmfmhASN+ZpfdCCs5QAxIQAWmGPAOCt/2cf7lK1RvDg/tXq93werVjeN9hHMf24A4OCejV81RCJE0wyj0KqXafPjDu3OLF6p7e0FBv7FqQNsZraq1toiDDW7FCr1lPt/azZFK3aWtTmVYioW7k8Zgt0+oGKVtLk+Y3fudppxv7maeeMPYLG4LJJAvwDMZnRBCWL1N//JapR9v7hSdkLr/vZOOj4MFZVI9/GQ3LY7BcxC+vQzIpvR/p7t4yJUvTCvfnc5//d2M3Nk5Su0HvR6ZX5Q4ouxMRiSX0nqYgtfmqNU8Ze/euwRuEd+1SYUN7u9blkENU+xCPa5srOKnYURJaraBEsbNTpa+r1qhwqVtsXHlVJUDRUBJsS1yDhTC0BMwrRURQ0TkZu/BmNVHWvj8kYtXM9jLrxpVZVwnwXi0BG0WxybiG8Qg5M3Sc30eiOh+IRh1JXlXgk9eVk8Sh7XuT8dnufku/a/mlfUGO4f72ycrw2CmwW8FuF4tjk8Y8CgaWtU/r3KAbXgVaYbxAwgkdiHJ5+5mLU8nNMC5haJptnqnIGLhsZ82PW+sWdkD7XIsyfiznm6+Ue2MNecoFscsxkO3LtbnB8VWixxMhhBBCCCGEEEIIqQj88EQIIYQQQgghhBBCKsKwktq97pgjjT1t2jRjR5yMOgUr6r6CWdDsbHceqZ2zPXr2h8DBOQQu39mMunsvX6bSh4cfuM/Y/1hazjm2/6BsrsZZh07oHnGLV46HLtRpJ/XIXY+ofKGn66vGPue8Dxl72ozZeryw+lDmy7hz5vJwD8N430rfW7yfYZD2Od74lnwSs9/deNO3jP3YY48Z+/v//UvP8cjAgZaYc25UJ7TGv21Ue4PsV3y5RNw8HweGmKs8ga/Bo+BiXdOsNqYjiYCAxO3EGSwHy+tgNDtDxxyZCaPfnSBrHmFplHDM7OlOGTsB8iSJ2Gle6utVdjVn9lxjd3erzAflyatWrTJ2EqRYjU1N1n5XrVhu7HWtmpErHtfjx5MqBxwDUrty4q1Nm1UGfcREFZJMOlRTZW3cUnoPTY0q2WpqsCWH2Vq9RnNm6dzCl0W1HqTkqd6U7gh8+Ts7bFHUY489rz+g3e6B5pwDiWmuH5mcQmHd8SuvqNZv7dqNJe3hyu7delHi8aSxa2p0ZuOGOMhmfXOD6iHbq/LKztZWY7e26YPPFWCi1A4SMslAc3zifBKFtDhntPI0wQMgBm3azh8p0gsJKGvGlbZjcFIpkKymYD+U4O2boXzEpcAG4bskN+uda87bdzFRd7Cx4/B8sd8BqoWgkrggUrsgGerc2WoQv5EgmctcsC44n8Dj4xsn5Dc8SOd+41rsEDPxlNqZNinJGpDX7SldRKRG6xTO2ufR2w1hVGC8KWAxT6QVK+GodFjrxs/SkA/b16KEsB5svFZ5j+3ew6inXKX6Q19ld5TaEUIIIYQQQgghhJAqgh+eCCGEEEIIIYQQQkhFGHKp3fiD1R/uM5/5NKzxZTqz19ne2Li8dIo7dFXHDDoitqQOM621rVFZwT13/8rY9z89sOxo6Oq821uqdBnX6Xwq7CzuCbSfAh9ujP7f1Kx22PEEXAkukUteVIlD53d/bOzLP607mzpd5Rx4jHDEzoqEMjyfdNKbDcAy7bZRQJ/KEN5PXX7iifOMPWWy5uP46ldVjrdje5A7QvbiHdAQQeoobY6A4GGV+uxveR0yULkCKcFauKoPQH88DXLfJFEK7YzvKMu0vNGhPUVwAAN35c+/Ue01TlaVX3jSpFQJs2fP0R95zI6lbuHtbfY5NzWq1O7MM8809qpVK2EbHeSbQJrXUK9u5JGInXWosaFZ97VunbFbW1V4g1mLJr9OMx2mU63G3lAmw2gyqQ+ymTNnGhuf7Zj5DDMjuXOGZE1S18G1w+VhmA3hMWJRlRmiVD8Xsh+W8995irFbO/U6dHXp2JcBqX7rGr0H27YEG4l2bB0p+lEVUnR2ao6z2lqVOHZ3d1lbvPJK9Z97V4f21fv+9Bdjd8DQ5M6GfGfd1/mjC04TfS8COL3GUA3dILtzs/ChEPZgqHwSltdNUBsTn0ZBt9fmnJRPeoPJ9nzClQNhNjcG7P2REBjvxxKwUeTc4rg25CCzZgKkdrnC/sjdONj45HVub/KJV7GF+vZVLvucr1yQrHblZFa4jU+EC1K00fp8e92JSWPPqT3U2uviJ1SD+7znsY819/X3HIyI9XWHWetqkrqHRFKfqauXQyHPwLkLXlFCGfv6nDJbpXZ33fUYrEG5PErtsD3jyFlOLjlc/ICCyjArcwRCCCGEEEIIIYQQQvoNPzwRQgghhBBCCCGEkIow5FK7r3xVM6WFI/odLBxGd3rb+TgcLp0ZIARh6UO+T2rgmh92synl1T3ugb/da+yf/PQRYw9mvjqf++9YsH1x8l3qkmonwdc1Dp6SqGDB61NXr3LHVK/j2A2egUnwqV4OiXNuvfWnxj73g+qvePw8lXYUnG+chQJIHkPolrjvzDV29kL3Rpd2IbVi+cN9b2hQacl3b7nB2Dd867vW9i+8sHaf9TpgORzsWVPUxv71IGS+EBFZW/k8caPBRodhyuv2I0u3ql2bVHsWCD1Q8yEi1hiA0tm8x208AS7g6LI/xc5sJqeDy/NfK5N5tJIkkprxKwrPwA6QKrVCpiwRkQI805qbGo3d1alS12VLlhh7aou6lHd16H5XQrY7EZGelErGpkyfoccDd/xsTu9joaDXvqZG70tPj+1zP3XKJGPPnz9f9wUZ4DpBrpTL6n570/rs6XJkWtGYtp2pU1Ty2dGqdYwntCEm4ME5GcrjMzTvPHpqGlUmFoZ71ThZC/b2qpZo+kzd77oZqgVYDvdDRGTji9XXVvtCLKazHMyquHPnyBupO1pVCvvMM88ZGwUb5URHuA7zTKLcLWhrQfF7EmycgeHxfMIeW4Rrg70bt4lBUqwYPJwxTERTyt5XGqYMWC88D8yhhoqa/oASPqy7N9vWELM/5HU+sM2g2Lt7i12uMaFXsqcnZex4olwrGq745HVBs9oFkdT5ypQrF1Sq9xrutQ/Su1Nq1mhnbshB1s5VdtbWZBx7VOn5v68NHwTS3DA0tp4OO3xCFygArdd72PEb3qL2ypVQBB43mV77PbRxmk8iiXbWY5fLJLc/MtkFaQNBMiwOHvR4IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhFGBKp3Uc+8v+M3dCgLukFdDi2kpM51SyUltSFwG0t7Ml8l89hGdudrn3NCmPfBvK6geWus0EZ3S5PmSC5Ctwb1wu+x/WedCWxaGnn4XVtKq9b12rvtwn8uaeqCkNS4Nu9dJPahdt/a+xp02bqsWtRNChSCKkLZx4qGULXzhDcK5DXYfZBN3sRKnMsX0uQ9oXh3PMg44zAtfrKVz5j7XfxM9o2rv+v7wkBzj5abbzmD+s12x/SOhd0iceePh7skS1iGWY8BnLVOLSZZsedOwmdOOwZDSEzmaTBjkL7i9ljjkydpfZfH9pndYcbtQ0qlUP5eSQeK2mLiERgUEOZVzqtdhzSSuFomsro87ity5aubdmqg36ySbPf9WbV7b67R4/R3Kx1b12l+4pEbUHM7DmaFTUO59K6TseSFUuWGjsKz7SaWpXwZdL207WnW39PbdJ65XMg1cukdAPQq/fCfsNRfbhm87YoKpXSfUVBaocSyXAU5jt5sCFDXrIWHrQisjj5lLFXP/6CjDS2b0eh2P5/TuxP0j3ap/IeTV05qR2GZ0AhC0rJUeSR9JQXsee1KbB9ua8SkDYtC9IVt76+lwosl4LtMyDHimN2ZuexEIYTy0MzwfqmwA6SyW608xvnDHgeWJXBfB8YKWA7ARWlrHLKxbp0HE7WqDS5LlEv1YcvW50rT8N1QWRwQf1BfGFJgmyP9XBCElj7xVED9wtjdkiz2nav0fvb5aS73DQALWgCLmEWMl+2vmiXw6fHOHjdPRjGrtrYwWontTdvhFPtydtZuOuiOKri/cWXbZ+kDsu7oyNe3yD3M2jb8NUFj++7z+Vkr4MjB6THEyGEEEIIIYQQQgipCPzwRAghhBBCCCGEEEIqwn6T2k08TAUux89Vd3qU5oR8tdlrBUgDUGoXwuXoEqZOvpAsT1YsWWzt9Se3/MzYg+lOi2ICdLr0BN23QOFEOWdOlBNmwac5DAdpblLX1hBcw44uTVG3ykkkA0mDBBIeSS9UWHPiiayEJFYPPPA7Y5929ket/YajrnunWVNyqZMTD5YXApXDNSjPC4dCJUu7HoUzZ84QArwZbMgYJctAkvOPocyzYkP3+Mqy73wlYg9yyyD3TbLRLpfEUc/zvxFfYsssjB8JW7L0Fsiq97hUn9QOT3kdaKLb2/Va2hlfRRJJFeHU1en4X5ii2Sfr63Qs7u5WocSaNepCj9I6lyXwHK1rUMlEXZ1KyWqSSa3jZM3m1tKoWUVFRJqb9Z71dGuKGtx+xszXaRlIY9PSou0oFrfbTQYy3kVAwp1MaFtLoiQuoi70HW1tui2k4IrX2fKQHMgMIzGQkmc9Ugu4oYm4Hru5wW6306dPM/ajDQ8Y+++/vV9GBiNbXocsXrzE2KBkLSuv89EJdhJsHCdQQIFiERefmMPK5eRRgpT777WVyQ5sn+CjG/Rx0TJaOdw+5injy4k4yrPcZbfHJnuDj3YUKUWccmmYiC1fvsHYmYxuNXMwK1ZRfD3FPWuf1G4g2e5cgmyDIwP2Ovedy5fXsrRkaxw8azGiSi9qLkUGlHYRIwjkYFAr9+TYCSsPxZAzYX0253LQIKFMJGZf61wuBb981y5IPtByWe2C+AENVOrmaw8+aaCL27YHXgtCCCGEEEIIIYQQQgYNfngihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXYbzGevvGNbxg7GlUNYRgkgwWffDHkfh+DWE6wUT5UegdpEJuuWaKpib97811WOTsB8+DhS5LoS9eKdgpsTNzoxgRo9MgyMUZTT7fmtwyDzhUvr0aaeJUI3J+2VrWDqFzvufs53W/9vdZ+5514prGjYUgrbcViKt08MUbTXne8gPGboG344j1ZOwiVNEVEIpHB0baOGGYdrXYWLuKiLXuXLQFkNx2I9JsME3Dc2OotBayH0XamnbpWIpAcvFA6Jo4VrA9HnYLW5BON8+06rtHx7/EgdRxmFHI6mGMop0JBz78N4hGJ2LGN6iCWU20NxjOCsS2s5aNxfeKks3Yy9rVrXzJ28RW9l92dGuNt7hyN5Wg9YyA38uRmO75Xd7du39Wp8ZvycPzaWq37rJka/yga1f3W1ODTUiTTqzmYayCuUw2cYyik23en9HjZ3pSx8frOSNpPyyicZAqetUmY5KSzeq/SvXqMAjzQc2k7OEZjk8bBOumUk4zd0tRk7HUrNXH53//6iFQTo0Zp1J1icWTHe8K4aTjHyO9RO+gVwHK+eEb9iU2Es64IBETCeKoFqK87O/dFCMEZVF+j0LgEiVRykGc5ssf5HShWYQDcOFIju1XbQLZ7STjrGiaONXZXRp8bvZmMVB++uEruu4Kvtfvs/sR4CrJfxNdrROyely1dbhS8WxX03rVMPkyPHNls7XX9s56qeBgNnQibR9Cmgn0QPjlIT0/K2BG81DvVTKfsOWkhh79Lx4/2x+kKSpB7NVD6ui+3/OB8MqLHEyGEEEIIIYQQQgipCPzwRAghhBBCCCGEEEIqQkWldt/8z6uMjfI6dN9CqVM4gMxqL8C9HSUHqXTK2Lf/8AfGfvrxtcH26wHd94I6xmE5dMzDNLC4TdZjI64zZyqlNngSWhKHzm51LM4X1K9wOaijXJftddvVxuTRPndqPKcu8PP+7nfs1M+5rFbyxAUfMnYkCrK7kLaBXMHXNmyH7LDPB9tDKFTaLTUUsttfPjeY7o5VylvBjkMLXK7yGK/PvwPlddXPRLDdzLmlGA22JXGIOCNpGPpa3tOhcQDKaJnxdVOMfUa0SZCnWldJNROC829qUPlVR32dsZ947FFrm0Jenzi5nI6VvSDzspaDzGvVqjVaxpdL3WHPLn2upGFfNUkVXeRz/hTCIet5rufbDdK1eEzPNw/16unR43V3qUxPRKQRZIbNDfokS6KcMK3XpK2t3dhZOI8MyO5SzjFqG1Q2aD0tQCaYhWP0duu+YlGoR4/91M/WJo3dUK91j83UToBS8O4eFbs89+TzMlwYPVpHAKwv3vNcTtvr7t0jL4n9yvUqPymdnNyWiIn0Ty7XV3A4xbllHjRivqmVOw/Oe2zf+cY8tjv3DSImKv2WEawe7vER37RmAtg4tw/yPByp4LV2pXZTp0w1dh3Ilzq62qX6CCKPC1rOJ9MKKrXzHW+gUjvPcx/m/7GY9ppVK2F864dbyxh4wY5AZ8TPB7lgUxGJw74gSoHkcjqiNjVq0I+NG/St5H//tMHaV7Jxhf44VueY8oIv6EyQeytiX98gF2x/yO58dRfZOxhP/6DHEyGEEEIIIYQQQgipCPzwRAghhBBCCCGEEEIqwqBK7a787Ces342NmLEGXMpCpR11UXZnu9zbx8FsZQXYb3dPp7F/85vbjT1QeR3ik5iVu5BuBrrXwK9+mAkKXa2TYGO2CDcbRxySRKHzHrpNz2xWGzMDbCuTiAyzcaD7cL1b8P/Ac8Vrtd0p9/PbnjR2Iau1POm0c7VQLKl2yHPlnbaB0hIrVRBeCc/n1tBe2ROVcLiiqtTqYPYRaqfh2i4LlsmOjCywR/ikBShN9joJJxzhMMq6UOKKEjxLX6Eyqn9tmWPsmrAtnLjn3nt8NagKentU0toAUrvj5+g5R8N+6VqyRq8TZomLRPVOtnfqM/TZpzH3n5OnaRQ8pYq7Sy6PRyBzKty6WExlZcmkLcboBZlZIqHrwqLn29iodiql16SnR+V46V47K00PXJbapB6/G843DQ/FTsjO15vR9piMa5262215SDSm5xuHa42ZBdNdWscI9KA6qBNmuxMR6epQSV8srm06CdenvknnWk1TWkrW6fGHnpahBKWT+DzdsWPHUFRnSAiD3hjUlZKF5pp1UqCVm/f1hXKZ1nwyugjUN4xTsDL6P1+2Zt8xsLX7JHgi9rXDLIA+2Z8vi15ApY4lE8OZJCS/8s7bD6Qsdi7YNO5z1sUXaabrOSe+wdiRcKNUH9jCysmpfO8VQSR15WRPvv0GkdqVe5/xCVNheVZnfFlInf4IvGpP0gSGIlIm1ALwCnScV6Cj1cGlxnfXQw61t8+k1AYFIKrdBZTo0pTEewgBQJxHUm8nZCOdcZ7aL6yBUjhi9UeGWU7AXIpycskgx+gPg5PdnR5PhBBCCCGEEEIIIaQi8MMTIYQQQgghhBBCCKkIA9YPfeSi/2fsmTNnWOu8yiVrubp+5SEMfizsd+mKgN9+T7e6of/mJ7cY+5GnN8tggR6Dvhj0mIEDPKhFRLw52DJSGp8XM7onjnbW+TJ7xKDgqpVqt/bDZxvr68t7UM4xFNkEJ3nbT/9h7Pp6lVHMOH6BsS2Hz0KZrHbgFB2yHKT5jbVfXIC+rHDdF0NGp437rTZkGPFygDJeycExYNc4fdMjxbYGgV79cVjTNGPPj+n48eCDD1u7fe5lO1NJtYGSrXBIzzOR0CdOXV2dtQ3Km6Lge17X3FyyTCfI1ZYsX27sHZs32ZUBed2RR+nNrEkmtV6QMQ4zzoY9mevcOjZGVX6Rq1XhSzKhZQp5ffLGQYYGCjoREUmDNGDFKnWbX7lsPexLy8eSmu0mB8+bfEb99PNZ+yBZ8OdvmqqZb8KJJGyv9YiC5DAGzTzvyCVbQdIXhWsagVQ/UZTgQQY/zPr3+jdipxN5/tmXZH9SLOpo4JPXjRqlgjAsP1KorRtn7F5oLxk413KZ1oKIEnFuiHKxctnnfCKRLMwTa2FiibmNMk76uSzM7XBVEAGRJc1ztIH4PoHbRKCOvrmoL9udLci1twkiH8cWuttTRsR/jviu0A32SMnn2OP8fhBOLPTwUmOf9s637J8KDSpWKwTbzcfok+EFyWRXTqY1ECIeO+BxkjoCxGNq7xINu7Fxl3g56jC11wZ4VW9tVbsFksphNncRu//3QOfGxMlRON1UKpjMu6lGR8jxWd2ZHULG975ZTuoWRPrmk9QFldoF2VeQ8n05Tnn4Nk4IIYQQQgghhBBCKgI/PBFCCCGEEEIIIYSQijBgqd3xx8+BX7YblpUlzPuJS1eEQF6Xx+VZ23UxV1An2Afu+Y2xHxqgvA5dlPHC4Fn53GnLOURmPeX66rSGx3OVcimwa8HGZGwrIWg/ZuYICroF+1yzfbhuy3gdt4F9z29+bezmqSqhCdWotAQlmSH3KoZQEAjrCr4cJ8TiBMdJvAGkO8tAWvJkf1pQ5UFZLDq+DiQb0IEGZudBqcZWt2BfwQF2ukpOJFnmMYT6J+j3UjfTmNc0zDd2uF2d+//9y1/vRyWHLynwK1+5UnXTLS2axWzq1KnWNq3go/7MM4uN3dzSbOzaWu3jtfWar3TOXH22P/PEU9Z+t4P0rgfSxFgynbSOxV3dOnZkc3oeDfUo2hFprNenF7rER8OYkU+fJrlsaTlfQ9Nka7/tbSqv6+kGUQs0vQjo0sMxbfk5GEjwnBrr8ElrS4E62lq1Li1alzhkEMzDjnu6MLuenQc3l4VyKb3WiV69dhG4WHUNeg9zMHeqg3srIiKjQGo3TFRtI1Feh/Sk4LkJbQ/niO68MMhsBcdsb4Y6ZxtfDiXfaGxJ3UKll4uIhGEKEYHbGeR4cXgsuImEUZWLiU/xQY/SQJS04fzTJ3UTsaU6fRU5Ya91pXK7PTbWayS2fFfKiL/b4EJ0rmkztv0EG84Ekc2J+LPf+aRZlZLX+cSnbsZw3wgAy3t1xNrS0/es1r1uw9gHe+DdFR/faWc/ezwaVUjuao1Xzy3du2wpsr0ohMV3zCDyOsQd3X05Nn2j+P6Q2pXLrkepHSGEEEIIIYQQQggZxvDDEyGEEEIIIYQQQgipCAOW2kXRH34v2ZP415UoVEAfOHCbDznuaH+5525j/+z+54NVNAAxz3Jf3Hufa6z7Nc/n8hsE3Be6oLoZ8fB3B64YoLwOwTud8yz3fcl0XZp9zorPrFV7+TKVd8yYdxIcRI/oJEWSArSzII6PPgbHobAKmes4OmOGseUDFltVHGxneA99/e4Vz/KRysFg+8Y19FYe1Ds+E+zJSbUTjggk43ksxVUq9M1ppxh7fkElRzfeeZP38F+44lPGvu47N5ep6PBk5TLNMocZ3OJRtTErnIhIFDKfNTU1GbunO2Xs9nZ9YrRMbjb2tGkqdc702j0oC/K+zjbNurZ27SqwS2dNGz9eBbFTp9iSuGRc65sLaw8uxLSNJOAcp4IcOwNZwvLOgJ+EbHutkN41CRnnYiCv60np+Wa61M0e91NTo7aISDdIDvE51A5yx/rGZmPnYI6Tz2jdoyG7P9TXavvOguwO71ssoXVvgmPE4ZzqErY0MAqhDRYv1mftppftXD1k8EhBpiec9/gEFyL2/AqUaNZ8DsdslN2VE03gvNQ3h4tpckeJw48MPDldoY4lvQMNYdYzYfbNzfJlLgoeA4e8WKF0mQI87PC6x5z00HmQ6uGI56uKL1td0OfmSJTXIe48OleylEjrumpMjdwfqZ3vrWQgbyv9AY9RbvTxBId5pY9aOYctZTLe7QvMZDfZnj7IavgcgOE1cnCKz6/u+zGfeEznMoVZbq7G1/Dlzsx5losMTFLXH3ldEGlfuWzwlNoRQgghhBBCCCGEkGEMPzwRQgghhBBCCCGEkIowYKmdlbnOcePKg68slguF9LAFrEKotLyurW2Ftd/b/vB4f6trZYYrl+WjnPNhqX0h7rY+ZzpPAH4LzNNXB27PNc6d6wS/68GUD40HGw/Z61mOUiefHE/Evia4L/TAfPBPfzb29BnTjR0FyUDedfQuQNsCO1wofRdQEoGysr0cCgfcU4Yxb4OWHHdOtDWl9ob9UpsBgX3Pl73G5ygblCByteHEBLD3i4T0KLBnHqL2ZMiqlYQRoeC0OdRYgFTj5EaVVR0fVfnRo48uMvaPfv97Y1/0L++xdju1eUr5eg9zFi9eYux4XFt0IqHXIuZI7bBcI0jtakFi1t6uUrkukG8V8tpaws49agY5VzKm+yrAOLt5E4q+9am0fbuO8tms/bTsgpQ1qOIvFPQ8onDve9M4x9BzD4fsll5Xq1lRC/BgqkmqFC3Vk1J78TO6bUKPHYZUWyhvExFJwrocZKzLgp9/HtL5ZCF7XR7KxJN2pr90BrL4hXVUy8A2oYyebyyp51rXoJLIUNQWvK/p1Ex6jdNmGHvTy/8QUhl88i2cA7nzt4lgB/lPsS8zm4tPHITPTRxOIhEtlbCy2tk1hi4pOdCS4RwwCnrAHEyE8zDe55xUtFa2PNhZBOoYj6mMF/tgDtLd9cLxss4xMLsg5rHyzStwlMFriNl1Rex5bbWBasS+Zgd2BVnYBlrA7spKFYJ33Je5TsSfsc5nB5Xd7Tt8jX97fDvrdNbhzfC83x8Ez6ggL7IDZBS8iBahUTkRAGQMaJHhsW3J8/pDuyZdlJa5en1etO5BA9h4wOVgu22jEWxfABofHhnkXr99om5fcCG8qO5+3Tf5/kGPJ0IIIYQQQgghhBBSEfjhiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVYXAj1+yVec+TzBXj7YRKpwcMwfIlkOpXZGApSN3Ur4hPMTnGsxxBmasrV+5PAsRSrAEp/a6AgZxQn423xyfLdbXpGMXCJ8NG1SiqVFEN6qpJMx4b67UcsnGnUxqZpwZSRGO8sL2OCuvCnkhbdtrtUIkSe60aeUCck70ClPVUl/h+G9iYVhqjm2C79HWjcc5vTF1dDXGdELyDO72lALxw2B7cgXcS2FMhktRUaE810PMxTTzut+B2LujTdRqX6LRmjfEkWT2rz33136UUHzr/fOt3e2dXyXLVwq6dW0raf/mLavLPOOMMa5tcTq/TypUaK7G2VuPkFeA5vXjxYmMnIIZRXV2dtd/Wda3GTqf1+NGoPmGPPmaqsfEOzz9+jtajzo47lMum9AdslM1qnIIwxDnKQjvoTXVDGbEpaIOLQqyjWDxpbIyVlYbgEd3d2G70WqWz9tiYh2Pg9Y3F9Hi5nG7f26OxNdraNM5WT2qZtd9YndarYbJe00xGjx+DUa0HAlpY8X6ch1rTVO1PCYj5tXL5SmPv2LhFyOCBzx6MpIHzLIwtJCKyqY/HwGG6XKQQ7Hm+iCA5X2ZtGDOiGLBJRKJRLZiEeH3pXo0QhPvFWG7xuM6283m79oWCnlk4rDNbjB+L40E2q+UxjhSehlN1yUA5nBvgO4C1vWf5fomluJ+oBRvHk60BtnWvQwrsNWDXD+SlbsjwxWUarvjq6N4lX0wq6I9xiPGEk+4KUdwOP+AlNee8nsBj14oDtwWDJWNw5oDtLg7T2Ja4vrG+KO1QCm1fLKRysZh8y/tTJu9Zh2OqL1qdL8bX4FENvYUQQgghhBBCCCGEVCH88EQIIYQQQgghhBBCKsKQJ4kPWTILdQ/LZdUR+anHnh6046EDWrnEgLgOa4ju0T65WrnUqSh966vHX9CUrCiXa4SDpOEgPvdtV1jlS/CIbto+h71yaX3LSR5LHS8Naahr6iCNtKMfCIU8tifFKLppW7UfSb7S+wJvlOub7+YrLQG6oQdUgO4XsH+iNzD2D18fDJLMtFrwyuuOAXv2IWpj58xDz3WbAvoyTwFfZKtzw/Y56GthsF15Z1o739hpmnS5qVblXo/96WFj74AbfdF73mPshnpMbyuyrr1DqpnXHftGY6NsbucOlUN1dtqpkadMmWLsnh4V8SxbpnIuTDu+drWm/h07rqZkGRGR7m7dF0rtwqBxi0Eu9tmzZxl72vTpxk712PWNgOQrHgcJTUbH/044dgxyqadSWo9QyB7Aa2v1XAogiUv1whMO5EOhiDbiRFK3jYEuyFWIWs++nB5jzZp1xu6F40XhGHV1KM2zhemZvJ5XfULX9UJ/6ulROWDrSj12oq5ebbi2IiIF0JnXQV+ZOWOmsf+x8e9CBo8ISLsiMG7hfNMWnw5M2o1jvzvMRjy2TzIWgfE+HlY7ncVZoh1hIwE5zRNxHRty0D+wvD3O2LPGXK70jBuXo/o1DRNm3ywm5OwSj4hye981QRuvwnCaBw0UbBs1MGEKwYTJJ8h1rwOKlleAXSfVTun3i+EF1qvc22+AcvA+Zs+og76l9p+DYH4Jj/X/+63z2PZ2nfUffqSWAYW6bA2oY94KLxC1eX2ej3mHPl9f+V9s0U1g44jujsL4xo1jX1/ldeUkfPkAtq+8e/8H55PRcO0hhBBCCCGEEEIIIaTK4YcnQgghhBBCCCGEEFIRhlxqZ2Wyg6UrV6jb2ouDmFgFPWtdJzJfvHd0PBvML3V4jMF0UMR9dYE7bJD8ZK7kL+Uph27F6EhY4xYMgE/WhMuzGXCWtm5C0CwBxEtZL+F9X89qcyvHft80SoWCPUU9k6rL5YQZ5mpH2esg05hE4X5OBwf3WngUWAMj/LAVFVbWSKmB/WKqSJTXofwJj5Fx3I/zOqK8M6x1TGR1+xu+9W1jTxyn9/DiCy82djRmC3o7O6tbatfYqG7dKCVbtWqVsVFyJSLS26vXr6mp0dhRkIwtW7YcttAnwK6dmreoo8O+linInFbco4KewyYeKaXAbHkoV6upsYVFeMtQGhaLa94vPLaAHC8C7bw3jVIAkVRaG6+VlQp0PknI4tfQ1GzsdWs0/1Ietu7qsttTFrPMQSY7zBqIUsg4nFNzk0pKG+rtmQlm+pvSAG0AMvKtaFf54aoOrVcY5Hxoi4h0QZbHWEHrPnWqZs77x18ptRtMMGtaEuIudGrCt4plTXXnWTgf9MnuUAaH7RgzXkbjbuAE7SNhkOTl85BNGLI7dnZp2+3p0dlrwZl6ZGGiETkIMuTBNUVJHY4A+IRBIav7AoRjA8q/fAIVHG3hFu7FeLDxtKohQy6KoadA46iHBrWlH1np8F5Vd77ZaqTcpB9HAE9QlD3YCyovr0N2g+wt57xwZjL6nG9vl5LAY7NftD71T2N/8JQPGPunbTCarMbRxxVPI4MlrwsqtfPhy2S4V3rgAPvq29EIIYQQQgghhBBCCBk0+OGJEEIIIYQQQgghhFSEQZba2d+xwuGyGp5XQc8tyHSxbuWKvcsOMq4Dmk8yhBcJzwKzXpRzmKv3rMN9bfQce6Cgw18/vGG97sMo5kEFTgJsn/u2iO1m63Pew/vR1qqZBKbM0AxJIWdr/B2C7EVOijsw9UcBt3Waa971+x5JYAN3b1RtEn5srsjhIdGPN1PkYLId7WLpXn+Q8xvd87FpbJPSQI44SUIuy/VlHfIDcBTUbJpmwpIGcOeNOG0Vf0fgZkc9WeasvgLl406nQOmclYLS0mfA9rAvbHMFu9FNatL+fV6NSpDuvf0OY2/bpdfxR9dfa+z6eh1t3Qxvd/7qV1LNZCFlE9otLXqNZsyYYW1TU5M0dgju5eTJug1mqFu/9kXYWiWMbla76ZCZDrOwYVa7np4eY7/4gsr5Hn1skbHnzp1p7Tcew4ah43dTkwpfkjWQoQ6G+ChI13qd+qazWhBlhmFoiKD+sTLO1darRDGX0ydXrSNe6gDffpz71NRoP506VY+9fNlKYy/ufsbYmD1MRKSxXs+3FzITFkBOWJ/QMumMjgXdIL2MRm2X/yRIGUMZvVftPo3CMGXiIeP2XWiYUHeIPgvwPqc3q1zF90wZKO4M3JepDSV4VsY5GHOS9dqm4xG7XYVCKK/TfofZLzGrXSazC5aXPraI/YhBySLO43EuinNMnPvibsu9APnm/Xi2eK3K3TfcBvdbDVI76/rCdCnRj3TGeL3wXqX6XKvhQDmpE+J7Dw6SCS/oe0eQcr76usfGFhr1lKtMlJ43H6dj+eLnVMLvey/odqIn1CS1jkXPRjsGGEfj0aVqx5r0uS2JeZ4t8Fq5gucgMjgfvhHc/e1rG7i9rx7l2kb/sxnS44kQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFWHIs9rhl680ZKt5+IGnK37sct6h6Hjmc7n1LZ+OHmgiAt7GkgL3vyBZ5gZKf+R1fd2vL+OHpaYJuC8fUZAIoRAhv5eLIBwJbkoBMqpgxVBeZ9uurChAJauVch6/mGYKFQ07pU84edYCOXkOJa6XLsrzDgbb523eOE5LJZIqg1m/cUPfK/MGyIkzF4S7dXAVIyiPc/SSEc9Igxnn8p6RLYy22zigT6G8Dn3orXpBGchQJ8nJ1l4/P/skY7f+7mFjf+9HC4195ccuMvaJ8+dDdfV49913n7Xf1rY2qWZ60yqHgmRRUlcHqV1Cdm/KgxYtk04ZGyWJs2apPC8aVdkcSl1c+VUUMsih1A5le7j8yKP0Hqch88wzi5dZ+503T2WWYZDERWBfEWjfmEkuA3Zdg8rjRER6e1Ngg+QHTjKbVTf4eBzEtSA9DYX1vOvrG6xjxOCaWBIl0PCh7A4lST3dem/TaexAIj0pldR1QiY6vD51jVrfKQ0gg0rr/e/N2Jn+QnEVAIWgn1tZA4cp4yAjHLaz4U4ymTR2R4dmjYzBA/JgZ0JUKTmW77GPc7WIZ5Kbz2tfqW/AYBIiNTUqiw1B38G229ZWWs6JKu+so0rPeOyggqfXwOd0t7eUvS8UHGG2uyTYKO1z5w8psPFaTwB7qwxPfO0EZZETYfmmMvvyCbyG/EW06gki20OCZkTDfeG8EsdcDCwxMKFwXZ32rujo9cbe7YlQsdNReMVQpj4KVg7iizDuqqsXRoZ1OAL48ru713ogL5ZBZZi+t628pwxSLu8ntgdK7QghhBBCCCGEEELIMIAfngghhBBCCCGEEEJIRRhWHo7tra3G3tBHKc9gg66yvrj+iOWe7ChdrMRO4CK+eoAJroYLeLo+eV25WP6BFFxwEdHNuxBymnAY9gwaR5TOoRolH8IyKLVzDh/YrbEKwVNzdW8oURyANtRNlhcwCcqwJIj04fmdUGpnP8QSh4E9HXLioJ8/ZgALwShVRn1qN2OPs7uvfL6crBW2R3mdlaQMdRS64s3NM629zgprdrKv/OVeYx8KCf3OPvtsPRzIhHJQR8x+JiJy4cUXGvv7P/qRVBso08Esc5hJzpUdpSHz2fLlmlkOJXEom8M2UVur1y/v3Hs8fleXSmhwvyizQWlfAu5LulclZiIiKZCVxaJ6XsmktolGkPbguJ6BzHWu3DQW12OmelWo092jx0M5dxi0jJgFL57Qa9VQa1/repAJoFytF46H9wpljV0JvYZdXfY16ehQWVIEMtOFQbra06npfeqbmo3dWKPlO9P2PWzv1qyP2M2bmpqM/bj0nbEgG2to1oEsk1IpQtc2fdL3ZxoUjepg4GZcHM7gtUWpXbpCMREwO6srSEx41oXh/kVxBTSS+gZt641NtqwVM0Ki/BXbPmbbbGxUwVlnp16TUMqubx4mDb477pvK+LJiBW17KCRBQU29x3YlfL68VtWQ1Q6vEZ4HJNuUfECdIJ4vCn973IKkj/jeTH3LsXcElX+FPTbmbByY1O6P96/fd6EyrFgBQTE8Y+poUAbuwc6IL58Q3UJE5CA43d3Q1nsi0/THNt81QWGwO3L5ZOIDfd/sq/Qy6LaDI5ClxxMhhBBCCCGEEEIIqQj88EQIIYQQQgghhBBCKsIgSO38ucvsr1qlZUzZnLr8PfrYMwOvTgVARzkUJaCTHKqQejAFlojEIPVVTwDfXjcD2GtUKkPdQEmC7cuO4op08HrhNfVJ7SKgX0TZRyFkuy6GC5hFq3RdUJ5hyesKuF+7a4xoqR3K6fLOeYIUpV+aiP+jmqV1Q8J0EKA2Qg8B+ZHk0YZtQ87/E3KeXmllLPLkFiyUaRu4L6wXZq+z0uDAj3iLMS9smGlXt12FCo+tWGvsr37uU8aur1NhA0q6ojBOvPOdp1n7rVmyxNjVKLVrbFSZTiql4oQ8PEMfeOABa5sMZJDrBRkbStowk0wYJJv5nLqL1ziyRZQ7JxIq2mlo0ExvcZD9pXr1eM8sXmzsHdvsHEhrX3rB2Ecfc4Sxm1ua9TzS+vSwngvQHlMg/xNxpHMgBaoBCV8uq/vtzep1i0JmT7jUlmTv1QrkS5YLR6JSikQiaWyUSMYTCbtcrZZLJkBqB50+nsB7pdtnCtovs1m7j6ehz6Yyej+zuYHl200kdMJTXwttC/psI0iwli9/ydi7Ak5ytu7cDfb2MiWHFzFoSzg0psAezGzHvvmqiJOjCjR5mDHTelxAxtAQPBeiIfu5kOnV8butVWWimN0RM1OihBgzTqZ77VmDT8iC54gywW5oSyiPwxljf6Y0eH9QLoajgZvjCXueG3bgNTDkBJ7rcGrdKbCnxrXGtQWduWdBbfVymX3Z2amrEZ8kaaj9OYLI7srllQ6SpxzBuUG5O943JoEkbmNABd+2AJ0lBoMHPhJ3w8Aw2n4Ey+5OKcn6p1LwC8W22LqxjHutw2XW7Yu+5vMUCRYsyPcW764rPa8ZSC0IIYQQQgghhBBCCBkQ/PBECCGEEEIIIYQQQirCgKV2hXDS2CHL8VQkVICMFuCOmw2p029bSh1U//7kqoFWpyKgOy460NWCXc5xcRV4DAfxGByukjoEvCClBjL1peFi4XXAbH4iYl3UXtk3CciwlANJ3N4SIfWXtL+q7tsVNhT2uyuObKkdOI9nHflIV98cvVEmiq795ZJUYuYdX/aZA44GcF+Og0sryuiy0CZRErdXO0b5KUrifC61uF+f27WI9fjohXXophyBfWV0xbubZhp7dsj2a77jN3caO5lUd/5TTjsDqq4jMWZLQtlZPmvLcDsga2o1MmPaDGNjJq+ODs1oVnBuEZZbsXKFsVvXtRo71Z0ydmOjZqjqBTlfLmfvOAdyrNmz5xi7rk6fiul0uuTyOKTKeuyxRdZ+t23faOzVL20wdgYeEk3QNwogfEkmdb/5rC1YwpaOcqcIyM3yICVKg/SsAP2pAH0m1Wv3M+yCkYjWJVuArHawfSShx47AzCLuZL6J12DGSpDEoeQQ+3xBy6D0tCZui3xyeZB9Qb16ewcm9mqoV3ldFDJc1tTo8vZ2yMJXr1nN0r0ptXfaQihXvlSN1NWqzmP+vDfoioeXGnOVo//q63nj8xRbaLnJfjc8eKNg49QgHtOadK1Zo8focXQo0EYzaWj7MR3nw5BlMhHXaxIFyWk+b0vtgpxLASbP2NrRxt6F10ok2Pxjp8cuB+4X63IELofJE2Y5xBnZUM+PNoO9CFKPJ2B+H3T0wPvgy+1VPZTz4Qjy7uCTOg2mhA+3xzmX+waGLQ7vZsJj2zL8wSIdIFnpGOd3kJAeOHbAVEC2Q+cKoTZXRPb4Ot527M1JsLHyVs57Zwf7w/fHN1risfE+Yx2d90HrXOLSX+jxRAghhBBCCCGEEEIqAj88EUIIIYQQQgghhJCKwA9PhBBCCCGEEEIIIaQiDDzGE4YPcaSsEYgngvEPMIXhqtYe2GIwE8num1HOb4yt5Gq/XyMJdmIs2CB5bUchtASL61QNYJgmTKSYhZgEVoZ2sAtO20Dl6FbP8caDHYGU1IWCLwaNSMGjiQ6FgqQFPUDBS9Pl9MHWvu0Kryy2ETc6EGqxUVE81DEMhpRjQbFeC1EPIh6dv7UYYzw5+8VBOozbB/i/A/Y1t3zBUw7iykgelienGvO8punGbu+0Y4TcvPAXxv7Ie95r7LpkrZQCxwOs4ZpVdszAL/3nf5bcvlrA+EupVKpkmXnz5nm3X7x4sbHvvfdeY3d3a/rzCNy7ZcuWGXv3bn+kGaxLU1OTsZcufdbYEyYcZuz580409llnnWntq7tb5wN/+rPWcdmS5cYOQzyjWBxiJmGco7wdmyCZSMI2OjJlMRZUDGIuQdwx7FoRiCdWcPpZBmJaYdfo7knBL10Th3pEIdhEKGz3syg8+0IFvT8FiKFpxSDEfgrPx0jYji9RD/GGotBPc3XSJyYcPNb63QvXIZNVOx5PGruhocHYCZg8JRNap0w6Ze13HcQVan9ZZ1XDKd38vshADKt4VO9HXa2O/W2b7UglfY3xhM9abEnlIrn4ngRxDNEHXaWne4ex02CLiMSgmUVhEpCFNhaBztMweZrWA9p6OqXjlYhIoVNnBxmYc2I0FbTx/LA/Rj3LRexrV6lYqxgXCo/XCAeM48sJLN9UoTr1hy1gF/Z4i3nxxeAaefQ1hf1wxYqUCDb2qIPBtseFvrI9QAC1IDGdXLa9DD+gn42fqHbEuR1brJd4/DqALdf3xjPQ+F++8v2JO9zXtui+uQWNGti/WhBCCCGEEEIIIYQQMiD44YkQQgghhBBCCCGEVIRB0ByB/+1esidE3dByBXWtXr6qy1OdoRXd+I6OopAk+PUWIP0inlG1g0706FyJgix0aU6Cbbl5O37Lrtt3KWYepXZtrc//3/12CvK6AaQiLTitt+BqBUcS6J++zskjukX6BLaRhGe5iEgKbNeZ84BhovN7jkqpJAljIUpvfBcLm/deUjtPQUuS49nAW8Y5pqW9xUpqv/1Cy4nGnprTFvGZ228QH+effZ6xwyAZDEf0JHMgl8r0avv9y1/+Yu2rUtKJ/cXf/vY3Y+dy2mm7uvSJk07b/belpcXYMUhVjpK6bdu0kz/7bB87vLM92sjWrao///0ffm3s0aPHWeX27MG2o470Tz2jspvGJm1TLQntMzU1en7xsNNYQZaWiIHELAzSHtAS5XJgZ3RfUZD2hVFHJCIRaJPYbWpqksbu7YUnn9UV9QemlBcRqYPtozAW9EIa+jBsD01DMtBnIk59Q2E9Tk1I20M2QBprpJC3r3VNUtNrd3XrjAnPvaVlsrFRatfYUK/1yNizhJqklmuoazP2unXr+lbhIaQV5L/JmtJzGvdZ2ddQDTjOoRTFnQFha/A9q7OwMxxaIijBcyZzGHaiBjKt5wpam1BWJbVNU7Vms2bO0PIZWy4bjbYau7NLZTy9oOjBposiGJ94xH2k9VXWOFDw/mDQkTqocAxkbIeJjRPVY8jwyRrLUf0z6rzHHq5XAI9XbtbtC5iCNvYuHD3qwfZL7bAdTz5G7X++VKZafeRgUP3t8FUFxrftgXWsDWDHwbYmwWDjtXIfrr42hAxUXjf8oMcTIYQQQgghhBBCCKkI/PBECCGEEEIIIYQQQirCgKV2oVAObNtVDLPB5MENratHyz37jJ15aH/innwQcR9ug2ebhQj8fRcrDB/GO7/RiRKdBPsqj8o4v30uzYeAfdY5Jxs7Bv7bOUFJg30X8TfKF/rsoOhK60a01A7OrdufWRJll3j/MAELXiV0HbdFHrY7f4+UBnNHjJhsdyAflVOOstfVwlWKQrvGrHR4rwInRfFkwvMUsY5XruegngilTRk9j9e1HG/ss+Oa8eznN37X2I/84e/Wbt/7vvcYu3mySnKs/gz9ETOT3XjjjcbOOXX/wic+Yezrvvc9qTZ+9rMfl1w+ZozK1aZMmWKtQxneihUrSi4fSvbsCZC6RkS2bNlo7J///E5jn3nWKcaePUuzJoYLtv6nDmRaIXiSRUC6FgM7A3o1S+IJbSrsyPkKUZB5Q/a7TFr3VVOb1DLYfTBbXsHupDmQssVBhteAWQ57eqC8Hi8HstdIzH5Wxq1nqsoBcj167SYeqWNUVzsEGtit++3dZecW6uzUtpWALHUo78T+i/JQK8OiM1bF41rfGTNnGnvatGlSLcRBjpnATIYwd3aldgPBl51ZxJ7P+Z76lgQPKpaHCaCTLFFwStadguPBNpGYziBaV2m2wlhU2wtKVEVEGhtVxoPH7AbZXRS6fS9MGrCnYnXLZbUbWE6uvoOSyhDI6xJ7lRx++F4ky2Udwzlh3FtqOOOTrpXLBOabtO0PHxA8djk9tTc3uacMyuuawF7tPUI32NE2b7E+g8L9Wqj64PZlPEdsueEAdtC24SvjI2j7GR7vsfR4IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhFGISsduo6FirjxpUH9/GuFDj2bk5BKXS+rLy4ptwRUD7ky9TVDu6wfc08Mpw4FOxyCbF8eRt8zpgor3NypXmZdbTazZD5Ju9xSw05NQ550nv5Mtzl8axQxeQq7cpVutrBSxh1/Oahl/i+UmMWHZ9Lq5vFEPuUT7aJNak6qR36/J5zhNpNcFbutQ55rjBk1bKldp7y7n58o7xPPloI6A6O+8Vtaqcb89tTFxg716pSnZv/cJexJ46zM5t99eOfMXYeJIchKzmIHi8Puo8HH3zQ2NG4LVo5b9pUGYm88orK1TJOJiiU1y1ZssTYdXV1Je0XXlg6aPU6/PAjjY1Z4jZvDpw+piS7dqlM59e//IOx60DGNrk5KUgYJDwpyHyYB0ldOqWjFIYJwCxtsbjOUXrz9rVGiVskFC25DWZwS6VSWj/QDkWjtvCkANmCs6BXioFUKxxRO57Qdh+CLpBzBM8h6FBhqG9vWqVyNTW1xo7AiNzV3mHsXbttQU0W0uI1NmoGoGhUK4PnHoVse9h+I3G7vnm4vnUNul88xnAnAg0LpXZha8yGieUAwb26cjqUy+MzGK86jqA4xGPmxLzzAM+mwPYoehJWVjzdoKez3diRiH3/m5oh6yucWAayUebzOlPIbYf6wn6C5vYaSraCjfctmDB5cBkDtk86hyMWtrlyEidfUtzqwRckwm1V+Ns3iw4cN2EA+KR27vF8E0bfeSTBngz2GrHZYCwc4TYESCXpC/PhYgncoOPg+zy+rxwGU/MeuDy78/acVDbNgB8wDlkt13cPfbI7kcEbgfzZ3fsu9SwnAR2cDHv0eCKEEEIIIYQQQgghFYEfngghhBBCCCGEEEJIRRh4VjvLDpYBqTuFwht0NasFuzI5JdCBzv3qhkdEF2N0I42Cz95G9NkbRowG2+e0PQHsJNjuHUQ3X7wOKDLwyevwLrvX2levmXOO1W3ANd+uWLnvpSDDAylSwSdjIiKY7ai+1l7Xps7dOwfQJd2uEsRlHJ2Bfa6yw5azJqk9GdpxDejFsk5vy3lsn8bVh1um4HPnDZLiDhc7yzFNEYyY/9I829hT07rNt+/4ecndfvdbN1i/62MqbUpZifMgExZIde753e90+S6VUa3fZTfYq6+/vuTxRxKPPvqo9RulXb29OiI3WFIldR1PJpPGxgxjuZytmcFMgps2vVyyLk1Nmv0lAfKvjg49xrJlL1rbRCLqVP/KK9i+9i22vfUHPzP2f3zlk9a6fEHbRS6rT6kQyLdiIPkKQVuDhHMSgVRr0YgtlbWzxsFzCNJ8oSwU5XUoGcdMdCIieY9QKNTrEbCHUWKudiTs5EuD47d3qAz2Bz/4gbG3vVz63o4fd5ixaxxJHFxGaWyENgBtC9si2jWQfXDdulZrv7W1Oi64Gc+qhWbod7X1KnHFoRUzPg0UnLO5TwFsPThvwzkftugIxJOIg/7KldrFIB5Fsk6f3F2d+uROgQyup0uFZUkYJ2L1KGkRSYDsMxrFDImln29RqGMONGLYm9wehOc+XLLqDoW8DkF5Hb5b4EwxCSswI99GsUHJVB3YLf2t3JCyAWx/Nmj/pC3IO0m5Cd9A3mmwz7ifAXxZ2Nzc5K+Bz0Hss+90yj0I9ktla+cSQI23F6t9utDx2rM3p5p1+fZyeRaxhSbBxnvgyxQYVLrmk8cFmaeX+5Qz/ALF8G2cEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRVh4FK7AuxiL48uyDwEdqbgc/PDnHGVAd1WJzrr0HUU8xWgA926KtD5+GRs6DqMzpG+XAciwbKd+JwxsXw5lRZm1Zs6fZruF9pJAdsJ+KUXnMxeKK+zP6sWSlgihQG5wY4QQnDXG5zzrgG7MupXL+jejhLZoXY99/J2EAS2QA9BSU4Kxzufa67YjbS0gqd/iSi8zTpAew85jwvsa2F1sT6pTt2Slz+xzNg/+usfjf2BC95n7Dnzjrd3C/sN5aHfQkao23+usr2nFi0y9jVXX2PsvNO3P/m1q6WaecMb3mhslMGhVKmlxRYtoNRu3bp1xl62TO8LyuYmT9asNM3NzSXLiNiSsba2emOvWaOZbPAYs2ZpVpgayD7nqjdfeaU/TvWvsgcGjKuu/m9r3RuOO0brMlOzLk6d3GzsQhiyx2VSxs71qCAnUdAnXKzGnq9EQP4TCePTT08ynYasbZHSMrhwxO5n2RxsAxfMyoQGZhqkeiGQ3RWc/rsYshw+s2SlsX3yOmT7Tm1/TfV2tshEXK9DL8gBUWqHks4sZLLDrHaJhJvdT/vzEmhbdbWOPHwY09Ol2QBr6zHjH2S4c4RdA5GZ4wjo5qvFqwvKN2v+iPkncV9NIGPB8BMiIvGE6q5q6nRskJBmS2zfoOeYTmmRdA/MvONJe7/QZsLQru12ou0nndYz8YlSXJGe77FLXsWbK2tP6eXltkepXY1bsOoYnGxfe2/vu+IuA5Xt+fDFf8DeEffYmOHOPT6+QT4H9niwcVQKRqAttuP4is/pWWC7LdKXvQ5HEJ9IudzkPIiMLsgEvty9pdSOEEIIIYQQQgghhBwg8MMTIYQQQgghhBBCCKkIg+BNCm7djktXHlyjc7AuFkO3tdIu6fsDNw8BHh0lY0OZ0cLHWOd3EIECngeen092JxLMwdCXESWoaOKc9xxp7GQtZHqBrDso64FmtbeqyKO0Q0ldwTpJnwTvAAJvcq1zRZvB3iBDxlDL67yZIl8P9izN4CQxuI7YKXqhZbmJMyKe8c+nEwialM6XEdKSyuFy7GCwPO/0ioL2z+MmzzV2PYwoN/zwlpJV/NC55xo7E7H3i/K6ONSxEyRlf7r3XmOfc/Y5xn7nmWeUrruI9GRV9nP1ddWX4a6pUaU5zU0qbaytUbfw3rSdp2nVqlXG3rFjm5Ti6acfNzZesuZmle0V7EFTnnjiCWNv3uzmLtqblStVyjVlqu43mTzYKrd1a2X0vEufe6mkffI73mTsk07UNhyNaOcs5OGawgXaSwoGfSsaAylBSPtDDtpzNlcAG+ZRzrUuYPY76Kc57JqwfR6Ohxn1nnjqGWu///2dH0n/0YP3QL8UEamr13EQn7urQIaJks4akMplIeOgPU8Uicf1muZAkpcvVM/Tun2F9sG6+i5YA9kOnW0GEt0BR4OYt1QwNnuWT3GeN8mkjkeJRNLYBRjXO9tUxNcDXT63Up/0yZyOGSIizSgDhoyZaciSHY1A9srMFj2eJs4rKz/0PVJ9CbIONLBH4jtAJ9goQMZ5k4gdzqQZ7GnjpMrBt6By77E+2ZRXxAh2f17XfXXJe2x3G1xXOrvq3tu/hhs6BzPe4TEw1IJPdLkc7KfA3vfc41WwJU4BG2Xi2DrLiT/xXvukiL7vGu6zKkhmuv6ksvalwu5jJusKQY8nQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRVhwDGeQhj/oOBoPUOoc9RDNdQldfFBoIvcjdtPAjuojrNvuMrU4R7XCVWq/Uk6fRDYvnhW5eJe5T3LEdTMl6sjJs2cfbxqfMOQej5kxaPZ97FFbJUt1jdc0PYXhp3lC6XPMBRy4myUOWbVY8UWcqIe1Fe+H1YDdlwnyB89B1LGxlHTjg0WWmIc7LDTkgeSNTVUplAMfmfAznkCRlnBQKBHZd39asyhC+tUN7/ivgeM/c+XXjD2JR/4gLGb65uNHS7YJ5sPlT7JMDxDCrDNd3/0fWNPmT7d2DNmzrS2r8a4TsiaFYuN3dzcbOzGaRozqb3djvEULmSkLzzzlMZ7WrFC4ypguncRkXRa93vkkRqjL5vVJ8imTRrHpbER4jvAvcvlhnZk/fv/Pl3SvvKS9xt7xjSNAxGNahuM5OyoOVloxrm8jqN4B9b16P2JRjVGVH2NxjbM5+2ZSRiOmcnp9e2FcjV1cH2z2mdXrVpn7Ft+crv0mVEafOWgiJ4v9tgoxPERESlAuaZmrdfixdp+O7tSxq5v0HNPQGwsN9ZVCPYbgdhVvRlfjJHhRx6CFfauazV2fbOOpdOiGPtJJPW8BkHq67wP75MbUrAGJoSdMOHdIvsG4z2F9tjrEl26h5pajZUSjcDzBswcHBvjlqV77Fl4uqvH2I2NGuOpuV7bWEdHh7HzSe0H2ZQmWs9Dfd3HLD4RcS48BuyBxnvyxousAjDyDY5rUbhAjXCB6p3tW8DGyD75xgkDrtvQgmNQo7MOxzFsVUFi+mAZN0oblvPFXwp77HIxmoJs79tX1mOL2L2twbMc94vvIjPBbgbbji9oHxPr5YsrHfPYbt19+OoeJDaWu03Es9z3Fu67/yJ2/X2xp3zHKBdI1heXrG/Q44kQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFWHgUjuPHEpEJItuYWFwC4+DS1mzulnLanWT3dsxeHAAkcxejovD/StcObdcdAX2OUraYgkFXWbLCR9865Ke420XP2edeoRuD+l30bseU3iHQJ5R8De5QFge/OFgLoa5nOvKOILwZW8VEYlDqzkSlq+vYH2GI0eBPR3chJNwfXyer5aSsZyrKjbsQmm7P/j0p9Z9Rwkeyutgg1zS2u0bp2v6+SZwE/7KN6419rhROuJ+8EMfMjZKZfZS1qFkCSqcSKiU8Ytf/KKxL/3CFca+6FOfMPbEQ6rdfd/mxfUbS9ooL+np6bG2eXlLuVF4b/ZA7vZwWO9RPG4/j3Fde3u7sXfvLi1Sj4CEOhrVJ29Ly2SrXAykVijby2T0KRUKaQNZt06lZK+8MnhJz6//n18b+21vONrY5519ttbDlZ6CJC7bq30onEwau6UJUjmHQI7XC+eatqUPETjfNBwzDKEM2jv1vq9cscrYixcvMXZxe98DCLxlrvbxAsjV8d40NdmCmrr6WrD12X483NtOaLMFeO7WgjTLDd2Ao2Uarm9nly1NG85gTZu7tW82z1KJcLjGTuXduU4loCtAqleUfYNXMDHKXldbq6KvQpfOLnMw0QwyeqSc393daqfTKi215nOeyXYOKhxyVMIrV640dhxk7ZYQBXaQgzaK07w4nJ/76PGJYpJg4z3sz4iDs8xqk9phe4pBe8JpDQqG3Lc4FFg1H3awsQvJhFQ3VmCPMusCxUoIsLzcOt9EFN8AcYxx9+OTAwaR4CFBZf6+FxCfxMwnlQu6r6CSQwRbMrZwvFZ4vr73RVfCh79xZMFj+M436BcL3ztHELsyDPdvLYQQQgghhBBCCCGkSuGHJ0IIIYQQQgghhBBSEQYstSsU1CWsEHJco8G/NQxSu1hMD/u6aZoB4MXV6rK/V3atQQLdk3ucda7TXjVhZZkB2+dU6HP4LOe4iPmS0Gk/BbbP9fh14+zfp5xyirFDILvJF3y1hDMBl38JuU249LdUdPP2e7X6sgqILFr0hGejEQB6e7o+8OgBPWOi2h2asWrAaV6GI8c5v+ccrnYSeonVwaCN+Tyv98enfrdz+7S0Vr1QaoephbRPTJx1mrXbT7fMM3bHo88Yu75epTc3ffe7xm5oUEd7lEuFnDaHfRXtLEgATzzlJGM/MP2vxn7iqaeM/e9fu1pGEhMnqDQhm9FO68rrEFTX4LNvHGS0sputym9QXtfba2eP2bp1674rDKA0q7ZWpVgorROx2w62C8z0hvbkySrVe2zRImNv62P9yvGPpauNvWbFdcb+9IX/zyrX2d1p7OWtbcZumT7D2M1Tp+kGYX1S33vvfcbO5ux51LwFmv8J51Q5KIf3MJ3Wa91Yr3mkEu+BsAYikupRTVSmN2Xs3h61cbioq9PtsW3UN9QKAipMicCPlhaVGYYxK11a21Yur0dMJmz5Dcp5akGO1uzINYczONLF4DYnYU2soUmQ9FydeeUefNHYqwNo7cpJubAfptOap65Gk+hZjwhfj3Iz7a2Bg06HMduW3WmZmkNgY7hAzS2HWfsNR7S/dHarLCURSxobsz7mQKqJyTPLBU2wpkJg4yN0oDkUqzloA74D1EL7K0Aj8Im7RERwBGrbrA2tob4yoVX2H+XeroKESvBJncpJwXxyNyzny1leTrIV5K3RJx8sl0fTJ50LkgHOd2z3mvjW+faFLRSvlXtNcP7jOwZu75PKub0fexRolK3t0cb7hs/HoNnnhoev0fCoBSGEEEIIIYQQQggZcfDDEyGEEEIIIYQQQgipCAOW2uEuCgX7O5b1q6AuZjFwoZ81FaR290Kk/SLK7iqDm+Olb/l/9j8om3CdGH2Ok77kWkFB50x0+MN9+ZRWoOaQj156qrUuWZPUY1gZvNBEOc4+KloC3L4QKMOB2suWrxTkez9e2PcKVAv5Mq6YSbjrCWgN6OW5pRKVGmKm227+Up9UO+yRfeZ97rweV+ugyeqw8QfJcOcWyUMdsblHPHXMwvGSKtW5uH66IM1dOrp8487fGPv888/XMs3NeujwwB43+HjBVlpXp/Ks3/zmNzJSOeOss4wdDkNGNJCwZLJ21hSUt7S3qfxrXWurseMgd0v1qrs4bosyKxGRpiaVA6H0DTPsoRxvzZo1xu6GtFeuhA/BtoMyTcxwh8dG2d5gSu2QTTBp+NVv7rHWTZuikq8Q3IYH71EZXVf6d8aO1+g1zYAWaNp0u5+tWKHXrielsso8bINZA1HSlkyonCoRtyVxDXVwTXtVutTZoZLBEGTOQ7mkTwbp/o6APCoa1TrW1euxU6u0DfSmS2cvfPVcdNaTBwmXW244g/OxldBEa9v1midq7SyBbdBv24OksvOQd7bF+1lXpzLe2lptV5jNd81GbfwbyhwHBSfYv1MpnSniLYvHVd7b2KjvA1OnT7X229auYwvut7amtHQ3D8/jmhqYPffohcg4WkTf3BlH1YFmosNjVFtWO5wx4DuHdc/BBmGxiIjgCJQAiWUs6su5XS34Uge7BMle55PalRNp+uZWKbBR1lVOVtbXN0hfXIlymQp9vQu2P7IZFmP2aNg2g+fkVCXvkedtWwXLF3vqFLRn6rgprz/LmO8/7wxjHz97prFDBfseFvL6Owvy8w7IXnvzLX/TDR56GLb2yflE/O0p71keJBDP4FE9T2xCCCGEEEIIIYQQUlXwwxMhhBBCCCGEEEIIqQgDltph5ohw2exE6lIWge9ds6eoa+2yszR7y/O/vxf2dKhz1JGo7dk3VkYUZx3eSHRc9Dln+oRn5ZxEgzp9vsZlHzjW2C1TpljrUPqGrvK2XLO0JC6E2efcrHbW79JSu3BEy4TDeiXXtaor99e++T05YMBr5soWQNIjtdDqpoxROw1iS8hugtJQN0flsEyEdwTYkDVJRJyMh542amuL1YRMVBL2ZL5zNrEkdUHkddZ+nHuI99dKlgEjhdWh1W33DdPmGnt21L4mD/7qHmPf/+Tjxr7s05frIcIoxS59Hq5Uxs54B9tD5j3MfvnAgw8Y+7kXXyh5jJHA8cdrFsEaaJ94XV05I8pNlq9YbuzbfvhDY2cgQ97u3Sqn2bZtm7Hd7HPTQQ7W0qJyTJTvoLwO5UIolUNbRGTJkiXGRtkeZq/DbFwoMUPJ4CgcfEQkHleX+BB01O07+i+wf277Tvv300uNPQmW106YYOxcUbfJgmxu2x697v98/CFrv69/45uNnUjqfe/NqKgFpZOZXh1Y8D7Vg7xNRCSX1Wufg3ZTh5kFQUqcANke3reoI5NJp1PGXrJsibELy1YYG7PiCUjzUN6ZdWSjOA5idr/IACW8+xNfrqI8yMjCk+250pxZM43d2vFPY6+D5ueGjShF2v0N1xolbiivw3vQNEHHgzzIBDc6+8VHybL1+qTH803A9AHHL6tdOM8FawyBeqV69TzicZX3NLU0l9w2FFYZTchR1OATajDldUi1yesQvCO+GRE+KWyxpEjzeLXTsFEi5/T1qiNorkNfmA/f8nJvcwH2dQhkyMRkmVYGemdehvO0sPbH18+D7Krw3r/0v6+BjV+SweKKj//M2GedoRmVC3Cts2H7zSJnqesKJe2PX3yxsTc+6+bk7CuamXFSr2bVvfHibxk7hu+bIfta4xCXhnl3N9hLVurY9chDOtctnz/Sh09qV6Y9VAB6PBFCCCGEEEIIIYSQisAPT4QQQgghhBBCCCGkIgzYRxld3fMFv3bEcgoET65a8JT74AJ1zLy2TbPa7Xg25ewX/HSHp2inz+AZYeaHbrDxTDc7248GG53uUMjgyvNeA++Nm4cAG8h6z/bIm45Ue+78BbqfmO0KiJlvbAUOyGysrHal5TeuiKvgSu9e2wYbHew3DTKTT115dcltRzyWFMy5fvgbG9CMRiijGXnkCfX/L0KDdXspKmEGkKhn4EwEey78iDrXARspustacgCPi6qlzMMMdQHraO0rtG/b3W/B8yOL2UHQ713v7YcaNS9NpDNl7fbb/3OzsQ8doyMYZiALB5DauctDAa4pSkA+9YUrS5YZaXT3pIyN2edqLFmofb3wOqXTajdD5rN169bpBltVToOg7E1EpL1dn884B8B7Vw+SLRzvcVssIyLS06Pysw0bNHdWV5dmXcPj4faYNa2lGTu2SCKRNHYtZJPr6NSx64UXB08mgPKjcG/K2LOPUj1vBuQlW192n+jKiiXPGLt5ss6R6iArXQJkhp3t6ppfC+cddcb2ZFKf9ihTXNOh7SECUvRksrTE0c1MGEYZXASyjMFsIhLV5b1wfaxnviOjSMN4lU5DJrxUSqoFnAXBU1NSq/W52TDHltRMBilryxS9N+nnNhnblbuVIuX+Tqnoq6EBM8DpeLJqlWaAAmVoYGERHtOatcGEIJPRGUBbh44NsRo7d3PLZL0O3d1aGZTdRWAMqIe2b0k4MxqqI1Lm9aGvkjicg1eznM7lIM9yfLdAFRe+Q8AsUUREpi84ztid3Tqmh/cKxlBt4JtaOUmcD59szpOZTUT8Ykco16LPupu/q9mGJ0e1TChvy93zOcwUqyNWPWS27enR833bfw/ecxPJrnzQ2DMvPsnYBQzv476veN7/cP4+r17Hi18PsI5IZ6fOkT796c8Y+957NWxQxGkKuYxK/WDoku1RiPtRwNyQvgyCbhvbv1nq+go9ngghhBBCCCGEEEJIReCHJ0IIIYQQQgghhBBSEQae1S6vbmtuQizcPbpSojt1FKLrT6lVl7BzTplp7J8+q9l43P2KrO1LdYcV48CuA7s/8eXRtRdz7aCbrE/AkvWUEdlbeleKSeBj/KGLP2DsSBy0WW40f5R35eF+Fkq72odC4KRuueD7XS2t9gjtLJtV+0tfwowMBygRn5uviORgHWYvqgN34gTIZeLgj/8XkO04erohldchsyFjZjO09qjT88LQK32jpq/jYpY5q0wZTdzeg+neeGV3TjmQxUgBenseluf0pP5limYvOT6vcoff3X27tVscZ776xc8bO5FMGhulXj7ZnesujevcjHev8eiiRSWXj2QeffQxY6N0Da/Ro48+am2D5TDD2RTIMtrUpEKJ3/3ud8ZOJLQ/1DhZHvEerVixouQ2mO0My2BGNCzv/t65U1vYrl27Strbt2tWukPGa+a6qZNtkUcioc+inpSKnHp6OqXSbNitT+cNa1U++LajNdvdm45Uqery9bb+Z9ce3X7tSy+UtMcfouPY1Kl6nyNRbRutrSCpFJFYTPs/DhF4rzNpHec7OvRaYZ9NhmxJFF7rZsgsFo5ouQzI5nC8yGN2q5wtWUEpJY6dKLsa7qDULgV2O9jJVWsEaZqu8spZc+bovrIqwWx9UcV2z3mO7eZvwsdPCuSK2D9TKc2X1+N5aB/i/PY9BvFuorgnARvk4HnR3WPf17nz5ms5aBtLlizT48HjIgtlwjAW+cQqInY0ARSQBpHOlZmVWudebcFB8FwwMyK+NzT4bMhiJyISgszI9fWQvbGn2rPalcvz7ZM9BXm7K1feF3IEyqVVEpfMqbSxERp6NGZL+NIF7Z3wei933qKZcDtB+j6YjDpIn4Pf//HPStrIGCd7bdh65ytpyrSpRxv7Z9//jrGj8BBMpbGlizy2SMfaeSeeaOxIVJ9pl12u2Zzv+nVpEV+5vv8KrnxlA/xA+x1gl5Pa5T328MgAS48nQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRVhwIK/Zcs0/tKs2TOtdXYGcojdg9rLQum0jrOnqlL4p8fZ+5XnHoYfR4K9PkCN9z8YZ6nBUyYFdl+15eXwxWjCG4/HTjvleqU0KK29/NOnG7upqblk+bwbz8YKZwNxmSJgh1WXHw6p/jZv1d5uwnYKZmhoEKPnsUWapnP9xtLpww8sPLGCRETgugvEixGI4yFJKIPpTCGWlrQ6+8WGtWW77FcmgV2fVDuJETic9ooxyrzZbuGHFWwC92MNfs4xPP8HCBLvydqVUz4P8QfwmBiWoGWWMc+r05gi4TUa1+XWn9k6+8MnHWbsExcsMHYW9PHRWEz2RcEZGzBmEa7LQprfT332in3ud6SxePFTxsbYTZs3bw20/apVGmepqVGfRHWQJnnWrJnGXreuFY5nx7AIh/XJ0turnTmT0Xvf05MCW+O1FIsaLCYet+MDnQjxE/Ac77777pLbI9u27zD248++aK17w+u0rZ50kqZmDke0fT7wwMPGfnbp6pLHGEz+sVrv22cvOMHYM2bZ6a3vuU/jS2zdWfrct2/TFPE1dUlj19fpfe5xYiGlUvo7h2EgoP+2t2n/z2W1LyaSev+nxXS8ELFDMPZ2a9tI1mo7q62p1fIQmAPjbOQy9mwE40pFYBuMETXcgWiI1iiNkcbiy+157LTz9LznzJmp5SD+YrjnYWM/tznYnGYFxBQJdWrfyUDwPozkgq2yFmyMTypiP+56PMtTYMfhNocjWqncOjcmmfbVWhizYhF9budgnEpD++ns1CvcBdMNu6fZj3Z8cu2Q0uDc3hNlR0SqL64Txp/Fa4JxwvB8sT1Ybdx5/Hfm9Io3NWjJaGT4pXzvG/h8zDvrfK/ZvghovjLufnwtDo7/ksbCvODt/+U5xsA44eRTjf2tb2jM3J72VVa5ZxZpjMpEUuMIzpyjMUXjsPxNb37rPo/9ivM4fAVfmD0vz08+r8/2204529hJODbOXURE2ru03Z50ymnGjsWTxo5+/kvG3rmjUu80vkhy5fpPX+OKVR56PBFCCCGEEEIIIYSQisAPT4QQQgghhBBCCCGkIgxYanfddd839rGvP8pa9/nPf0YPFNNDodt+3qqBut1j8ua3NKEERuTx5/B7GaZNRtfsLTJUOBlEJQk2OrqlwPa58g4UvCJYD3R77o8b8GXv1Xs9ffo0YxfAzbOAzavgNjWQXoJvfigUhRKQfh3leOBumMvb306j4Ris07p0dKjL/39/v3SqywOWFLjmZh034bhHhpcHiQzKtxJwn2c1q93kuHim4Tg90L/x8G2gx1vvJoPuIweDPQ+0drVw7EI5Z3kAvaJdCWmQ7V8j7Hz3tzxiPdu727yGlT3VlbXib+j5UR1lPzlN03TXgzzmWzd+y9juHfjutTcauxZcjq0aek6jgKWc+obgHDEl9t333FN6ZwcKBb0WqZ6+S4Sbm1R21dWlCdyzWZTKqd3drfKUjRttv/XxB3cYO51WbU4BXN9j4zQ1ckO9ijEyMMbU1qJIwwalNS0tLcZeu3atdxsfPd0qGqqv02NGIR1yPusKzfcfK9ekjD139hxr3ewmvSf3v/jSPvf1zBKVZB4/Z56x447sNRzS/t/ere0BU9rXJGGbnPbTzi69/2tW2s+MZJ3ut7NH03lH16wxdnNjk7FRthfDtPcFe7+ToQ1g24hG7fnhcMYnlEDSzkDbvXKJsaMzZhi7ZXKzsZfX6DU8BKR25UaJ3WC3grwO5We+uSHOHyMH2evCMJxnYdhAQTAcTjphzGiBQk05e8xZtXipsZdABRLJsVqXGM7/tCLY9msOVhlM1pl4Y4vziZ8QX0Lz/Rw8YMA4Wemt8/KdC47c+L42BezG2a+3tumGsaFXUDpbPX24NHjFIs467C0Y/ARbmE+UilL0pLNfXJf22La8uhKEavQdvKZZZde9vfbzdFWHjiyJXNLY85tnGvuxp1YOfgXLcNJnbjF2rgBjR8G+hzvX6XPslpV/M3YEpOFbt0yDLTaCfRjYSacGEY+N7SnpsT3z+r3W+UapILgT+MGR7dHjiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVYcBSO+SF520X+Msu+7Sxr/mGRnxvaIA8GCDfyYMcK1JQ17Hjp9u54B7/g89dEcvtX6kdehu7rqm+zHCl89MMLugqnfIsD8p73qK5LuadqFmsMNuMq/J5DZTKvQp+80QZHZSzsluBDZtGHDd7dM/HuvzHf3yjdMWIyP+C43tDl72uGfoq3kKvvAHcRaNwo2odx/U62NlUyIOC6ZWmJ9VOgStpDlx4uxwX03Y4F1SWzAJ5XRO4KFtJteDYBdddGs4FpWtoY9Y/K1MgLi7jqooNu+DZHo+HsrtIqPRyERGQq0leL8rE488w9pykukvffesPjP3751Te8OVP/Ju12+lT1bU4ZFdSSuJJ6BcK22MDbv3Agw8Y++vf/M/S+z1AwOyfr+wuU9DD0udLZ2o7aLTatbUT9Hhl9rV9x84ya1+lBrKNzZmj8rH2Dh1jUqmUtc2SJUv0+DD+u+VeY/x4FbZv3+4XuLy8RZ+2P/jh7caeP/9EY+dBtq0iwf2TkerP/9R+9jDYIiJ1Y/UGHTNBNcMvbS0t0N+yQd38/7BBZeWnn/4uq1wtSA4boqWz32VTOnuJRuE5Dc/Z1nUqoRMRiffo/CwLYyLKHZct1kx9iYSWnzpVpRp7Sehg7MNMjNUktWsGO+exu8Um1dpm7PrJIGSCjLPZEGSH7ke9+ircRdlcjTMW4WPXze9VCpwH4xtEp9O8p8NvK4dXXrWJuYLa+AhNJLVHo+I05hwD5+p4HWGI9ApMqjk/spv9Gu+hb1TFty3sgfg0r5uKwjuRWAtIrjv1aud9IQSqhnL1xxbjmyf5ekrIY4s4MR8822OOwX3LtEVE5Jj3wSZ37bP4Q39RSf4xHd/WFWmnTr1JtfM6b//+8j/p8lU61omcDjZeH2xt7jXBcr7rrvXY/IcULMd3Cfd+6LNr24sdnnL4MvFesPFdwn1W4W9fZkTPe0Vg2dvw61vDr0aEEEIIIYQQQgghZETAD0+EEEIIIYQQQgghpCIMqtTOZcd29cG94pNfM/Yln3i/sY+fd7xuENHqhCGDz7RmzJkgMulN6r658enlsAZPB3PLDW2Oif0hqQtCfyQD732LZgz54IfON3Ysrm6FIXD5tqVEkLnO+caJWa1QQmJlTkMJDvhNh+F4IcdFF6V613xD5XWbt2wVEoBfbLB/j4XfF79BbZTKRcAVFLI8WJkM3SxteNsisC4O29TBvvLgkpqF5SlHwjcVpIFxKIe+5JZfOBzb8nR1XG19Gee82ed8Q2uhpLn3MTw2/gB5hSWvC7k7hrrkk8b8aI1mSCqsU1fi7/36j8Y+YoyKiM875zy7unDMfB//hVGA83CrWwAZzxe/9CUhr9LcrFm9Xt5YWko+/uCx1u/tO/adDXI3JI/atLnv4yRmRMJnXXe3iobWQEazGGRArK9HKYBIe7tmV0OpXdjTnwrQ/8aPVxna9u3+PLFrX9b5QOa+h409uWWysY+v06xrDz3+uHdflcAVMa7fBTdol57XxHFQKK93YdMrpWcci595zPo9Z77OvTDJaBfct+52lRXUgXRyMkho2ttQHmFvX9+ogpwGkMehdLKzU6Uaq1atMnY2a8uoe3tVmjN37lxj+9rGcCQJ9lSw8ZFkX02R7nXrjB2Da51o1ntw2hmn6QYhlSf/7Xl9fg9m5mTs8259UablCtb7gtsPVoGNMq+ZzZo1CqWdS57XsaxrW+nZb9IeLq0px0p4bfA93oJICasBN4OfT7yK+bmmgz3ncB2Malr07vRmMUeiSALSmEeT+l4X3Su0QbXhk3iV+l0KK44F2Hhd3MxlPrEubo89BaVrKAtzxs+X8JjvB7t0eBTZAfY/UChcJlwF2hvWwXKs+3xPHXE/bsv1SdR89yDssd0ej6Ma3oe+ZnYr185Hymiyb+jxRAghhBBCCCGEEEIqAj88EUIIIYQQQgghhJCKMCQ+yv/zPc20cvfv/mLsb9/0LWOjcqQGvdxE5Kx56qT8vadXwhrIdmXlD8Eo9JXJdoeJPUY564aL1C4IF71jgvX7tDPPMjbK67DpZPLq7mjL7spkZMB1ltRO7YLP9dFTXkRk8RKVXj793AtCBggqdb4H2ZbeDHleTpqldh3K7mDbnDPUgMu1ZGCbHLiuYlY8dEMNwYCQsNLS+bPUoZ4Lj9ELbrMom4s4zuZWMgnYL0ryUPJhNX1ftroy3/3zpSWrlpSxXMITBDIFjk6qnGhOSs/x1pt+WHLT5ikq58j02m7z4UTCLb7PqpQs78hls9AedharafSsLLGoNu4xo1UC+coeffpMmzrd2gblSShp2lomA1xf8d2hQkElYusg81ljk0oGm5qarW2SIOdCqdUUaIebN282diajbTLcj8xIm7bqdYjFU8aOuv1/GLIJtEjj4S74ggxs3mLf8xVLFhs7HFfZS22tyh+zIInLw/gYh9Rgc2drxkIRkUxa52FhyDjXk9G2WFur2a0aGzWj5rJly4y9Y4ctDkPpZkeHzulcSV61gE9EDCbR6ZTrWav3tq5Vz7u+RftEskbHhvoGvX8Ny1Vq99IgDqXY01wRW85TbqCkwK4FG8eGDGRwXbFcpXbdvnN3lMhxTBoLy3E0wCezK/QZKfh61DywG8GuX6DS15opuibbi+9kIpkuzZiZbFAZGE4Pq1N0FyRDXTmwteELb1BZGYJXECfEjZ7l7mcAvPu+HhzxlME6BR2XfXElcL7paxXuMXz3wZfhDq9pOakdXi+8P1hH3/mW+8xSzb4//a97NZ81IYQQQgghhBBCCBnG8MMTIYQQQgghhBBCCKkIQ54OZOsmdaf+yPs/Yeyvf+2Txp41dZq1zZzpmnHmT2/WdRuexKwt6BrXBDa6fu47409/6I9Hsy8z0P7givcfY+yTFpxkrQuBvCMP8p8CSJdS4E4bjWn5SFTdI8MRu6lh9rm8lf3OA8iSLGfMjO3e+OWr/tO3BzKYPAmZlp58Wu33glRzarPa7kgTR8kZuNFaiTpQgufJqOFmNEK5TR5ldB635ILHTdhNtWZlW/Ro3KzGGyTbhdvaPe7AeI4+OVEW6l5wykQ1m9RHp87WI6xTUcdfHymdueuR51Wu+uZ/Od1ad9UVVxr7zHPONHYCJLmYdSxkyWt911Pk4cfs7FvkVXrTKWOjtGbzlm3GDkfsa1lTmzT2Cy+9VLG6laKu7hD4pfVKp3vBtqUYzc3NxkYZXQQkpkcffbSxV69ebew9e3RMGjMapMAikod1yUN0jJozRyUi2awOPsuXYbbc4Q+K6N7xuiONnQBJ3O+ftaXnUZCo5UEm0JNVOVckXFri0AMSvBrITiViZypcvnyFsTMwvtaBHCwO48WcOSrbw/svItLTozIdzJLotqHhDPZOX24kRzxu57Va12rszgYNM1E/W8f1yZNVytoK5btXq0RVRGSw8vyO3neRfuGGrCgt7Bbp6tZ2gRL1JFzIFKg2Me+W23IioBssJ3IqVScs7+63Mm8ag4c7W4HcwFYmxplgTz1ukrEjzdqfQ/UqhEwmcGuRXErH/hxkvMsnqlNgV5qgWe18sRJwTltOwoe/cRu8lr50ztiiy0nifG9kQVIwu/X1lfMdwyfhw3N1R0vftUN8me/QLueT4zvHIFK7oPvtK+X267uOQXBf3HzttG/Q44kQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFWHIpXY+rrr6v439ptcfaa379Ge+Yuzzz9Q8C98tqIvh9qefgC3wNOvBXj/Qag4a+1te97VPvN3Ys2bOMPZezn4BJEZhK9OWR0IVclxpIRtdqIDZwDyufFYmO93Xt2+41q0xGUp+Cw78B4F92evtcjVwP9EDOA/3P43Z4LAMZpJzK4CZ6WAxSkawiVnNskyaOF82OitjncdV1ru8zO+wx8ZC6C2Nvv1OBsGj5h5v7JkxdYP/3FcuL12vgHz9O9cb+4nFi4z9pa/o+FxXB077qIIESUQma0tqPnnllUL25vEnny25/JDxY4wdcaR2DZA5aMVKzRgWi8ZgG+0Ea9dvClSXg0BfU1d3sLG7u1XT0tmpEsDdoMxF8o7nN2Y7i0JGtK6uLmOjvM7HK3s8BxSRBGTCRCnin+7VDLvbd2yTamUFyKs+CFlp35O2BUMoU1/Rrte38xVNl7dbSrNmlErd3KyUTfWaPSma0HaWzegghfczDFJilNehtM7dBmW7ebcRDWOSoETPp9TOQXPF3FMi9jDf/aKKKmum6fXp6Wg3dhbGU8wYOMd5Dt23VjM8D2T+GSvz25cBLkhOTbdOuA0+Me7+X5WQ4uMcWwW2pKD5PA8CG/eFx0CRaRK0gW4WvS6wfX1qKGlwfqOACQOdnPTmw409Zba+N0RqdNzGbNSRpC2QDEHIjVRKRY+RbPX04dLgM2m+sy6I1M5XvpwkzSev62vGuYFee9+82c0MG8TPxbcvn11OnuaTuAWRHLrXxFcu4ynjq2M56VoQyWHQ6zCQfZWr00DkgP69EkIIIYQQQgghhBAyKPDDEyGEEEIIIYQQQgipCPzwRAghhBBCCCGEEEIqwrCN8YQ8/bwdi+n/XfQRY//7v19t7M+df5qxr4L4BfICpkZOgn2Mc6RWsF+Rkca/ffhtxp4xS9MWh0J5sO1vkTkrHbpqh8MQcymegHhN4dKxmAp7xcyBYp6YOSHYpgDLlyzTWCVPP/28kGEKBjP4jnOfTh2r9szpasc8sZ9i0GDyoKUOOZpjjGOBscNQfu2JVSYYH2evTLCwwGqvUnp5PoBO34395IsdFcZzwhhPUCYL55qcYu3203UzdVeQzvjFTRtksPj7I/8E+3Rjf+3qLxt7/nyNfVBTo9ExvvKVrw5aPQ5E6hv0WvakOq11yRqNuDJ1qqZZb2/XmDBuLJ0gJJIa5KkA7TuR1MgoGLtn06bSCcXd+DypVMrY8bhGGslmy6V87hsdnW3GfvSxB41dzXGdRMN8yeTZs40dhth2cyfPwC2ks1WvQyqlA2T2FbULB+n2GRgUQ1Fd3uvcm1QWAs5BG4jF9H6mId4TxnXC++zORbBcsbi/o2IODokGDfKUiWoMxNBGLeMmlsdJOkYU6Vy+UvdbpzF26us0rhM+KtNpDAQo0gAxnjpgOV7ZcWDvBNsbglCcZO7QLvFudsH0erP0HZxa4NsBxmXCWFPYQiE8nfgjwfljMeGbAd6PKFw4O7KRXa4XbJwB7O8WPRFsN64Y1v+UU/U9qWE6zC0gBl8M5vp5mHflnWl/NqoLohBrL5wbvPG9+vHFXCoXH8gX18mO61ea/vif+Oa3VjDWMsfxxPL1Lkcb95vyV9EO8uqxcx57rxcAT7kggVl9sbhcsA8EjWNVqnyp3/uql88Out++QY8nQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFSEqpDaleOb3/yasV/3+jcZ+5PnXWrs//45uM2txsSmrkMs/kbJwssDquNQ8oVP/T9jz56pbrKhELjT27o3a/tIBB2WtbkULEmTxz0S5HjhMi571ua4HJbmcnoPr7rqm0KqnPtBenP/06XLvB0c54+frDbm+s07rsSWvA7leVDG8iRF6ZtH6rYXnnJWn8iXXl4uU2kQT+RC6f4lCU2I/K75Z1q7nRupM/YN9/5K9idXf+0/4Zfab3nzG439+JPP7scaVTEgW8HBsTO1ydjbNonFc8+pEOXQiZrvu7tLhR3FcnoTD1u34kY7PaX2nTi8tjZp/Y7F1BV9zRqVErW3tUspRo3SMaKpSftATW3cKrdq1Qpj79yh5/7yBueCVYCLPvJvxp4ybaquAMlvKAqStLCdhrrQoxKptm6dv6zsXKfbJPQ5XRfRaxhNqft+rTPezJijApu6er12yzpVeJUCSV0GpMixGp0ruVLNJ555CtapsGjGdJVUJxNJY+fzWgaHymjUvg4o3dy9ezgmpd83XXCtcH5TPx5+bLe36QYbJVttL+0w9rQpes+mTlOp5ZQp2t7CMft6dkJdEutUdtcGmi9fzy6X5B0ftXGYPjY1TjJ2bTec1SYVr/VHdodgq9juKYNyvH4MfRZ4HVAoU+7FKojIqLQweXDB1pAcba876wx9Pp9x9hm6oqB9NZzS1pgBCX8IJNJhbAAiEk0mdR2MLfmeVMBaVwNp57c1gQtgeyerzn7LTSZfwye1w7sf1P/EJ/nKe8r0ugU9x+yr/KscQSRuvutWTqKY85TzyR19xy53HkGOEeSel8PXnnz7ijm/fW22b9DjiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVoeqldsiLz6tkp7291djvOeujxv59FlzwX1ZX/lfBy9ECdj3YKMHDXCADddodGEcccpixP37ZecZuadGMRxHIDGZ/cYRrUrCbRMHnkolJtyzlkUe65IBZ6iwbyuRARvXFLzLz1QHHQ+A43/mi2mccrXbUHcI8bS6KGg5so1DGykRXJvtE3udiivuFevmkdhEnc4aVVMPjigxZqlBKOK5Bx6t/rcWxS2TVYpUZ/fpnvyxR7/0P5XV95/rfnWDsQh4kaSv1mfSj/3CyR4JmY8um4ZcJ7MUXV1u/W1v1964AepNkPKl2og5sW1aUiOtzMJ9TiUgEZG07dg5eVrvDxh9i7KYGlbE11qu8rTejHT4HA0MXypBEpHXZEmN3p1Qe1drVAct1mwQOHZ3aNqbEbfnhufOON/aJDepS39uqUpFvv6Djbt24Q40976R5xq5ttnNiYWLbZStUDtjZqdKLfE4LJRIq22uEzIuFgi13eOGFF6TaCeW0D1rZ32Iqg83m7X6aB70b3lps4YVHlxo7DbLJ6eecbew1U5ut/RYW6XXvKqrULshLAUraMt5SIinoUo11ev8bQAqbTanUrgB93hUs4VN3IDmnse7jnXUoLEmBHUT6FvRlCu8hnscYt2AFGAU2tr/m6faVmDpXs15HazVjYrig9y0U1Tuf6tDxJwRhBhJu4l44agHmYWmIclIj1U7K+d0Atm/u6BOv9ic2Qzkh7L7qUY4A897AGdx89Qpy7uXm6b5yPhmbT+LonmvGUw4pl9HPt18f3lgbnvLlRh9fe/DJ5vBaYdt1t39Q+gs9ngghhBBCCCGEEEJIReCHJ0IIIYQQQgghhBBSEUaU1A7ZsU1dh3//U82Cdsw7PmLsl0J11jayATPnYI4K/D6H26CbH0bwd52PfblBgqAOuEe/fq6x3zlnhlVqzizNWJdIqptfKAJ1CaELHdS9gOdhSxTKZ/cqQV/Li5MMDDZ/9NFFxl6/douQA5gX0QZ5zhuccvOOVLsO2jVky5IsuMGiR2wE+4RbgQDtGrPMRTxSO9yxm/TD5w2cRakeVDjZbMwPzlLX+FjOHn+++t0bfTUmVcSalSljNzerJGnuXJU99VxmC1Qe+JtmtcvAKmyqr2A7rHySt/JAUx8L2pNdHm1NNqsnlYUTTKdtV/dIRJ9rr7yy1dhuUszBYvN21Rg98MB9xu7sUklKV0rr2wVZndatU3maiMimtc/16di+J2WtI0te063zneYGDScwo1nd66es1YH3xZ2650V/+r2xW2YdZe03UaPSnONnaya7bAbldUljx0EC2NQEsr2QfQ//8AepehJxbdTptDbqKOgTC1E7Y18NTB/xiuAovw5SuPX+7W/Grp+h17+7E8NEiHT2aFvcCstHSd9wZWg+wUkGsvA5s0wD5pX2lRERwTyKA5ldu0Id30zYJ7Xb6llef5D9uwF23A4VroUyKbAHIiV0wd6Jx/vgezRz3fwFJ1rbNNTreODNYwVZ6eL1+l6U69VxrdfJeBkDqV4EJLYxkExXP0nnN151bGG+CZ8vC1q5OajvVT6IPK4//idBJF/lZHA+gpTBY7uC3HJyuX3tq5xUDr8H+CYNvrqXy87nE08jvnMKeg9x+7RnOT5N8BhuVjs8Tpf0F3o8EUIIIYQQQgghhJCKwA9PhBBCCCGEEEIIIaQijCoWi4FS3Ywa1VcH3GrA9od9y4c/bexnVqgb2e5ucK3rAXsHupqhK57r/oegu7O6tx1yxDRjn3bKLGPPnN5s7IY6zfcQc9wYIyF1jyuEVDsRDoM7XcijaUN3uoLrCuh1tC1JKKDUDveUhWN2g+Tgko/9e6B9DRcCdqUhY2T24TK8A+w5x6idwPYOLTHvc3F2ylndAGVwodK2vSM4hOPOG/Fkv8OhJaV1f93cc4z91Wmaoarjgces3X72k5/11IW4DOc+7Ou/F31BG/r8BdOtdZGEPotyotKqUEQlEAXIQrRymdq/+41myFt9fz8q3A9ed7QKQ7DLtUGW2l2vlM4gO3aMXp9ETdJal0lrJ9qxA4UzeE2H773vC6879lhjN9WqnKV1xTKr3OQ6XXfhfB0/pkWbjP3MX54x9p9e0nHlKbhWG9zjH6XzqgWz32nsZJO2zXBUJTe5nN6bRFLr9PDDdtac++//s+yL4dx/RUSemq5zuI4OlWPG4HHjPjpATSq9INPC2SfaKbDnvEPbQv1pp1j7fXhVm7HvvvteY6/dZkv9+spYsPFUgkjiDga71lmHAhfM+zgQWdoE53fSc7yXA+wLRP4y45jDrHX1DXo27e163dvXqfywG4a1jQGOV47RYM8D+8x/0fZw9jk6f6hJJgPuGa5KXp8VMZAyYyiD3m5baleAbWrqVJ5XgHeT8NlfDFiX/U+wOfT7nN9NYOO8EltY1lOmP1ntEN/7W1AJn4+hlNr5ZInuuiDvrj55XdYphyOOL49nkIx87vnh9Up69htEalcO33nh9vjNAs+vXmxwm5+Drc+yIM9gejwRQgghhBBCCCGEkIrAD0+EEEIIIYQQQgghpCIc4FI7P1de9z1j19RoppV0r7qhZSB7g2VnbAlNIqnymGxGXfaiILWZM3OyLo+qC2YsUtrNLuR6DsKCEGSvKxTAnRN8uENWVjuMpm9LjAqWa16ALAHWMXCx/Y0zD1K/dFbtyz/9OWNv3rRDqonh7uZ/oPVhL+8HN/jJ4EoaLePCa0ntPC68liezRzvhJstAYrASD9+Ny3WcuP6ki409DbJ4vevUfylzEFKO4dyH+9N/3/JezaL18c+fZuxknT4XQvC8SWf0WZCFoX/Ncsz4KvLtbyw19ivPy6Bx6CGHGLumRvtmBLJEPv+iHhCvyIw3HA7bNgjy0ENP9rtOBx2kwpUIyGF37hy+baWvvGmCnuM3YFxJrtF5zbI2ler9fMsLxu7Uyy4iIvGISu3mTz/J2L2xpLFjkPlu6lQNM3DHHbcb+8kn+37PhnP/FRFZMkvbdA9k/Cpk/fK2PPTDLGSgbIdTRUET2g2gXZv9rx+29pttaTb23Q8/aux77n7E2NuG0eXEwBj4GO1rFXHMiDvr8Dceo685ld8y3v49//jXGzvVo8LIvz252dgocNkswcBrgjN3nNF/9I06pn784x83dh1krguF7fl5AeY4eZDCZqAxxqJ6lHhU33FCed02C6EzRETyGd0e32HCMd1X5INfkeFKsGfwW5zfk8F2W9xr4OQRczviRLBSkrig+w0iYwsqgwtyjP6UCZKlzrfcZ4vYsshyk/jX6M+98h3DZ5d7H8d1eB9QwIztDEefFNhJZ794Xr8D+yVjUWpHCCGEEEIIIYQQQoYMfngihBBCCCGEEEIIIRXBTWFG/o/rv/AJY//7VV8w9pzZmpnFUtxAZri85egqYn3fK2i5MFz+iKBETZeHwW21YGWus6PuF1BeB9uHQqVdKgteF06nSYSw3L6ldl4HzL021ePccMNNxq42eR2pQn4NjuxvhWwVc1rUTjh92PpE7+kHVpm8ZwXYbuIMq6thNkqtyxsna8bL46OaIeneW28tXSdyQPP4bzXn05TJKpd751lzjR2r0YYYiWjW1XBMnylz5qrcXETkP67Vbf79M+pmLasHVl8Jqcs3ZjuLx1UWcsjBqmNJZ7cbO5OBDH45zB47MMIgQ2lpgTGiYP/f7vkX9DqMP1hze223sugNT57eqim17ntqlbE/OmWOsefWq0zk7vtUarfaSfl12BiQjc1QE+9PNKn7Cod1PO2PvK6aiMf1vCMRHfA727RvptOOVMGj7EDRDgolIGertMF0KveTX1jbn/aVK4196Yc+aOyaWpVj3Hn7b7Ua0IwxB9L+at0DybV3KNhBc0whY8AOkkXv8e3278V/VXmwb46M9+0QsPH226OwSPM4tetARbPgRJV7zZmjfTgBGX1z2B9jznzHE04AJc9W+Ay8kFFt19jPRUTyEIIgD+FJcmC7Aq3qw53YIXg98EzxLmNv9mUhEwkU+sRLkIx4AyWo1M4n4etreZcg8jpcXi4bPcrS+vrZpNw54bqoZznW1yfHc68D/sZt2sD2PUEwR6r7LQN5qcy68tDjiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhFGFUMmH+Wqdhf5VOffI+x583TeCuRmOpZC44u0oq5VAB9aEG3CYMeNgSxI0IF3C+kOA2jJlPE1nH68Ol6y+l9A6Rv9Hy+DEN8qVzOrt+KFRpH4stXXV96B1XGcE/lzD7cB97s/K7TdONW/AOvfNsT/wDjwhQcrXgC1mV2wvIjjHn67POMPa9bt//yf/6nkIEznPvwYPbfw4/RqCWXf+5Dxp4yUxt0NAHxJUL28yYEcXnSvSljp3oyYGuZ9laNG9C+UuOqLXrQjpgSi2i9QgWNaNLTpXXZvG2jDAfe9jY7bfby5cuNvW1b9cYqxHg2v3vvFcaeOavO2MsLeq5nXbXQ2r6vMX/ecNzrjL30uRf7uLXNcO6/IiIr5jYZG1PWZyHGTW9vr7VNplfPCbqd4JSqR0N0WRE6MNIZJtIWEZn97rcZe/IHzzH2Gojd88Of3G7s1pUaHySb0X7etgWeVSJSqZbf1zhLyHiwMVpL/CC7HIZWxFBbOAvuAXsgcadE7HNKgu1LgD5jkr39rLlHG3ty02Rjz517vO4LYokV8nomWYihF43Y7yxh2AbjOuWhzYZhuUCbCUEcJ3Hm/YWM/g5B/FqM8RS98BoZrgR7Bh/n/J4Fdh3YeM3xOmGsoaDxgfoa72l/hHcuF+PJ5/PiO19fHOJyMYgwPlbOY/tiIblxutKecr57gGVwxPAE7BMRf+wqX1wnrOOGMvvdvwR5BtPjiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVgVI7QgaJ4e7mzz5MSHmGcx/e3/3397+/xNiRpJ1qOBxPGTuWVPfvaEzd4OOJGmPnQVbR06H7+tXPH7b2+/3rnDzkw5jRB9n3I5FUEc+2LdVzHuX4wntONvacmXo/557YYuwVnWusbf7183cZe/1+VgAM5/4rIvLoZE1nj2qK+loVVGUytqy1vXWrrgNVm090gUK9brDdYAx4lPM++WFj15x2krF/cPfdxl78jMor161cr8dw9GYDlZ/5ONizvK/SvsPBnjLJ3msup1elc4vqF1NQBoUzoHAMDMrrUDTUAHYN2JNB5T9z/mHWvs65UGXSsbC2rUi4tJQqDMtDKI8L2T4IKAMN4zpos5GoSqmyuCLsl1ShvC4C67IgL42e+5WSdR8O9O8ZfCTY5aRhr4HiSixfTmpXTsJViv0htXPrGzS8y77K4Hm7kjifpA5tHBXXCxlcKLUjhBBCCCGEEEIIIUMGPzwRQgghhBBCCCGEkIqwP/ztCCGEEFJF/PzGB4192efPstZFojp1WP6Mlosk1OV/xqzpxk7UqAytvkG3nb9Ay4iI/Py2fxp751bxoKmoJoxXUcrW7Zt9G1SEPbttl/KRIq9DVobbjV0fUVlDTZcKjmbNmmZt8/mvara0f/vIPypYu+qjoUEFVem0Sk7zkG3MlT01NGhOtt5ubWOY/K4Amq8kbItCFMx25/5+9Df36PHgraC5UbPwrVqpbSGC2Sd39zXHXP9AgQ3mBst77CCSv3jEfgXKwA7aYXlfMzWW4xWPjYLVs8GeP0/FgVNmY4Y0EQHpWgHOvgA+BSivC4cxk7afLGSjy4HsLgKZqiWqMjBssfb9sCVgMagLZhAUjzRwZEA5FyEIPZ4IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhECZ7UjhBBCCCGEEEIIIaQv0OOJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhH44YkQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFYEfngghhBBCCCGEEEJIReCHJ0IIIYQQQgghhBBSEfjhiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhF4IcnQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhH44YkQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFYEfngghhBBCCCGEEEJIReCHJ0IIIYQQQgghhBBSEfjhiRBCCCGEEEIIIYRUBH54IoQQQgghhBBCCCEVgR+eCCGEEEIIIYQQQkhF4IcnQgghhBBCCCGEEFIR+OGJEEIIIYQQQgghhFQEfngihBBCCCGEEEIIIRWBH54IIYQQQgghhBBCSEXghydCCCGEEEIIIYQQUhH44YkQQgghhBBCCCGEVAR+eCKEEEIIIYQQQgghFYEfnvrB7bffLqNGjZJnnnlmqKtScTZv3iyXXHKJTJo0SaLRqDQ3N8tHPvKRoa4WIQPiQOjDr52j72/hwoVDXUVC+sWB0H9FRLZv3y6f//zn5eijj5axY8fKEUccIR/5yEekra1tqKtGyIA4UPrw5s2b5aKLLpK6ujoZO3aszJo1S+66666hrhYhgTlQ+ur3v/99ed/73idNTU0yatQoufDCC71lU6mU/Ou//qsceuihMm7cOHn7298uixcv3n+VrWLCQ10BMnx5+eWX5a1vfauIiFx66aUyadIk6ejokKeeemqIa0YI2Rfz58+XX/ziF3st/853viNLly6Vd7zjHUNQK0JIEAqFgpx88smyYsUK+fjHPy5TpkyRNWvWyK233ir333+/vPjii3LwwQcPdTUJIR56e3tl3rx5snnzZvnUpz4l9fX18pvf/EbOPfdcWbhwoXzwgx8c6ioSQv6P6667Tnbs2CFz5syRTZs2ecsVCgV517veJUuXLpUrr7xSamtr5dZbb5UTTzxRnn32WTn66KP3Y62rD354Il4uueQSCYfD8vTTT8uECROGujqEkD7Q0tIiLS0t1rJdu3bJxz/+cVmwYIHU19cPUc0IIfviiSeekKefflpuueUW+cQnPmGWH3PMMXLxxRfLAw88IO95z3uGsIaEkHL8z//8j6xZs0b+93//VxYsWCAiIv/2b/8mc+fOlc9+9rNyzjnnSCQSGeJaEkJERB555BHj7RSPx73l7r77blm0aJHcddddcs4554iIyLnnnitTpkyRq6++Wu688879VeWqhFK7QeLCCy+UeDwubW1tcsYZZ0g8HpdJkybJ9773PRERef7552XBggUybtw4OeKII/ZqmD09PfK5z31OXv/610s8HpdEIiGnn366LF26dK9jbdiwQc4880wZN26c1NXVyRVXXCH333+/jBo1Sh5++GGr7JNPPimnnXaajB8/XmKxmJxwwgnyz3/+c5/ns3LlSvnrX/8qV155pUyYMEGy2azs3r27/xeIkGHOSOvDpfjjH/8oO3bskP/3//5fv7YnZLgy0vpvb2+viIgcdthh1vKJEyeKiMjYsWMDXxtCqoGR1of/8Y9/yKGHHmo+OomIhEIhOffcc6Wzs1MeeeSRflwlQoaekdZXRUSOOOIIGTVq1D7L3X333XLYYYfJ2WefbZYdeuihcu6558of/vAHeeWVVwId70CFH54GkT179sjpp58uhx9+uHz729+W5uZmueyyy+T222+X0047TWbPni3XXXedHHzwwXL++efL+vXrzbbr1q2Te+65R8444wy58cYb5corr5Tnn39eTjjhBOno6DDldu7cKQsWLJAHHnhALr/8cvnyl78sixYtki984Qt71efBBx+U+fPnS29vr1x99dVy7bXXSiqVkgULFuxTLvfAAw+IyKuT3ne84x0yduxYGTt2rJx++unS2to6OBeMkGHGSOrDpVi4cKGMHTvWemASMlIYSf139uzZMm7cOLnqqqvkwQcflI0bN8ojjzwin//85+VNb3qTnHTSSYN34QgZJoykPvzKK6+U/EAci8VEROTZZ5/t72UiZMgZSX21Lzz33HMya9YsCYXsTyhz5syRTCYjq1atGrRjjUiKpM/89Kc/LYpI8emnnzbLLrjggqKIFK+99lqzbNu2bcWxY8cWR40aVfzVr35llq9cubIoIsWrr77aLMtms8U9e/ZYx1m/fn1xzJgxxWuuucYs+6//+q+iiBTvueces2zXrl3FqVOnFkWk+NBDDxWLxWKxUCgUjz766OKpp55aLBQKpmwmkykeeeSRxZNPPrnsOV5++eVFESlOmDCheNpppxV//etfF6+//vpiPB4vHnXUUcWdO3cGu1iEDEMOhD7ssnXr1mIkEimee+65fdqOkOHGgdJ///SnPxUnTpxYFBHzd+qppxZ37Nix74tEyDDmQOjDn/zkJ4uhUKjY2tpqLT/vvPOKIlK87LLLym5PyHDgQOirLuPGjStecMEF3nUXX3zxXsv//Oc/F0WkeN999/XpWAca9HgaZD760Y8aO5lMyjHHHCPjxo2Tc8891yw/5phjJJlMyrp168yyMWPGmK+ne/bska1bt0o8HpdjjjnGipR/3333yaRJk+TMM880y6LRqHzsYx+z6rFkyRJZvXq1fPCDH5StW7dKd3e3dHd3y86dO+Ud73iHPProo1IoFLznkU6nRUSkvr5e/vznP8u5554rn/vc5+RHP/qRrF27lhpWMmIZKX3Y5e6775ZcLkeZHRnRjKT+e+ihh8pxxx0n//mf/yn33HOP/Md//If84x//kIsuuqh/F4eQKmCk9OGPfvSjMnr0aDn33HNl0aJFsnbtWvnmN78pv//970Xk1ZiLhFQzI6Wv9oVdu3bJmDFj9loejUbNeuKHwcUHkWg0Koceeqi1bPz48dLY2LiXbnT8+PGybds287tQKMjNN98st956q6xfv1727Nlj1mFg7w0bNshRRx211/4mT55s/V69erWIiFxwwQXe+m7fvl0OOeSQkutecw8+99xzLXfC973vffLhD39YFi1aZA04hIwERlIfdlm4cKHU1NTI6aefHqg8IdXGSOq/69atk7e//e3y85//XN773veKiMi//Mu/SHNzs1x44YXy17/+lX2ZjDhGUh+eMWOG3HnnnXLppZeaDNH19fVy0003yb/927+VDWBMyHBnJPXVvjB27NiScZyy2axZT/zww9MgMnr06D4tLxaLxr722mvlqquukosvvli+/vWvS01NjYRCIfn0pz/dr6+0r21z/fXXy8yZM0uWKffQa2hoEJG9A5uOHj1aJkyYYA0ghIwURlIfRtra2uQf//iH/Ou//qscdNBBfa4LIdXASOq/t99+u2SzWTnjjDOs5a/95/ef//wnPzyREcdI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",
"text/plain": [
"<Figure size 1500x600 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# TODO: Add image interpolation for sharper images \n",
"\n",
"transform = transforms.Compose([\n",
" transforms.Resize((image_size, image_size)), # Resize images to 64x64 + interpolation\n",
" transforms.ToTensor(), \n",
" transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)), # [-1,1] for each channel -> input[channel]=(input[channel]−mean[channel])/std[channel]\n",
"])\n",
"\n",
"dataset = ImageFolder(root = root_dir, transform = transform)\n",
"\n",
"def show_images(images):\n",
" fig, axes = plt.subplots(2, 5, figsize = (15, 6)) # Create a grid of subplots (2 rows, 5 columns)\n",
" for i, ax in enumerate(axes.flat):\n",
" ax.imshow(images[i].permute(1, 2, 0)) # Convert from tensor format to numpy array and rearrange dimensions\n",
" ax.axis('off') \n",
" ax.set_title(f'Image {i + 1}') \n",
" plt.show()\n",
"\n",
"images = [dataset[i][0] for i in range(10)]\n",
"\n",
"# Display the image\n",
"show_images(images)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "6ba1ed29-5822-4568-8cc7-4532f7fa5d67",
"metadata": {},
"outputs": [],
"source": [
"# Initialize weights\n",
"def weights_init(m):\n",
" classname = m.__class__.__name__\n",
" if classname.find('Conv') != -1:\n",
" nn.init.normal_(m.weight.data, 0.0, 0.02) # Mean 0, STD 0.2\n",
" elif classname.find('BatchNorm') != -1:\n",
" nn.init.normal_(m.weight.data, 1.0, 0.02)\n",
" nn.init.constant_(m.bias.data, 0)\n",
" \n",
"class D(nn.Module):\n",
" def __init__(\n",
" self, \n",
" ndf, \n",
" ngpu\n",
" ):\n",
" super(D, self).__init__()\n",
" self.ngpu = ngpu\n",
" ndf = ndf \n",
" \n",
" self.main = nn.Sequential(\n",
" # Input is (n_channels) x 128 x 128\n",
" nn.Conv2d(n_channels, ndf, 4, 2, 1, bias = False),\n",
" nn.LeakyReLU(0.2, inplace = True),\n",
" # State size. (ndf) x 64 x 64\n",
" nn.Conv2d(ndf, ndf * 2, 4, 2, 1, bias = False),\n",
" nn.BatchNorm2d(ndf * 2),\n",
" nn.LeakyReLU(0.2, inplace = True),\n",
" # State size. (ndf*2) x 32 x 32\n",
" nn.Conv2d(ndf * 2, ndf * 4, 4, 2, 1, bias = False),\n",
" nn.BatchNorm2d(ndf * 4),\n",
" nn.LeakyReLU(0.2, inplace = True),\n",
" # State size. (ndf*4) x 16 x 16\n",
" nn.Conv2d(ndf * 4, ndf * 8, 4, 2, 1, bias = False),\n",
" nn.BatchNorm2d(ndf * 8),\n",
" nn.LeakyReLU(0.2, inplace = True),\n",
" # State size. (ndf*8) x 8 x 8\n",
" nn.Conv2d(ndf * 8, 1, 4, 1, 0, bias = False),\n",
" nn.Sigmoid()\n",
" )\n",
"\n",
" def forward(self, x):\n",
" x = self.main(x) # Output size = 1x1 \n",
" return x \n",
"\n",
"\n",
"\n",
"class G(nn.Module):\n",
" def __init__(\n",
" self,\n",
" nz, \n",
" ngf,\n",
" ngpu\n",
" ): \n",
" super(G, self).__init__()\n",
" self.ngpu = ngpu\n",
"\n",
" latent_size = nz\n",
" ngf = ngf\n",
" \n",
" self.main = nn.Sequential(\n",
" # input is Z, going into a convolution\n",
" # state size. ``(ngf*8) x 4 x 4``\n",
" nn.ConvTranspose2d(latent_size, ngf * 8, kernel_size = 4, stride = 1, padding = 0, bias = False),\n",
" nn.BatchNorm2d(ngf * 8),\n",
" nn.ReLU(inplace = True),\n",
" # state size. ``(ngf*4) x 8 x 8``\n",
" nn.ConvTranspose2d(ngf * 8, ngf * 4, kernel_size = 4, stride = 2, padding = 1, bias = False),\n",
" nn.BatchNorm2d(ngf * 4),\n",
" nn.ReLU(inplace = True),\n",
" # state size. ``(ngf*2) x 16 x 16``\n",
" nn.ConvTranspose2d(ngf * 4, ngf * 2, kernel_size = 4, stride = 2, padding = 1, bias = False),\n",
" nn.BatchNorm2d(ngf * 2),\n",
" nn.ReLU(inplace = True),\n",
" # state size. ``(ngf) x 32 x 32``\n",
" nn.ConvTranspose2d(ngf * 2, ngf, kernel_size = 4, stride = 2, padding = 1, bias = False),\n",
" nn.BatchNorm2d(ngf),\n",
" nn.ReLU(inplace = True),\n",
" # state size. ``(nc) x 64 x 64``\n",
" # Adding one more layer to upscale from 64x64 to 128x128\n",
" nn.ConvTranspose2d(ngf, n_channels, kernel_size = 4, stride = 2, padding = 1, bias = False),\n",
" nn.Tanh()\n",
" # state size. ``(nc) x 128 x 128``\n",
" ) \n",
"\n",
" def forward(self, x):\n",
" x = self.main(x) # Output size = 64x64 \n",
" return x \n",
"\n",
"\n",
"# Generate summaries:\n",
"# discriminator = D(hyperparams = {'ndf': 64}) \n",
"# generator = G(hyperparams = {'nz': 100, 'ngf': 64}) \n",
"\n",
"# discriminator_summary = summary(discriminator, input_size = (25, 3, 128, 128))\n",
"# generator_summary = summary(generator, input_size = (25, 100, 1, 1))\n",
"\n",
"# Print summaries\n",
"# print(\"Discriminator Summary:\")\n",
"# print(discriminator_summary)\n",
"\n",
"# print(\"\\nGenerator Summary:\")\n",
"# print(generator_summary)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a5075a5f-0c5b-4f35-ac38-ce10d4535658",
"metadata": {},
"outputs": [],
"source": [
"checkpoint_dir = \"checkpoints\"\n",
"if not os.path.exists(checkpoint_dir):\n",
" os.makedirs(checkpoint_dir)\n",
"\n",
"def save_checkpoint(g_model, d_model, optimizer_g, optimizer_d):\n",
" checkpoint_path = os.path.join(checkpoint_dir, f\"gan_checkpoint.pt\")\n",
"\n",
" # Check if data parallel is used, then save the state accordingly\n",
" g_model_state_dict = g_model.module.state_dict() if isinstance(g_model, torch.nn.DataParallel) else g_model.state_dict()\n",
" d_model_state_dict = d_model.module.state_dict() if isinstance(d_model, torch.nn.DataParallel) else d_model.state_dict()\n",
"\n",
" torch.save({\n",
" 'generator_state_dict': g_model_state_dict,\n",
" 'discriminator_state_dict': d_model_state_dict,\n",
" 'optimizer_g_state_dict': optimizer_g.state_dict(),\n",
" 'optimizer_d_state_dict': optimizer_d.state_dict()\n",
" }, checkpoint_path)\n",
"\n",
"def load_checkpoint(checkpoint_path, g_model, d_model, optimizer_g, optimizer_d):\n",
" checkpoint = torch.load(checkpoint_path)\n",
"\n",
" # Load state_dict into the original model if using DataParallel\n",
" if isinstance(g_model, torch.nn.DataParallel):\n",
" g_model.module.load_state_dict(checkpoint['generator_state_dict'])\n",
" else:\n",
" g_model.load_state_dict(checkpoint['generator_state_dict'])\n",
" \n",
" if isinstance(d_model, torch.nn.DataParallel):\n",
" d_model.module.load_state_dict(checkpoint['discriminator_state_dict'])\n",
" else:\n",
" d_model.load_state_dict(checkpoint['discriminator_state_dict'])\n",
"\n",
" optimizer_g.load_state_dict(checkpoint['optimizer_g_state_dict'])\n",
" optimizer_d.load_state_dict(checkpoint['optimizer_d_state_dict'])\n",
"\n",
" return g_model, d_model, optimizer_g, optimizer_d\n",
"\n",
"\n",
"def find_latest_checkpoint():\n",
" checkpoints = glob.glob(os.path.join(checkpoint_dir, \"gan_checkpoint.pt\"))\n",
" if checkpoints: \n",
" # Use the OS metadata to recognize the latest file changed/added\n",
" latest_checkpoint = max(checkpoints, key = os.path.getctime)\n",
" return latest_checkpoint\n",
" else: \n",
" return None\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "35f4dd2a-e4ca-4c6f-96dd-1e986a5b5dd9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Checkpoint was found! Setting model and optimizer states\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[7], line 114\u001b[0m\n\u001b[1;32m 112\u001b[0m errD_real\u001b[38;5;241m.\u001b[39mbackward()\n\u001b[1;32m 113\u001b[0m \u001b[38;5;66;03m# Calc mean loss over whole batch\u001b[39;00m\n\u001b[0;32m--> 114\u001b[0m D_x \u001b[38;5;241m=\u001b[39m \u001b[43moutput\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmean\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mitem\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 116\u001b[0m latent \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mrandn(b_size, nz, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m, device \u001b[38;5;241m=\u001b[39m device) \n\u001b[1;32m 117\u001b[0m fake \u001b[38;5;241m=\u001b[39m g_model(latent) \n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"real_label = 1 \n",
"fake_label = 0 \n",
"n_epochs = 100\n",
"start_epoch = 0\n",
"latest_checkpoint = None \n",
"g_state_dict = None \n",
"d_state_dict = None \n",
"optimizer_g_state_dict = None\n",
"optimizer_d_state_dict = None\n",
"\n",
"img_list = [] \n",
"\n",
"# Hyperparams \n",
"lr = 0.0005 \n",
"nz = 100 \n",
"ngf = 32\n",
"ndf = 70 \n",
"batch_size = 128 \n",
"\n",
"# Init models \n",
"d_model = D(ndf = ndf, ngpu = ngpu).to(device)\n",
"g_model = G(ngf = ngf, ngpu = ngpu, nz = nz).to(device)\n",
"\n",
"# Optimizers \n",
"optimizer_d = Adam(d_model.parameters(), lr = lr, betas = (0.5, 0.999))\n",
"optimizer_g = Adam(g_model.parameters(), lr = lr, betas = (0.5, 0.999))\n",
"\n",
"# Loss function \n",
"criterion = nn.BCELoss()\n",
"\n",
"# Handle multi-GPU if desired\n",
"if (device.type == 'cuda') and (ngpu > 1):\n",
" g_model = nn.DataParallel(g_model, list(range(ngpu)))\n",
"if (device.type == 'cuda') and (ngpu > 1):\n",
" d_model = nn.DataParallel(d_model, list(range(ngpu)))\n",
" \n",
"# Look for checkpoint \n",
"checkpoint = find_latest_checkpoint()\n",
"if checkpoint: \n",
" print(\"Checkpoint was found! Setting model and optimizer states\")\n",
" g_with_states, d_with_states, optimizer_g_with_states, optimizer_d_with_states = load_checkpoint(checkpoint, g_model = g_model, d_model = d_model, optimizer_d = optimizer_d, optimizer_g = optimizer_g)\n",
" g_model = g_with_states\n",
" d_model = d_with_states\n",
" optimizer_g = optimizer_g_with_states\n",
" optimizer_d = optimizer_d_with_states\n",
"else: \n",
" print(\"Applying weights init\")\n",
" g_model.apply(weights_init)\n",
" d_model.apply(weights_init)\n",
"\n",
"\n",
"losses_file_path = os.path.join(res_dir, 'losses.txt')\n",
"# Check if the losses file already exists \n",
"if not os.path.exists(losses_file_path):\n",
" with open(losses_file_path, 'w') as f:\n",
" f.write(\"\")\n",
"else: \n",
" with open(losses_file_path, 'r') as f:\n",
" lines = f.readlines() \n",
" # Update current epoch\n",
" if lines:\n",
" last_line = lines[-1]\n",
" parts = last_line.split(' - ')\n",
" # Set start epoch if found \n",
" start_epoch = int(parts[0])\n",
"\n",
"# Fresh dataloader\n",
"data_loader = DataLoader(\n",
" dataset, \n",
" batch_size = batch_size, \n",
" shuffle = True,\n",
" num_workers = workers # Parallel workers\n",
")\n",
"\n",
"# Used for showing the progression of G\n",
"# Number of fake images made is 64\n",
"fixed_noise = torch.randn(64, nz, 1, 1, device = device) \n",
"\n",
"# Training \n",
"for epoch in range(start_epoch, n_epochs):\n",
" D_losses = []\n",
" G_losses = []\n",
" img_list = []\n",
" avg_loss_G = []\n",
" avg_loss_D = [] \n",
"\n",
" # Epoch folder\n",
" epoch_dir = os.path.join(res_dir, f\"epoch_{epoch}\")\n",
" if not os.path.exists(epoch_dir):\n",
" os.makedirs(epoch_dir)\n",
" \n",
" # Save model states every 5 epoch\n",
" if epoch % 5 == 0: \n",
" save_checkpoint(\n",
" g_model = g_model, \n",
" d_model = d_model, \n",
" optimizer_g = optimizer_g, \n",
" optimizer_d = optimizer_d\n",
" )\n",
" \n",
" for i, data in enumerate(data_loader, 0):\n",
" # Train discriminator with real images:\n",
" d_model.zero_grad() \n",
" real_device = data[0].to(device)\n",
" b_size = real_device.size(0)\n",
" # Fill the batch with real_labels i.e. 1\n",
" label = torch.full((b_size,), real_label, dtype = torch.float, device = device) \n",
" # Forward \n",
" output = d_model(real_device).view(-1)\n",
" \n",
" errD_real = criterion(output, label)\n",
" errD_real.backward()\n",
" # Calc mean loss over whole batch\n",
" D_x = output.mean().item()\n",
" \n",
" latent = torch.randn(b_size, nz, 1, 1, device = device) \n",
" fake = g_model(latent) \n",
" label.fill_(fake_label) \n",
" output = d_model(fake.detach()).view(-1) \n",
" errD_fake = criterion(output, label)\n",
" errD_fake.backward() \n",
" D_G_z1 = output.mean().item()\n",
" # Compute the total error for the discriminator over real and fake runs \n",
" errD = errD_real + errD_fake \n",
" optimizer_d.step()\n",
" \n",
" # Save a batch of generated images at the end of each epoch - Quality check\n",
" if epoch == n_epochs - 1:\n",
" with torch.no_grad():\n",
" fake_images = g_model(latent).detach().cpu() \n",
" # Save each image in the batch individually\n",
" for j, img in enumerate(fake_images):\n",
" img_filename = os.path.join(epoch_dir, f'generated_image_{epoch}_{i}_{j}.png')\n",
" vutils.save_image(img, img_filename, normalize = True)\n",
" \n",
" # Train the generator \n",
" g_model.zero_grad() \n",
" label.fill_(real_label) # fake labels are real for generator cost\n",
" output = d_model(fake).view(-1) # Since we just updated D, perform another forward pass of all-fake batch through D (d_model)\n",
" errG = criterion(output, label) # Calculate G's loss based on this output\n",
" errG.backward()\n",
" D_G_z2 = output.mean().item() # Same as (D_G_z1 -> D(G(z1))) - The output loss on fake images made by the generator. Training\n",
" optimizer_g.step()\n",
" \n",
" G_losses.append(errG.item())\n",
" D_losses.append(errD.item())\n",
" \n",
" if (i == len(data_loader) - 1):\n",
" with torch.no_grad():\n",
" # Number of fake images generated depends on the fixed noise vector\n",
" fake = g_model(fixed_noise).detach().cpu()\n",
" img_list.append(vutils.make_grid(fake, padding = 2, normalize = True))\n",
" \n",
" # Calculate mean loss for the epoch\n",
" avg_loss_G_epoch = np.mean(G_losses)\n",
" avg_loss_D_epoch = np.mean(D_losses)\n",
" \n",
" # Save losses to a file\n",
" with open(os.path.join(res_dir, 'losses.txt'), 'a') as f:\n",
" f.write(f\"{epoch} - {avg_loss_G_epoch} : {avg_loss_D_epoch}\\n\")\n",
" \n",
" for i, img_grid in enumerate(img_list):\n",
" filename = os.path.join(epoch_dir, f'generated_images_epoch_{i}.png')\n",
" vutils.save_image(img_grid, filename) \n",
" \n",
"# Plot and save the losses graph\n",
"epochs = []\n",
"generator_losses = []\n",
"discriminator_losses = []\n",
"with open(os.path.join(res_dir, 'losses.txt'), 'r') as file:\n",
" lines = file.readlines()\n",
" for line in lines: \n",
" parts = line.strip().split(' - ')\n",
" epoch = int(parts[0])\n",
" losses = parts[1].split(' : ')\n",
" generator_loss = float(losses[0])\n",
" discriminator_loss = float(losses[1])\n",
"\n",
" epochs.append(epoch)\n",
" generator_losses.append(generator_loss)\n",
" discriminator_losses.append(discriminator_loss)\n",
" \n",
"# Plot and save the losses graph\n",
"plt.figure(figsize = (10, 5))\n",
"plt.plot(epochs, generator_losses, label = 'Generator Loss')\n",
"plt.plot(epochs, discriminator_losses, label = 'Discriminator Loss')\n",
"plt.xlabel('Epoch')\n",
"plt.ylabel('Loss')\n",
"plt.title('Generator and Discriminator Losses across Epochs')\n",
"plt.legend()\n",
"plt.grid(True)\n",
"plt.savefig(os.path.join(res_dir, 'epoch_losses_graph.png'))\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "df8644b4-e149-43ae-8dc1-d5cfb0d05a41",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}