From 557d45e06e2cfb9273d43227e00732e1e0c361a1 Mon Sep 17 00:00:00 2001 From: simonovams Date: Sun, 15 Mar 2026 18:48:50 +0300 Subject: [PATCH] [1] struct dannych --- SimonovaMS/analysis_report.txt | 50 +++++++ SimonovaMS/analyz_1.py | 134 +++++++++++++++++ SimonovaMS/generator_1.py | 48 ++++++ SimonovaMS/phonebook_1_2.py | 265 +++++++++++++++++++++++++++++++++ SimonovaMS/results_plot.png | Bin 0 -> 61424 bytes SimonovaMS/test_1.1.py | 211 ++++++++++++++++++++++++++ 6 files changed, 708 insertions(+) create mode 100644 SimonovaMS/analysis_report.txt create mode 100644 SimonovaMS/analyz_1.py create mode 100644 SimonovaMS/generator_1.py create mode 100644 SimonovaMS/phonebook_1_2.py create mode 100644 SimonovaMS/results_plot.png create mode 100644 SimonovaMS/test_1.1.py diff --git a/SimonovaMS/analysis_report.txt b/SimonovaMS/analysis_report.txt new file mode 100644 index 0000000..42aea90 --- /dev/null +++ b/SimonovaMS/analysis_report.txt @@ -0,0 +1,50 @@ +['Structura', 'shuffled/sorted', 'Operation', 'Time'] +LinkedList | shuffled | insert | 3.798362 +LinkedList | shuffled | find | 0.028610 +LinkedList | shuffled | delete | 0.035444 +LinkedList | sorted | insert | 3.117239 +LinkedList | sorted | find | 0.020465 +LinkedList | sorted | delete | 0.028734 +HashTable | shuffled | insert | 0.013259 +HashTable | shuffled | find | 0.000109 +HashTable | shuffled | delete | 0.000079 +HashTable | sorted | insert | 0.014760 +HashTable | sorted | find | 0.000107 +HashTable | sorted | delete | 0.000076 +Bst | shuffled | insert | 0.020712 +Bst | shuffled | find | 0.000246 +Bst | shuffled | delete | 0.000096 +Bst | sorted | insert | 3.905296 +Bst | sorted | find | 0.029092 +Bst | sorted | delete | 0.018350 + +Результаты: +Структура Режим вставка поиск удаление +LinkedList shuffled 3.798362 0.028610 0.035444 +LinkedList sorted 3.117239 0.020465 0.028734 +HashTable shuffled 0.013259 0.000109 0.000079 +HashTable sorted 0.014760 0.000107 0.000076 +Bst shuffled 0.020712 0.000246 0.000096 +Bst sorted 3.905296 0.029092 0.018350 +График +График сохранён в файл: results_plot.png + +Анализ: + +ВСТАВКА: + Лучшая: HashTable (0.014010 сек) + Худшая: LinkedList (3.457801 сек) + +ПОИСК: + Лучшая: HashTable (0.000108 сек) + Худшая: LinkedList (0.024537 сек) + +УДАЛЕНИЕ: + Лучшая: HashTable (0.000077 сек) + Худшая: LinkedList (0.032089 сек) + +Вывод: +Для вставок, поиска и удаления лучше всего использовать HashTable как для отсортированных, так и для неотсортированных данных +BST неплох для отсортированных данных, но всё равно хуже HashTable +LinkedList показал худшие результаты +HashTable - оптимальный выбор для телефонного справочника diff --git a/SimonovaMS/analyz_1.py b/SimonovaMS/analyz_1.py new file mode 100644 index 0000000..80531f8 --- /dev/null +++ b/SimonovaMS/analyz_1.py @@ -0,0 +1,134 @@ +import csv +import matplotlib.pyplot as plt +import numpy as np +from collections import defaultdict +import os + +report_file = open("analysis_report.txt", "w", encoding="utf-8") +# Читаем файл +data = defaultdict(lambda: defaultdict(dict)) + +with open("C:/Users/Honor/Documents/dep2k/lab_inf_1/data/results.csv", "r", encoding="utf-8") as f: + reader = csv.reader(f) + header = next(reader) # пропускаем заголовок + print(f"{header}") + report_file.write(f"{header}\n") + + for row in reader: + if len(row) >= 4: + struct = row[0] # LinkedList, HashTable, Bst + mode = row[1] # shuffled или sorted + op = row[2] # insert, find, delete + time_val = float(row[3]) + + data[struct][mode][op] = time_val + print(f"{struct} | {mode} | {op} | {time_val:.6f}") + report_file.write(f"{struct} | {mode} | {op} | {time_val:.6f}\n") + +# Словарь для нормальных названий операций +op_names = { + 'insert': 'вставка', + 'find': 'поиск', + 'delete': 'удаление' +} + +# Структуры и режимы +structures = ["LinkedList", "HashTable", "Bst"] +modes = ["shuffled", "sorted"] +operations = ["insert", "find", "delete"] + +# Вывод таблицы результатов +print("Результаты:") +report_file.write("\nРезультаты:\n") +print(f"{'Структура':<15} {'Режим':<10} {'вставка':<15} {'поиск':<15} {'удаление':<15}") +report_file.write(f"{'Структура':<15} {'Режим':<10} {'вставка':<15} {'поиск':<15} {'удаление':<15}\n") + +for struct in structures: + for mode in modes: + insert_time = data[struct][mode]['insert'] + find_time = data[struct][mode]['find'] + delete_time = data[struct][mode]['delete'] + print(f"{struct:<15} {mode:<10} {insert_time:<15.6f} {find_time:<15.6f} {delete_time:<15.6f}") + report_file.write(f"{struct:<15} {mode:<10} {insert_time:<15.6f} {find_time:<15.6f} {delete_time:<15.6f}\n") + +# Создаём графики +fig, axes = plt.subplots(1, 3, figsize=(15, 5)) + +for idx, op in enumerate(operations): + ax = axes[idx] + + x = np.arange(len(structures)) + width = 0.35 + + shuffled_vals = [data[s]["shuffled"][op] for s in structures] + sorted_vals = [data[s]["sorted"][op] for s in structures] + + bars1 = ax.bar(x - width/2, shuffled_vals, width, label='shuffled', color='orange', alpha=0.8) + bars2 = ax.bar(x + width/2, sorted_vals, width, label='sorted', color='cyan', alpha=0.8) + + ax.set_xlabel('Структура') + ax.set_ylabel('Время (сек)') + ax.set_title(f'{op_names[op]}') + ax.set_xticks(x) + ax.set_xticklabels(structures, rotation=45) + ax.legend() + ax.set_yscale('log') + + # Добавляем значения + for bar in bars1: + height = bar.get_height() + ax.text(bar.get_x() + bar.get_width()/2, height, + f'{height:.3f}', ha='center', va='bottom', fontsize=8) + for bar in bars2: + height = bar.get_height() + ax.text(bar.get_x() + bar.get_width()/2, height, + f'{height:.3f}', ha='center', va='bottom', fontsize=8) + +plt.tight_layout() +plot_filename = "results_plot.png" +plt.savefig('results_plot.png', dpi=150) +plt.show() + +report_file.write("График\n") +report_file.write(f"График сохранён в файл: {plot_filename}\n") +# Анализ +print("Анализ:") +report_file.write("\nАнализ:\n") + +# Для каждой операции определяем лучшую структуру +for op in operations: + print(f"\n{op_names[op].upper()}:") + report_file.write(f"\n{op_names[op].upper()}:\n") + + # Среднее по двум режимам + avg_times = [] + for s in structures: + avg = (data[s]["shuffled"][op] + data[s]["sorted"][op]) / 2 + avg_times.append((s, avg)) + + avg_times.sort(key=lambda x: x[1]) + print(f" Лучшая: {avg_times[0][0]} ({avg_times[0][1]:.6f} сек)") + print(f" Худшая: {avg_times[-1][0]} ({avg_times[-1][1]:.6f} сек)") + report_file.write(f" Лучшая: {avg_times[0][0]} ({avg_times[0][1]:.6f} сек)\n") + report_file.write(f" Худшая: {avg_times[-1][0]} ({avg_times[-1][1]:.6f} сек)\n") +# Влияние порядка на BST +# print("ВЛИЯНИЕ ПОРЯДКА ДАННЫХ НА BST:") +# bst_insert_shuffled = data["Bst"]["shuffled"]["insert"] +# bst_insert_sorted = data["Bst"]["sorted"]["insert"] +# print(f" Вставка shuffled: {bst_insert_shuffled:.6f} сек") +# print(f" Вставка sorted: {bst_insert_sorted:.6f} сек") +# print(f" Разница: {bst_insert_sorted/bst_insert_shuffled:.1f} раз") + +# Итоговый вывод +print("Вывод:") +report_file.write("\nВывод:\n") +print("Для вставок, поиска и удаления лучше всего использовать HashTable как для отсортированных, так и для неотсортированных данных") +print("BST неплох для отсортированных данных, но всё равно хуже HashTable") +print("LinkedList показал худшие результаты") +print("HashTable - оптимальный выбор для телефонного справочника") + +report_file.write("Для вставок, поиска и удаления лучше всего использовать HashTable как для отсортированных, так и для неотсортированных данных\n") +report_file.write("BST неплох для отсортированных данных, но всё равно хуже HashTable\n") +report_file.write("LinkedList показал худшие результаты\n") +report_file.write("HashTable - оптимальный выбор для телефонного справочника\n") +report_file.close() \ No newline at end of file diff --git a/SimonovaMS/generator_1.py b/SimonovaMS/generator_1.py new file mode 100644 index 0000000..afd6958 --- /dev/null +++ b/SimonovaMS/generator_1.py @@ -0,0 +1,48 @@ +import random +from typing import List, Tuple + +def generate_data(n=10000): + records = [] + for i in range(n): + name = f"User_{i:05d}" + phone = f"8{random.randint(900,999)}{random.randint(100,999)}{random.randint(0,9)}{random.randint(0,9)}{random.randint(0,9)}{random.randint(0,9)}" + records.append((name,phone)) + + records_shuffled = records.copy() + random.shuffle(records_shuffled) + records_sorted = sorted(records, key=lambda x:x[0]) + + return records_shuffled, records_sorted + +def generate_search(records, exist_count=100, no_exist_count=10): + exist_names = [name for name, _ in records] + select_exist = random.sample(exist_names, min(exist_count, len(exist_names))) + + no_exist_count=[f"None_{i:05d}" for i in range(no_exist_count)] + + return select_exist + no_exist_count + +def generate_delete(records, count=50): + names = [name for name, _ in records] + return random.sample(names, min(count, len(names))) + +## Генерируем данные +# shuffled, sorted_records = generate_data(10) # 10 записей для примера +# +# print("=== Перемешанные записи (первые 5) ===") +# for record in shuffled[:5]: +# print(f" {record}") +# +# print("\n=== Отсортированные записи (первые 5) ===") +# for record in sorted_records[:5]: +# print(f" {record}") +# +# # Генерируем поисковые запросы +# search_queries = generate_search(sorted_records, exist_count=5, no_exist_count=3) +# print(f"\n=== Поисковые запросы (всего {len(search_queries)}) ===") +# print(search_queries) +# +# # Генерируем запросы на удаление +# delete_queries = generate_delete(sorted_records, count=5) +# print(f"\n=== Запросы на удаление (всего {len(delete_queries)}) ===") +# print(delete_queries) diff --git a/SimonovaMS/phonebook_1_2.py b/SimonovaMS/phonebook_1_2.py new file mode 100644 index 0000000..713e410 --- /dev/null +++ b/SimonovaMS/phonebook_1_2.py @@ -0,0 +1,265 @@ +import time +import csv +import random +from functools import lru_cache +from operator import index + + +#LinkedListPhoneBook +def create_node(name, phone): + return {'name': name, 'phone': phone, 'next': None} + +def ll_insert(head, name, phone): + new_node = create_node(name,phone) + + if head is None: + return new_node + # if head['name'] == name: + # new_node['next']=head['next'] + # return new_node + current = head + while current['next'] is not None: + if current['next']['name'] == name: + new_node['next'] = current['next']['next'] + current['next']=new_node + return head + current=current['next'] + + current['next'] = new_node + return head + +def ll_find(head, name): + current = head + while current is not None: + if current['name'] ==name: + return current['phone'] + current=current['next'] + return None +def ll_delete(head, name): + if head is None: + return None + if head['name'] == name: + return head['next'] + + current =head + while current['next'] is not None: + if current['next']['name'] == name: + current['next'] = current['next']['next'] + return head + current=current['next'] + + return head + +def ll_list_all(head): + records = [] + current = head + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + + records.sort(key=lambda x: x[0]) + return records + +#хеш=тфблица + +def create_buckets(size=1000): + return [None] * size + +def hash_function(name, buckest_size): + hash_value = 0 + for char in name: + hash_value = (hash_value * 31 + ord(char)) % buckest_size + return hash_value + +def ht_insert(buckets, name, phone): + index = hash_function(name, len(buckets)) + buckets[index] = ll_insert(buckets[index], name, phone) + +def ht_find(buckets, name): + index = hash_function(name, len(buckets)) + return ll_find(buckets[index], name) + +def ht_delete(buckets, name): + index = hash_function(name, len(buckets)) + buckets[index] = ll_delete(buckets[index], name) + +def ht_list_all(buckets): + records = [] + for bucket in buckets: + current = bucket + while current is not None: + records.append((current['name'], current['phone'])) + current = current['next'] + records.sort(key=lambda x:x[0]) + return records + +#bts +def create_bst_node(name, phone): + return {'name': name, 'phone': phone, 'left': None, 'right': None} + +def bst_insert(root, name, phone): + new_node = create_bst_node(name, phone) + if root is None: + return new_node + current = root + while True: + if name == current['name']: + current['phone'] = phone + return root + elif name < current['name']: + if current['left'] is None: + current['left'] = new_node + return root + current = current['left'] + else: + if current['right'] is None: + current['right'] = new_node + return root + current = current['right'] + + +def bst_find(root, name): +# if root is None: +# return None + current = root + while current is not None: + if name == current['name']: + return current['phone'] + elif name < current['name']: + current=current['left'] + else: + current=current['right'] + return None + +def bst_find_min(node): + current = node + while current['left'] is not None: + current = current['left'] + return current + + +def bst_delete(root, name): + """ИТЕРАТИВНОЕ удаление (без рекурсии)""" + if root is None: + return None + + # Специальный случай: удаляем корень + if root['name'] == name: + # Нет потомков + if root['left'] is None and root['right'] is None: + return None + # Только правый потомок + if root['left'] is None: + return root['right'] + # Только левый потомок + if root['right'] is None: + return root['left'] + # Есть оба потомка + # Находим минимальный узел в правом поддереве + parent = root + min_node = root['right'] + while min_node['left']: + parent = min_node + min_node = min_node['left'] + + # Копируем данные + root['name'] = min_node['name'] + root['phone'] = min_node['phone'] + + # Удаляем минимальный узел + if parent == root: + parent['right'] = min_node['right'] + else: + parent['left'] = min_node['right'] + + return root + + # Ищем узел для удаления и его родителя + parent = None + current = root + while current and current['name'] != name: + parent = current + if name < current['name']: + current = current['left'] + else: + current = current['right'] + + # Если не нашли + if current is None: + return root + + # Случай 1: нет потомков + if current['left'] is None and current['right'] is None: + if parent['left'] == current: + parent['left'] = None + else: + parent['right'] = None + + # Случай 2: только правый потомок + elif current['left'] is None: + if parent['left'] == current: + parent['left'] = current['right'] + else: + parent['right'] = current['right'] + + # Случай 3: только левый потомок + elif current['right'] is None: + if parent['left'] == current: + parent['left'] = current['left'] + else: + parent['right'] = current['left'] + + # Случай 4: есть оба потомка + else: + # Находим минимальный узел в правом поддереве + min_parent = current + min_node = current['right'] + while min_node['left']: + min_parent = min_node + min_node = min_node['left'] + + # Копируем данные + current['name'] = min_node['name'] + current['phone'] = min_node['phone'] + + # Удаляем минимальный узел + if min_parent == current: + min_parent['right'] = min_node['right'] + else: + min_parent['left'] = min_node['right'] + + return root + + +def bst_list_all(root): + """Центрированный обход с использованием стека""" + records = [] + stack = [] + current = root + + while stack or current: + while current: + stack.append(current) + current = current['left'] + + current = stack.pop() + records.append((current['name'], current['phone'])) + current = current['right'] + + return records + +def bst_list_all(root): + records =[] + stack = [] + current = root + while stack or current is not None: + while current is not None: + stack.append(current) + current=current['left'] + + current=stack.pop() + records.append((current['name'], current['phone'])) + + current=current['right'] + return records + diff --git a/SimonovaMS/results_plot.png b/SimonovaMS/results_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..1b903d79ef617e835e458f71c871f6c6f5ec3429 GIT binary patch literal 61424 zcmeFZXH=Bgw>Ma7tF5-8AfSTKA_5Wx$r23Yj6{p1AW9GriXfo?wGj#gBruedoSwKFoZbskK_6g$mDe&fdSY4?#^u_T=#k$1xbpNqIS` zyBN&xO&H9<`QMMg|Izx*Y#ja)wU^el*RXkH@ASaV6r=pW{^=7N`zPkce>$4l;mmEU zuXFQW;}+ul)6CxfDNdA!$Lha+g4@RKF^^KgWleaNV^8Jo;V>9lO7!1>#|d5VS_}H} zQnxgp#m;^^78y6TDZIx@C(n7F>Gw18{ElaC6fdxsuw#w%G6#DHB96aE=Hhis3pe8` z?xD;IAN2J#z;gM^)nflD_^VcGsb-$EF4-OR@DbnT>$pdgZW8^ghL0!lBe>zmDzAwn zq@i}aQ?!6(U(RpvR`wqk^-0DQ|9*qPzLYxu?>7oB{{OGhwfKL39TLB7t#qquw8x8U zWT?b-<(3W)ekWd*dHtDm@&Z3wYqUUiU%^a%jRd2m8Qrz}H{n@bo~vAL zGfxZCR;Y4WRS^Z)Wb_`{YAN0OCw^lj_xd(>sq8berxge5%F->@B0V>*88Noy{S)Moy}i&n)lw^&0EaFN*T7PIa@kN|JZX-=>8tRLs6tEGO@6&s;RY3-Q`szxMR|hn?vB$|Z%k z_KOm3&m@Ex=*pda>0-PY-OKt4va+)5+r`&YU!D?W%dJ`)d}}jOZC<@Osp!X3{cOzj5bqpM|sz~_lxzeff znY?Br*(C-1;-i*0o`PD+;u0StI=e1;*0coj4#_!h!(V7v&Y;3k`TC=l&$b%^{rVxK z9}8t;0WxHzLL*7{`d77;t4qy13GSQCM(Gho?jrcz)qdwcs905$`VC#J0(Nc6e!S`# zWO~jvFETk_!FikIXDk!&VZ)=7m75e-17|W%Dv+#Oc zBbqxK4U%~hl7@xVbUx+Q+{S+LTQ5GZk!#4?H7naAWC?#dA#T>B+Tvjk@~-{*H>Zrb z(h-S^PD8dQ_g)tov9h#YrV=;AeRJryvb%sIYxhy z@Yk=Aok<}PLx1M5s~YL4Q{5RE9(&6P=J{1?O-2i)BkogG>%-aW0v0Tu?e4phyHl#G z549mauhtdQ%a?WY7mg(7 z#rO?asQ5OFyT4v+WKC%4Cw!22@uST7oQU1S_>Mq6|DZ6VgfIEmtpx5_b?Yo*Vs3#dpz=W5o6T}gz^lR`t+SW{&yFB}^_qa!O_3)k<4&MU&X$^xd6 zfcHO>lH?cChc)<_SsE|fiW|>GG6yop$dwEqJqZ@I%I7*KFo?YV= zk}v}=ZiAaJ(7D7mx+-^@r?%ltw#>&Z#=T$O{7(kniS=LXHMrngaH8GP*Qfb%!T5NH zYMZ1KM6=K<1?K+JoJnC?v%s>xDg5 zvyCR!w7rgpaOAwZt+Es7QCJpuUcf>#+n@1gSqn2JwCv~d`Sahr*sluc1nt3Ek|!m2 zxbKO+FG~@77;4Sw!;qmaKM}5HZCp`-b0w1I7010 zX3see{glxk7TLMs>$0(Qjl8f8jp9ECD)5}?7rgRTZ2o+ou8F^X+!dw2`}Du zD9rxu-!jt~wCtJEZ89&oYCgGIWait%#l=Nw6d<k{*00m zTqOg>#EX4H^^&e%wLKSZC;x%D_h7=Tm2;~zMV55G#A#ue7_F$MRu;7Z#bkK=esx|# zfrRa4>U*<652>^q*M@NI&I~xE*#-q8491L0J*nVYklW5;L%)IykB?Nu?Yqx3)t|i1 z+|bn}xHMjg=&2YjCeB|?u5@8;taT{;=J>TTnLkVUAm*krdEJ8?L4!3*5~H~Bs3j8H zkQ}Voa+QK!_?lJKYM(>3tvZ)j54Dg`Jx6|J@K^ei=lPgNVDXl(M1&WGt3inM$57gJ{m%V@=9b_{fl?gj{|zC3c$;@b0!YkSWYBCr;3 zT^bm<(ry<8AB@yl?XNqW_{lHk#n07y>gqvMsxB)(gHTPH9#fUvwRe9V^D6vvVt%^^ zd3(ejN;IiAui&7-!SOF4#>q-kN zbMhy8n_?(=yvwXxa)o4C^7|($iej@ATLNWI^xeMF^lEhdh*j8(cR9#g-5e4=YH45Xa*iiu*oLmn^*oaj?tB|MDR{f5O|x%s*@ zCnv|n)aud)o1ZMdV=&QrMOWE%U8d4z#PijT;Ok$XceZmUTnUe~Y@xSxDN?qQ!wqRj zy-?MB%=wz9sl*6&=E&wM2J>@cE`mvYGRd2v$%=5~k8^KmO=&3e>9FUZvDi#DKqIOh zZCqMf63efI{z9?{$j+~JiMFZU1h6F)XU3%|_b|VCd!Z(QaeHm<>rYEsnkbn+B=f0T z>B=d5w*M-p@$Q=du&Bz2Us2CHa^6aV?)o08h2qOC*OlpcKRBhVQvTE4?cULS9rfce zth&3xKj{zjVDM$+hUC)c%gg;W8+AN(<}0uG8^opEe!iQGww&C4$!$Vy)>A?eZUf@-ee?)qo&T)4W8joBZ` ze%ux-8^xLju_03DJt?WGZk~8<#hjp&AR+F5@rGdT`zCf`&z7qDQb_XQOm$_JJnE2< z&W}HjN^ab82v*dvW(mLdC<=SPjhR?G)(%ad-+gBzw$4!Zyjp~AlBjX5Po?OZ>&Uht zgGSDg%;v8)H3kMM5?DdFIM%q(y4ZeBcMN7Dk4dCD@zLShFVq2b$G^U6s%$v=2f{4@ zA%P;3kwn89k@>6I1`fTI2ZiS;k|#8h^xc!Xm@$|ZZkk)KEc2@bc^=YVf26dxm-zBj z)_N;y`&k@uHsw?4$}Sov@xoHnQMbbuzliVr`s5#dnF4;pF(u!?%;kB zwc?SR&*^4j%`#0HX3FG>??}8w^qyLP>Ll6@fMU+BH|q9k9G!L9CDwT<^YwD=T$*}% z)M*}FybfTru_KFl>Sv#S{`k1ztHN{t{?AON=B;8AT5tC&ZJ_W1u z-)?x|>(4(P=apHle@P*+aifX>A+#b%-*ZcVtrYibx89MH|0&k15+tXZZ3Bm7$0y32 z**f_<8-X4>DQ#J!K_8Z2mkVrMP`||+>|)&J4q(e{rT8cXL#*J}Cxtr>wKEC$wR>u}57)h&nB``_-rJZUHS<)g*RFFNQ-AfPH@$TKJ- ztq5?F?bZAD@AcJrrRr+)tG6rya7+PJV*xjo`a6#oOQ<{W&Yvt9ao?6v9TI{K(|S%k z7{@dv&OlztknD}YP+)GF$9U{*;y5qFKN}@XXZ^KWe8hh(-b*S9N^VwTzu)0VuaY~^ z)1Nu;$rjz-nzQkU;RvD)u6ayLsx3azJA9dCVWh?*B+mnSWa?pB{cF1jqX5HnFNd0B zc_mBsph|6> z%iV7--C44vxBGmlIH1l|tIS;FyXT><6Fik_*-DRIi)ar+i!YEGb<`v{kNFGPbt&c8 zoxJ|IttDIg^5PYR6dvdyC$-H9gef_-x0#u+CiF(*jf;D=6%ps#6E)s>g;h9!Q7bp* zF1?mOFMkf|u}9UM!kBInWy{r!*kF$2mTGEBv*e~{tqXUU6VFl_HJzMyh$#2{% zoHrm+HelLk^-8HMr7CCnYv!QatLy1L$AvwB$1Rl^y3Q3BHFH;t*GARR=y9&je!0Fn z)6X+ku~1DMR8;gO?#T5JECr-1Jpi)k0Y>ra8YnR728I+S$>FmIC`o)ITk1xxS?h{{ zd9}>4H8Mnz&b;o6)eOY!zHjDM?AOOB4>NrTAgulD zzaT^*ke$`y_bl$5(QlPO6O6lxV_05u#xDzJ&dQ!hjdL7)`*;7n8In*m1aR1u$aYjxeo-oz|+|dmm>pbcYmKffJxMaCK&I3 zPFUMahVog?{OjOJFRk=u&O)UNP`UzY=%QC7)&@*)=IiNZ1Xo|VYC>No0zG?bm$9Ft zuN}qQUrU`!y5pT5Vd!!dX&l9quPs5q2)wZ4?ilox!H@m1jjcW0+DYahR1y(Y6>$$> zUI2pEKuqgs6&lee%}C#Ey`GZ}m{Se#Wk*J!^%C^g)U+z6)v;MR5GV63s zaUXUHRe5(FtU~R$I`v*f?PSmpRpYKYFAG*n`UU>Afknjrr1)ozN3xBb z(`%&+4f4O(tDl_JG8?9ytmN|Woh-58^Iv3Wo8dMGnRJa{@8iCYs5!5t`_678#jTdkgt5?V`Qq_Ld@OZ{cu-5=hJZCbia>Q^L$ zeNq+%<1mPDxh5YdKhGuba0xW0teJbLw{zfViVaVw}%IKi!>kVW!Dl3V1CQ zW3rQcDB*BazmW(2df)}mz7C>R-obx% zo(IggR;GIAUZXa{?>IX!5-b6Qff@%#V9dnJ1ht@T}K(+)Mk@9 zlxin2n7NRF%CR#shcHE|A$m`T^`)auF$X^cfy-C?4}hs`#$`SeKZXCtPik=q+vFuH z9le{$ygZ$qPvgo4QrF+?**T-T)A#?!&t?~WuOv!EIp)28&u8QHIty^wSy#D#Kd4o3 zpW>Xpw6ydE;ivb9>jN1R(v_m_&R+WW0~g6tnhp|SiSgTx)>fWm5EF(5UNLazKerHL z7E)wrK?3DtiKg6PMtk$jJ+wfdFG89PXc)Ypjo*DM8^~Y|l&_iB$pj&Cb5Kk_ zhh@=1qbq_Xks&nVR@f&3yV3CiXd+mIk9HUq$si(yGq`X3a1L01KDuiSFVa7iA-QXg zb?DX7$TzIoS4y>w@T>Nn(zI!Cx3Hx0g(DbI_S^`JuUTKtJ?EE`+Hy3WlPi6CHfcQ7 z8%&^-xjTQH2RfhtdYLSskhm@zkL|Da9k-75ZVy4l6;kbxUTQ{dSc1H>EOv~RY6=0z zX`o!IM1<`IO(P7Jn0Ky3=m+mD272s^Yxs>H-c!CDd68qq?PAL<{Ggj+w~yyuJ&;&X zJ6UwLK!nS5!OMhT9%Ew2DIP18^jxl)R& z0l?Oc3WOmb?w$-D^PrsCX@E;1lCe}Kt$_Z6MBoSsdUL;2dEW%u6p0y%CJpIBD& zHHeMs#Dh_Rqd<&Ao#tcX-M6OfS2|@g3QQW{3Cqm``W;7cejT`WX_=ycWWt>zbv z`f^O-dGDPISq1@F9}B(u>#F2C;k+^PKyvz-h*-x#^QrY3GCn}#)gR}BLwZI(y{pgB z_b05vroGl6%6p43WJ&#b)@0VohT2^9_PpX)L!hcbxqV}{?%29(c5X@Zn1D&|lN@7@ z#X8z<(3cZRhU}W{_clqSMmIC=#arsodwv&no!~Q5StJ)^zB^Ok?Dpre(X}hPaH|A6!0n+Eg@|7;dZp1uMNj&8=qWtwyTWlY* zp!ZtJl`&zb$)e`9lLa3utF=!o{*6_(9b*t02YIL2V@Dfno+hf3;thM|(j2G{n=*eY zsMLEO0_op&@AT>DJL4=eH{J{|H+FQ5ev02nyslu-U?E|4Z1L7QUo&S2I|s*%I0>3u z<1uc@ogWn0tgUxK9Rq5b0i`LfRtxi#WU6S$1s_9F>7IvKPFA*}+lQ$IftKy2UiB22 zG?4c>@-cxU3%aITAm<5gRDNvg1r0zfU*CT`TvvpFLni}D7T)lI*4BFUdR46Fb)afH z6?6pQegh|i-2T^EQ&33^0wRpHwh9^;VvHoUJKSMW?!7gqIm0L&dv-CH`8*c8L*|@6 z1Y!(1i(R46r%ZTHyFX|8oRwlqT+;}7ZyhVo=^!p7A;shNhJoq4c<@~ts4CcyE`gAT zw_9?h-F~&*SQxJvQ}%~~LALJCc=N_^WVdSD8tW^9!^RBI|BmJ9yADGo@Hei1XahIbT^Db?AOh`cU&xYOqgmO1-HPG+;vlVI4rxQ zQsgc?ote`0*D3j@ll5;?_&Xoj)ao z+!;@B=!`izER8o7OFZ@45Z6wVy%G~WN5{kv_}3Qf!>p}CrC=8nl*iq1#fGVTJ?qiH zByqezj)@&#>#fF)@1QicW}+-i_J8QMQTE~BiE-Ckk+f%Md1`i+a66?%^W`&>4Q7Ru z$L1WqaRh)Daq;Pg12}p=l8i%HWQEUk>MCJCd~{xPXLEYa49s2Qq> z!Di^8M~4NZ(+IlG7e+rdMG6N}wkLtHg{xGVh4!#+pAYiu{u(u=XH#wFZsyj0#oaDg9l#J({6io zHkCo7ugMDb4}Pd>K&7ACv2Ivcig%sAw~Oc0C1}4D$gU_~NEe8_o*_VJeSR=E!pv!o zZW`CEEHpv!7wD;^X*~40k)<)DzCdwaS2w@ZRMY=Q{pcspvVw$NnU6=C`6Du8&tAYr z9d5lUu|lBkN>Zbto75`ecLTGe>t|;QuGdGGaE7DvLiqvz@orSir;xlK#>({86uNq* zyJ61#?9FqG@$KAuDzpLK&)kbF30btrT2y)A-(<^siQH_o*Col%zueSYepWlL&G2y6 zuc6Eq;nEsOWrHvVs+~ppNLnv4_hpq}<~x>GhmOiPNJQ$Kq3x%=P8-m_Uir%)o(^{* z=uaw-l$4KOp~^llS+2O~r!qRc2O3aw7()u>;;cu?kW=@CmMD!sjB#j%(f+-T6ie1l zp2}YzhpI1WCkWPo>=62LYvT=Pu<3E*VDVrZi#(~5Uh*4d<~##W3R~^oD-8{xQq-24 zlvlab6nl?RXtRU9N_*_n_?9&`DeWwal<{H99jD)y+1aI^0J9ajH333!E45$p6@@!w zd>mLCM83LwkKLJ_2X1be4B0)#Mh~PtS}E#JFoyP@mCwT|8h$fN@$Yh($&J_tIy+aB zii%d6dbiGMr;&fkN?I&s*>B{HE@;(C3yd+Fo%GuNP{wmM;(9(4cOK6pZu3t zy!9LL*78%Z5mhEzuF@2U{Hgv*u(LWzH9>;7K4sf*F~WW06QkfjbrQG7&KTpe)Z^9? z#Y+nE_5M4cPHI?sBy}mZ9$QP;oqbGP)yN4z{HxpZz@epe)R9D?Hcn1G{!0zV)RU!! z)ySFWxOPcZ(MP@*KqNO(Lf)>&%3*iEEx1QWUJDfTM%rTD9%U}iXievBij|K?XS`^X z1nR24u#V4A_D+p{a!p*!QOF4GdF^dcFW=E+F?`gwIZEe@5UdLCt z>oRS!Xg4qdbDYYnn72qzpuvd7e;nzK{4F6yx1eOPo{prIz9>Y7p4Uu$|2T(|_o<7~ zj0qquVcY$Vts|FX>)D-Q08jL^82`swqL?C{GqkeFE}F7==CcC@y$v&z@*IF@2I&_a ze-Odyh)ywBfm)KF7cX<=r#MKv@uPUNRuK|`ignTopygZ8F6KsCZCXd>oQb7QBPTIM zPL!r*5p#5pD4L*$)@1Ax_*6?}#Er_~hS)VWT9tfZ$^X+QW*Y?_81tP&7^=dM1(ycc zP9*TkRz6gZIAZ8HkX}QBXgZ8SFGyd)4b^N9@Sjc!jZ=I{VbXh0JP0~Lc%Z;I0Iqgu z2gDaz+V`$B90?l0n(5Fc|6!lA;zMmMpvTiT56UjiI=2isA)b^#r4Xbwh3Tl4(x+dv zt8G2ZOQt@?6%FaeH-79XFC(?8knVa37bJ(hNwZ-;Jw2gN2G3g{QCPSsb$kF zt|!uh@4;G$;^BRfEqxOjb5OcUTr{E;mF(iR)8Q{N`KZ!N9vl65kL+cW01+0Q6m=FF z&$~1p2_{;4J5~l@VBkiUpgi-cwi!JA`*5$v9aV|Vas49C8X=&uilx&z%;QbbtB#ujXtiF@O$lJZ~_NaFPBg`FU7k|nVK#m60M;xDko zY^eFh6+zkJe#02nQzlG|00p9uSTi}Y2o`af7BqR0o%$SwKrY>|Qy4N8V`Rh8ku$Ec zw_RKAN&msHtb??vRp)|pv#@sZSCcj#cwY?9gFFawY=@4B2mdbPe<6%K*{5VdIQ)<` z_UY}s`ZKoAYF7lLO-Ua|rqXM-Z`yj4j;*gYapWtZavlJV!>Hd7I~V)=hJ$_4bG<`O zhcFklw&haNQ~A?sO)jakU|Di&_O@2zsjR|`?L1(i+_rUP;+avnIF&w?Rr~WjTQ?mT%!l zAVz18A4e4sl-}K|35;B)$7bZ*h_mmTC(o&_L`womS#m}qVpqHST4CjjylW3A_ye@2 zZkiC9EvX_jl+?fQ4mR(=Mr!AEYZ1Y&H)naeWcUZ#sluB|lb zC_Ll-I?@$1@FDo%hAr73WZT;8Ywct)H1Kpa z^;gM+*Bf=TMwRLS-^^KpA26M$-q-6!LS;Kfbk(`}u$*pOE zM(OTS3Z1vbn^Ajg8aa0hT2+YX1UQ{tytEDNDGt$h4y+V$SkCtt(rX!6s&|%}MQ-tE z_eqc5EOL1nz@1f5D=37-qG1a}#+S$SP3oFT1};!ic@!L2Zp*SaYbYR=>FcXB`nvXI z)}Pb6!u*iQV2(k$dGXQtY^Y605y8O;-c0)leP+8D7BA@yvxLVTI(inR$Nj~ zkIT-9$IDou>9 z8@zu*(wRyhA!iFQp^?)q@u`RG^+APbJjNTLZznGbBDKXuzbxJ$=0YgG8DNVW2bf?& z^VaBNyybKQe_PQd0<}$;tX)da(MS9nH$?AoC#8H4w$Z@%td%d)Ga0u9GNZG*Qbr#Z zJ@nU_I+JlI?T$W}vQ{q#=zp3qHx=Qisj1D!KL_=W^vC*G&m=!FS<&)eJE>lGg=HY6 zRbJEe3kVC7TRV}SHIP8q7fo2(W~lPd-&+CPZjF8R!wW|qk9-=qmn|UuURm?CFqCmz zi97S+S(fq3Z;!HFT&P@DagW_4Q{iqLxoK|MUf}$W{i2y=?F1+|fe)ULkBQs^0sf6gW*cbGa4m zxN8q?M+;hEt=G?LnN4qdx&kq4&3=#~-n}x_-Cbro#@u+5V*`406o+Wt!Xr01T1L)O zkQF0Kau4RWa_@QA0v1fK#&4%@k`g5MV^2`{t?UB(1{fPoOjwMOg%)=m`VAs#K+$Mj zUN4{ykPgc_9hP^z!MNAWfSxg#g!a~EmHGalV$YSv9*4_(w(r!uM_QC z8?wNTEkf$h6iVnEa|{wI9S>IQ6QyayBMzv7CD?icax%9|lQxy?gM8u zvj;ln;ZCk8>2q^ufVPNZ<<2nJ@*A0#`7&QYe$^m`7Lj(g!;_*H{=Q2%s$Nox!z@^J zkt8aU0{xSO=o%nbSJGF20%)rs;`UX;Q{K=?^*zpG+kGAw zU)~Bdv1_GTF%eQxa&81J_ExFn7J1e<&1|d^z2Ee8kerMf&RrObdK@n=N#1P7eS|m_ z_9L}aveIj32uie*sB2rDnHzHo>Mv}{RH%i0hgjZcEh`k9SlGcG#C({oofx&ln5i1? z&4W(X9wwfW{J5pt3UUWiowAI%hC|vBx^A=tUgRc5S-dihJ_c zzA`55R`ARkas*SLjeRBv2i>H?IUj};l#Ss|DLCTkNPxzJ4CH*^{_D#$mBpncm1h$M z^q-t65+m?o&T18jo^Z&m&CI^r{P6@&EO*sP*EDm~X`!5gg(+{H$V;N3HXap7p2ltbP2v6~fo}OJ ziUqwBV*_hG-Z6ZjTK@OlcNgr!_yLq^LB)2!9+4 zv;uh3E;Ld271u6)1qszT|11ceRj(a3>Fl;7c-9uI$h~>d{jNgTz>WvVz=}a^hphA;W;SRe zGdbwG?`2$7l2nxNpbyD zyCvH)-tnYXP*e<}IAA|<%mKI_*%V;2iW7Bc;)*an!RWs6fSre@oouxWg5hUV)f&Is zquNQy&9h96*=f>@V{E$@j!7VWbMGE0{iz89b=ve2^u%ly$O#rwMf9_9AN4Gmf)&$d z_2v;R?y1+``-)T%ez3^6d>@9D59X`J29Vf;9+IuXAnow1+chLn4> zJ3JdHTn(jR;;CNay%f5y<=0Mv#^)>_`rL68aw5w3trhwG`24>LL%JeQRnfqwCUNbQ z{29=)zGNz#zg7W(KtAPIVcURR6#HE^G1&c!&hq<*=Wjj8ds8T2{7;4=Ui#~MIYaZ4 z>eQ^-5wlQ#h{Zj#$)l}sBlRpD8o|lJ?p83$iywyQ*Q4sqBN)#~=6{Ot8NadQ-LBc= z+tb>`ozw#}oH&40cG-xF*?~6l6F4W)%?`kti8_TN}bD01h}NdTAiU zjCFy^YuDHfjM6H8c&J-dQapcnqchMwG@GIBcmO1)1=pRw0p+&5(oqy@cGUs!OWNfC zVJ0ic*PHih>9l4mg3}kyq8uHH{GrNVQ&@(%hQ*Y}_)rve-iBVN+m?!fB&8Ld$wJLF zz@i#IG-`4blgRJWTsMK~F#H1m9YVj(XY^YZsR5IfY&|nzGB-s54U{{jZx}^lgTe`} zBDLII)FZ4j3?V{E>nHdS5_+HYd^WdruR*<>dCPVugn&?evxfSSK?0y8UIakQNAT;d zUuM*w8$&}!2=4U4st#b84bOKpb|8@4H}G6P^P!yev6=J(%VUsCQb>?)tbX+b`Aa4EGG{0=|j zJ$jCC)$4d~!DmjI@z%W|P(|{z-z#Z)g0Lgo1pv!%W(Y;nr$E|JMX7J3a7FXiKQq*P zOQ?I=q4^J{5^ZIl%$ViR2HhjAoLVJ&t9dZjwQ9|*Lgac6No(jgdbeMHi*y))o;&H{ zzM|rPQ<85^2x3x4+P?uGUpl&^K9zh4TGhir$N_ePRS=^hI+e;o{v++tWJ}a$I!A5I zy`1|P@|^k~dv-!9%j8w-m$vj5XGS#j4T}b1*QE6W$ZKYb04DnfJ&1La7Xt?>P3k8h zVjx=%&}TXMeP+EFWMC_Aa?^}TYfYVA{vIf~_bj(Ay};ATU!d=EAY3N>ybUpnp3K;1 zRDNsV{fD&s^#@G1zdTBjS2zkONE-tK@kt7gjXQ<|+L@1be|@4LW&J8R{R=GcJ&1W< zJsmSvBc7;h8{4PYp(0)9e;Tji_r>vQmgmk0dDp13e&3D0X-@p{imuD&%;hc=Z(Bi( z%$KBIKzzfjk&rn=&lSY<_ayAHHo}DlS)Hrnq0Sq z2!6I_Z6%&F_;sHMqKAd#A0FlybA=3*mddi4RX=< ztceqLG;WH1yhGq~n*)DP*xg>YS)AE7-uY!rO-+Z7FGqs0xLEIS?OTOYdv1_%wkmUN zPnuDUyR&u0B~)dHFPK1Lyfw@cz@OV5xLy2 z-ozX0w$!*kO@x?WE~!DJKzgd-^!YU}yZ{V#+wRT8Ldm|-u*=(7 z4biDo6o<;U_V1c=AW(Q1hgsyf8K5`>C(GYPr$6x~cB|J{?Mb$<_>Tkm9YGNVSCBp^xh@q+>J) z)t+QlaW>4-5vsz%PT>K}O;RVDImbvP2jJD)_B#!b}d1Qjs|& z!LI45NI*c>JhHA`08MHv3|B2XJB{F-0+yYiFw(zlkL10q6FdYmI*uN?z_w1!qfj44 z!6&-h$2=gpPD+h#=BW{5?Sqzi!r2XjNn;-^_WAY^0*WaRkH-|tg+3RYXO-NPAD(1k znKFs_2Bi6dLtL3H=a86SJp`SGe&Qf-RppAZb|@9ASiuPS0p}5*u`wt|YX9*VYidS< zd-*U)=AdHE!+?HWu&0))8F#)P-6YcLKfQ&#@1<(FbQC{Pak(ly{^m{>$_68j$Dz(b z={Op#&gTxkR`YhUaVwffLh%ZF&_jv`Tn}J6`lP9A25wsxy@eW%2doCW2zQ2X6_#dW zZoqM*>9}uoCrlz}Y#wDA{&t-h^d~ZOIr7Sktqb7Flxnj!D8xNYvbq_;?bZ0j$v&sm7BAj0S+aE%a_yBKWT3w8`Cm(x!4z z20rOtDBwlL317iwQ3$R=+S38cbBjam_IumVpx-cwxmz%nHS@&u>|Dh0h8b7G4eoaT zrfUenqL`8>$ScvNV(9nOrco*e^Fd$gy@KYesBcB)-C2R)GIjKj+|hg)S{3_~UWncl z_1skyXnux%FR@2H)SLvMe3=F+i$&Nd4*X3^K!K*FtpYOgy(4vXQYx%s(gwV}2y{d*0>^KZY?rot^5I3STbV<@Y0-LuE`q0sc~wtaSXkHum;Fp%?!c!5 z_qkCxt_UQc3`m{u7{DtG^I*(ana;BWV^u(5Uja2eeF4AVYQFNb6GBSzQ;<)3D`5jg zMj7=rn6A}ct^RcC2B!f~U-N-?52iqdZ(g@fk?~hROI{QLlG*JQ&>Fi@l7seE4q&t? z)ZB7;pFmyR6oJ4mpgzetxcgH^^WK}=>dV3{{Eug?X!gO`{A0Ze{0=kg775AzUZLGxcH{rVJm7oAW( z2hHh~Dh?v=(K1Z}zonV54!vr;!7RI?U1GasQ8Z9u%giBJDT3ReD*-mnQ2G?ap;e4L zb{()#ZtR%mk8|XFXME!*`>$Hbb{I0}gOSA=+rMh+p{b=M!AvSq;O>)E!e5c)E1;8? zN?UwB|2Q_Nw0>W#T7ZUCsa_81E9q#trYv>m3KN7(^KaluyZ?oMa z9g^ZV(D-bAPXNttcf3z2L%eBfcYP$^!Mf<&092jj&@^{kajnR-q3qon%eX5_nxRZvosKzF#0eQNHk2^CWL4BDV-68}a{!&@ z|A#UdqP(>>7XvAzAzU{~9hW=KMGJnj?=BiJ_Dh4X1pDr^PK^TCbdOy|39MbfF?kyV zjLEl-UJMNfb-Jik@M|j6C?3QX%t5SDgkI~40*8C$e;Ss42O^>J>D5U^bmy=TQ|pGZ zlt5))52LyWl~zjTeIqWD?NpH=xWCXLWx9)!EZCOiu}V1TU_FCCo6(kw1vRgK0&SJXYm$(1>qZ&5=|y-s+Wmrv zOv5fM9fL3g#49}@X(uwp68sQ!k|KV)@z2x!<=`kRpF7|=YR*$N=Qp=$OyQ}`%6$~t z23k%_MTQ3xGtsd0P8p~ut+r3L-^ ztH>5`#E6EQ9TJ8@QK_Y+HBqC7ne+M|moyhr%A36Gxl+N6ug_nf7F$3vuKN(+nn~dj z(2_{u3X9Jl78yr>J9T6B4NUR&j2F~B8-3XZ^C#S_qb=5u_E!R^tO6NnNjtyv=&>QI z(rvabRU zvba>9egO@=8znJA47tmHCZmL)Rs!mZ6AcFr9qHK=_1Xm_IZxjJkxX)2Jq`7N+nQkn zshIK-9V5IzsUC`JS@`1sCs{p>#n_9X0ODvZ!P!r$33eVWgi!rKrug^Hl$U%Iz$6+X z{OAJA$1b@glGntJI$~oF#X{k>TjzC9G77dS-=Q`E(6JY{clbEh^;h6&Bg6Cvpa(Tf zXbF(CN-yhg<j)AWClRI_Dxqa zQiCqb?puXcFtvmj1bF7X`R-vUQgi7aNr`|eQN(m}cYleLN7p+|ix z(j>sVB!O7H$Kcy7`i5lDR&)%(O9Ir`>$_lq#*M`S1iH*xclJrimq+HX_mvP%{PIy? zcdfKW8O>tGpbu_#^54eVQ7yJTTj(6Lf*A3BI1`;Yz*@u!ePHS@DiyO|M6dyzFF?sO ze0PyV!`@s8EI{P%v~;=jO%S!Zp(Q0uLXCAXx-Q{&TvcpQ%DoD#6k*_P2B;0cEj_4w zwaew0XY$cqZw41L>x_M^hI0TJA}G`P7WGX{16^=KyOC(2$7}WO?;|3YOrh*6s*0~_ za`Ory4g=dvU~>zWpvEa~6giD8u0RR8esMsYON*a({J}nX1>W*rFxoRHMUBD+kfQRK zkct8URb&@ZKTY5uss46h(M7!vc_FG0J+YABp>%_i^NxN4keS|p?Ws9Mw^L`SA2Qua z|5IXQ3yE;qwY86RSGkq~NO^^AqRt#Xbpwm%yFnd~hNA#tr+0&%b)SPP;au&0@7}%K zT~JqZah=cJ-rX-c;}MyIlvW{oP&m_hP3p&|uXS=P0@}&zRk(W4_j8tiFsSqE`uq61 z@X_UFK^H!5i1RB~@1aq>{i83?s1xfaeO#+R@!)0DwjYxM7{o>44Y*8=fQ4{MpJ^%$ zrHuXLt3WC{72b>l7XaJh zwT6SgPA53@nu0K5K2&CF4)SgMn68+RC@tz!$_%QU{DBXnGMT9oQ1o0+K*suvKk$N(`w#Pzfy}?l6{Pl_;&m1zl z7e^Q_-m<6m@fs>PSDF4(;k2zB^INH|rrBiwyPTgTV4k!aG!QVX+kQi{Wb+?RCtPjg zrtw&SD4Rpc-7UEN8gMR%_1~J1i{TQs5cABlBjf_RcpqKu}U9fFnqM!pI%0MUE_OU)x$W-XWrhR4rq z|MDuk69+M#;n(bccI=;w0K%jgy7|4^aMp<)zLGochLZ|pqp&V0*$sZjzbq(P>>siL zvnk*m)Ji=7OK|_QO2f!3JQ6=;{)cSo6Upa z91P2>_OGxJx&iaVKWdHEszQV3iqO~{E`Yir3ijb$h&y#u%mU2w_c8XREaA&o)YB^9|JRiKM(?vxz?vVb0*r&4or zIBov+z6Cx&#s8txrG~*h6S8{W$Z}GGhrLn^IMfs*k=o=rAx@%%P)j*Hp9U-=i#S){ zcjLdszCbf(Hc23w^%D5t8vaA0{;lTY;cCdxDTg}S4QE>nF-dy3rosU#98*1SHCFot z3Z;|Mr0;9>dw2tb$$TVs*7okoZ{B@s%Mxlpbndssj-H9>9zq&O$lZVBxhui?=tK;n z;TYiUc0H3P@Qrhd`=gf_th~}+j?lKtg)S9^!wkbj0}MDszd4FgFsz+8L)-g0BvIh( z{GqXGHP{xOA~;{!C#Qh#m`RJfuC)Y$lIXP_r``NIkk7*ljf3s*aQh0&7t3N5e@Hxi zewgN0`XS5?`9HbSnJb>!MQ|xdm|2v(huMVf+hOO;R61q;)Rt@TmPF~6;r?tL9veQ) z2Qniq^=K*(4OXuApP7hC?*)~L{z5+U`d@+DAO3uP5%b-nC8|3bXy$VmtkynDmCSpU z3}`ToLUQMtO~(Z^>DH4XOJO63xv3z+?Yr?4YG`XCpI5E1nK>w#=;m5nd#qC6)B4uj z%0@OtEJ5@XnBKW;TOB;a@nC0T3GH_@Tla4(`eaFa(J9NrlEvle&-LZ%sTc=l1;Y6` zzi2v*Q5)4KvKcRz@%)DQPUd~AVo4Qq=oY$Nes=S`w=R4I@oeb`m+edQgAAC&2SG~o zdd!7>t>#yaaTw26QP(qyA@y(&URatLWUPHgfWg!OJ3z$pza z50x-U`hU?#D%1A=8UAqizZEj}f8u6L>gwGaI$)%hcI4`n8dDto&o3snLhJj_*Pg*} z;LHEFzh=7!1`HcWG7~y%WC~5b?hnyI z!lfGt-)IionBpY5ke)Oh#a9f^Ld6w72W4p*H1ySVJ*#3ZEO#FI%5XZUQZ!ad`?sWs9@Y%zrk^Xg0bOW7%Ms99PrgwN6p4(=)>eS) zaR~eu0r$*+@wkk%a4b8TO_+jxU=?J$FXtg%jQmIJ`0D0PoTXMtagf9;}dW zkAi3vlIOZ0=Ny8>0Y}Kbq84Qjua|~O-vT3uZG{2LU5Y%)A*`w@XlSOe8je?hht>X} zZHaXV9_}j+aSnZrUm+OX1>q_>w>H?YaUl;zi7;}1ACdFrJv3ee=^H_vaOc^AhOGAd zoE#+>qr3GoAEdhWo*ECbXdpT{Ar3T@Dad#zqcE`3mdO75H~YGOGq~n!sZ^hIZ9?Em zId7g4jafi$RSxwMCpC+HZilhyMu42I<(rvJ&_D^(Yb5Lg^c zeJNjn+4*Y=)_|GlNhsktg{I}u0UG<`TQYQ3<8y~GiT50=haroFiF88f7a5{maL7#r zni3TWKrnXvRf z7ZEj?22>9YG>+;im~riVH8jLN=gM~;0QZ*d<1+ONp+iqnX9tQc$$_lfAcoE``1MVS z(hVGf?3xic>%va4M=lmM^vYa#D!Tm@6m#8qX?$k@R*q;O?OF|BLwGVI5|%zK2PD{C zOQ2e&L1j*q<4cQmn3nci92w?(>;yo4Nwl?KY5c1#?nVZz++tA~AkLFasAibqP>OPA z0B)IRAkVuG2R9etP_W3188K+;=73T6Cl_;fQKTapR+CtjAn<)@7)Q7bH^aLNw7(b# zYvY9$0=3glZbIAIxBtMP3XdH?4s|+G7+^8oBP!p;Z38as2B;iS0wU@o4=dO?q&;u1NUF@Km7cr z2u0zn{xd9mQsRH{_U7?irf>VWrm3cdHmO8Si;^rQ5oKwWeV44Il-<}W5@woKMM-3r z?4=?q5^b35S)-x|5f$(3;(MI8G@AK5&-Z!0zt`(`|M7XvC%oVHeP7pgF2{MC$JtDk zyJxFAUZGv@mXz@#$TktuIwD60e5sWM-d-7gSn|edd)HqOysC1s2H73aiK-$4TfsVH zmK9HCW9wpS9VwE>C$oqvU(|5?>+>b}ck>Jq$WpMYLhtCsYxn=ed%X_Gh{v&D4S~Te zU^y2Hg`!b0F+;Xy?f-Sdi*0Y-9y$RJeTHz1L2P>w+G(=7j}c!BHOI$>DH8EaAL~(y ze)l!G9eD9VvflI8#<^I<%1ILw~B9zbWO+EkRBkw#;&B_Z6g zhb(Fk2$)pJYF$xkv0!P9ToSx2r8@KX;kRtuQ29s2X!^&ECBoF zT)-$5cq~#y3yS@~0~U1JaRxHjc*}dJE;qBZ#?`P6|Y(E2B4=vL0~D^7#~b< z5Be{t&2`a{?zUac9h)}~P*Fmy>hueb|KfC%FJlgtJvEoB{uXFdc+_511r9_Fc#63c z0k$dhuUJ6aoA_FTy+9c&T-;jAIQq(xX`@ZrP0}!;Tl7dB zpaF(Luesy#(Bds8Qd;k^vAwxJ8j{47fya2+wX5|KQGST&A?Xdgr@ap#(V;IKKe3ev z@92X=dysWQz71@u+lDMENeS^;J7LmVij@my#wIL^xt*$kjHVS{_kr& z=jN?h!oEQKdj9~CP)Qqy_>8JRLyM+vszWh=NuH*JU^4lywdO2FQ0>pGh@npnW z0_t)?Ei#%U7ugrdY%I3v`A~IJJ8}pR>i!ZzqWjxpV0|!a=lXy<9L^&gxH1+TjaxNaQYUmDvh5w?JsI?(QGb~nKBOfK#Fm~V#TesAdtqdj8O^pM>OX3 zrC@Dw6p^zDO;QOGTX~?gZq&dh6jQT-<9TBOlr@hc?>7%0O|{3y+xwTEOFzLb{^D0! zQi5dCtf{9byosS?kYSJGVxd!JO^?F^NSHb-s)`fD?sjsc0|c6ui&td=IvQ4X!;Rp& zjP!S12xN5PS29o`VE(3?B8X8^@W;A~Hb8fRS__#h*FcIO_=<|XGC=(FZ))i|>ocF7 zB1;DiUG#k)(5tk4B#-wL-?1&w>WY(Vl_0H9He+`=Kbj2i6Q z(GS)F{L4xTHkT={h=DHbG9Qj$A{E6Fe%`CRj;f5=h1JTi$*ZrvQSrcJ{` zUs(;<_gZArpq6mZSQzgdmzX9X$J))Q&3Np zplH;bxW1`z6vTXJ+n`vDBNaehL#>~v17YwUNd7xNEm&i^l`^BQ9*R+1QNJidVIXuO zXtYXPzZr{<&ur*^*-Qffhj6S{vC# zv>Gp>9N^*)ihC?WZ)Y1{H(pME6}~R$jA(m^&Nb%epJfG-(1YWY;4?- z-=M^jJ#kMt*yOe_2_5qX|1( zwu)AqwSj&`?qw|H_wZFrDD&vpq}XreEjIOJg|>h3D)1-!uSP2W0})V^I(_uJjWHmJ zaOS1LP|B@6k4M5)(mg6lBXt(9G~+ltSjEC|Y;nPM+}MVlyLJWMRR=np?$q*w zWQ@SKJ|(ipR7?)~26HlB!B(=I_$zt&`AoVa4r@jlBc{_4S29y6 zV|dN?GMR?hv45JB0i2(0GcGM$0h;UGxbF3iP0GVq1Z~i5>6=F1QsEK$z3biUsrLK{ zWWt6zz{ZxN(l@*(EPY^nwtmNc)!SzRiDCk>Z;zoq+K(2Oke~=o)u`vfk876Af%eXS zTF{XPH@`>?VgG4CM}A(i{GYUzk$-11zx}^G9^c|0{Qdv@IN_J2{`j^}6Uw8N0=_M= zXEpO_<`ciiyge;txy%dy^)xSDkNE?{&4^cj+#zGD?%NQGy81Vg{aI@UNd ztudE5&!|=vY}Vv&@HKw&<9{0&4E#a*T0{w=ysL~l{}K0S!5xvX54V()c@3y`)W5EO zL=W+y1Iah3yHVxoz2|AsaQA)-ZfRF11|EQA_wPZ!fR#53^?$!bJE6?NC{B~MoW+H0 zTo&gRgEprC77CkO2g67?wmi=bPPqk&;m+yss-*~UnP?qoieDwTb0mlpLqRK5H(G!N zwp1Cx0%72WF#0_dR+G+m3rd=5z@x37UBMTfTrLh2qJB2e7`aJme)EA%^%FS) z7))?Cuzpg(i<-ctxBEu1S5y#bWitdPQd;UK)k3Pk`11%Ld^0CE!Y@PRW=;_K-8v`) zq}o6WdV|ymw!eygr;xiKBSoRnZqj)!J><2WWMsO!Xl_ln14*=pAL{Tfgem*IyOc_5nunSjkNDUm#u_HA9-WTRa zjSN_(B%ed=oMogdk2ijwM6^O?IHJ8g7HUzlM^VgHLq=jmd9fA8RNRC25BCs*$f^a@ z>7r+%AS>3uDo-C(C>E%kw@SZjpqJr^Ga*Fg@ca8`~**-Mp(0j66vU zHkI%WnomH4y_x2(8ok z2DZPGkT9zX#CR1-;ino+#$CtJR@k3fnN6Bjvv+elK3o3@^*x(Q_RgFHSh&*>Gw6Bj zvFpC`%_@$>2d`P#3pd|?WAu|b?~nr(ZnIA{JZ&lz(a$fcRZOKBD91p*k&zrsNTV|aAT($}zDr#>2#&#KTySxx>R?mAagTAFmsU4DhFWclxbFYOGVE27JvF z^if2Q=UD&iA{@q^&P)=zc5c`Adkf0#voVIGE5&tr9k`kwSAx< zIsx@-Cs#b9zKtPn%yP_)y*Vw4$d78RfgfB*mI)zXqUds1q-}rOC8y6@1Bqwz0KMIg z(w~S>aCMd?qO?!jzin#z&M^MlV7W&DZjubRc)b{zaNtFYJ9x*HJjizZAjtN&En?bO z{Rkyt3?=x|OOE37R^-ZH#sPy=ghPJF0=2yzxjc@_|9&g5BSc}rk#P*d^aQE;Q%g%x z836d#>bKozVJH`1SH?e}urB=?I1OdUiIQS?Fe-_CGr06%Gb;8mtV-%GuKU>uIl<0A zGUrn0W}&`pYD6rrc>?3-JI45ZXbn2E8@v-0c=GIf_*iwcseiX}_r6#6*_?W}1`_7R z3yib{g^+7KA=GFT&O(-Xx2XhsGivl`!=OK!ZAR^{q>3I(M6)ABfRS}ja6Cl_p0cdR8?lYAjAP)y4kfB z4XI%WZ%YOCT7IhkDwq+Atx+q1VByD&wjY_e0(H+2=Z)@xnzpFN)wb|Ts=+8WF*X*K z+wkiTUZfhwuZ&Pil0Eza@TPp%eg`^F)C)@LCi;%%?Ybaj1X0dJiQjj#$T9Za8Hn&= z>I&n0@Yi}oxGuv-1`r>>&HC}5lUpFWyMw@>n%|zVmjOU74ccOL_lFd%M0M;Z&Nd@v zDv{6`Aq!#%5P2!p`%p_MAHz;YwwMRLKI22*$1y(igH@NcA7N;9Uq2oq>^AR`SuNnh z3=f<#1*+6jkLX)W>Ij7Li4*F3F$Ct29IKG{cASt2-_D84hf&(bC`VquC6A3QN>j~`YG;v=#d1s zC@=Re$f_YmS!j+)eK!McVA<$$CSD!&eTh!U%xk>3RQy)*so z0NVWaO9X?F4w0eDez-R^GzZz=*tmB0L(j^2|2AdHo0eq}sPBTL48(=n!Li_;{u_$% zmN9IqqoH2EslaM-#G;5x8sBy#p!fr1N1(swe)WGO)JH}VI>j_fRpsP${!vf&lp32= zjZF^!xBvaVCTQ*g*uJa9?Fg2sV&a9^g$?b>f7>=#UU2?LJ@R)`>Id)&#ei4<7rJ&( z8@0Q!P|ML|58erRo01EGYe#&<+WR|v;g-*+jqx0Q{Ikamfx>NIW%71l!^eA9*PX#xUWlazKMhv-N5O0>Y!=|>tIa?GWOp;TWH75Q?>kUl@A~>Akhszvw zO$V;T>YN+nVn zCP@!+`DNHLWkFj&t?*s)gK<0kE&!19Y9Rox%$O!{S>4hBY%waMKJxWcHw*$JGnnZ* z`j9@o72pUQ zTY=L$a>?DddGG~AYq6F=74hn*?3_}KvA_W%j+-+6NB@W{QV{iv_~*?Y2)2Zz!n`A} zeb4boCif2jbK`X0h;N$yYMh(evAT?f_*0V7m7}4Q2N3HYtz9%2sf^wusi(zYVa2IrODz$0g;#K5 z6u_1Fo)xah`;&-x1hP|sgZh1`w^wDUym!ImwHKs^;l}O|h90qOOm_9Vfk;I;@grba z8f~cQWoK5u4z|~|Qc%`Qky2`32UA1t8R;31CZH?wI5(nV)`DPz3xynyYPFJIsL9C54Yk(2*D~x%~C0heYBQDKV zdD$~JF!3y?V+nG&I~b-Hs*(DRkVaN7{V~`hN&yyAi{Y1mT^>{kf0*F`rm{=05in!} z$A5&b{1+;fh`L+LJ!|qhu#wDD*WfW%jy-3~^S1H@?(n2jtu$tB!}wXS@2O3VFlnx% zW*DZRUuy2#pwS&!lC&zXz;>{=qXld`Rn+oS>42>H*ZJ4e*pD`f7C$Xj1*pvF>Dy<| zDWg1|NI5cm8z(5t31hJ)`4G$pX#MvH;7%G2}KH)1oP9psL%Cv1Q-zS)$+4d^WfpAutot zItNix(|qayS0|NlBhe*^dOVocdRjE2`;{IoM0%CR)SZ8RmK%}k5d$hvvk%o`krM5! zfhT2EB~fpxS!4m|6J=m|a4VxD!++%;rr5q_qwjoJ%h=fX!-HxtGfMGxL$K4f6DK33 zu2KmH&RqK^}J#^*|v$ z!%iDX(}V2$#+Kk>Q2eG;snNzZ6IRa&;?L1U*}S_2MY!lv;;2(4tvrO9k4XIam47QW zJ%Fb0+wDy7(NioV3rHd03lflbnUPQs>fp&mUCwbg@BDi79iOKc$|P$ibyGa6v0WOY4hJ82aKn^_a{rxk!J!@NSksR_um zA1W{!ZBCRPNjzChZYm7k=NF7LjKbMU!LXVr zQXcsVCBl{6vKU0l7nzvbczg|pXW)^h3f_`)A4G`V)FMT;+q;k=>A@gqbvW2IQ!8IV z*$3c}8newJeOkb7);0QL%};fktDpWQ?m?(4b&JsW7jpYi#t&Rmn?A!f>^oIB98PVK z#7B3Dw(a@&x{N01(Hyct=QhNA_DtCS*ULj)z{$kpOR>Ju*K}r^Emf588?#;|C_=@S{oy5t+|N-6WO`_2-ippBR)qodeH9V0lkgjOg(7r{v!p__GSM+ znFLrCXX;=s9B631ypt@I`&T*$3`Rh$?ySLd+`-JI0>q+YeQ#KrrAATd-CnCHuWAlY#kt6vg#k7F~RgH>|_ z8zFy~-uM&G<_j+r-tUgng*TW_SSv<2J;d*`}R zz-FsngV@pnF{Ni_MIg_-A3>P>D!mI4sytmDI*h-GqNWXxqrhmQai_QXU#!XHxk%6u z8K_sK@v9emKuM2}dif?~6;_Ys*@jk4Iq8;AnR{kP6K zYE8VGo!&pQdH$h_$Rp^IzQW>p=add29xHNe-M}>fANag}uXQmq7N8gB?#{>K!=1x2 z+7a$nc0Cz)V`pY4u_Zn+`FN-2Q2ac5!=$||qTIr#G+UK70`Myw0XqgCK`hL4nCubc z5nQDj&aTyTJo7Z9_o1n=drsujrjafhVB!(ZrwU)z)e}Hk?7{o;*3|2BtdT4-CfuT0?E*$9k5K!ZLPo73fS^ZorF6X*M9}oihsqS8xl;$O794T((n$u-#=Nw! zrj0mP7v1oiiP?=8*w!AIrM#DpFzGtGSbYG{aLprUl#FsFfPXCt=9L*pPfJwyvKYEu zzitdyw|rWU%S^tHSF=lLLIi=QA3>kW*xU^Z9u!+O0e#jp0`BevO~YmC>vZQ;L_gwh zWYX`P|3m;W4XZ5yB~980qd3!?+%lTrc0$nKa*;Gmw@YVbCWm+F1TlDX#J#_%+F)GZ z@;jlc;MWJ>n5CGHK9MMzRRT!F7UVn+tHSoxJD3nBiYU;?(^Z~ zk5mx#Yu@C>R}uj39hW`ZjJT={I7Joj^hNJUVV0T|!A;DHA~sUpw1S{@s}>RCwhVQw z3m-9b$e#(3{kl1Wd&ZLHOrY3kz$BK6_Q)Tdwh9IDv(P&zO(I>A5ua*Ottdj`7$P$t z!Y7N$Z#hDCC#t)^s>L9hSPNYaofedY6t2qqs1iD_!~vhCxc!J%;eWP}{L%NYdQy=^ z0C-5VgQHgs>N|$qUja@jqD65BjDjv{50;YV49x}m0!29~BA2#EWc8`I0)rysU5b|f z5?>|*FRe9Y(Lf{*^BH@|Gmla}@%WH-h7XFKMRhy*^0esN4NIpEg*X;HYh1cz-y`|S zpp+K(z$ZJSEG>J&t+vGxr)sqad#C!8 za@YVhUfo>SS%j)1O?0`2+BQ0L1SzBBzqB>*uM^?YaUwr=?}1@TWFZUqX%{|s@6#qy zkP3SxVolt>S`$Z;5UnyYE3*8D5&f6Fd320{A>3-opprlknH86X81(F?X=n_#i-5yV zn${HbwI|{OBdjbpAzRx)>>-|kxq7>QA6!pF)BCR4CxGEPg}m4(Gh^O{gKazmR{wWK zAEna-*u@K-o-RCPk@3@niqTm*DQmL5^Od#%oz1lS1qs$UKt-OFO4L;F%Nhlv%W-2! zG3|RQT1PlJ3AhKj4+!J)4fs>;!D;JSJlOh`YOX1$&@{QH0Mg4dBNVjzfu%FkIn6LV zg};&8%-gpH(qz@-6SwUy@MzX0(Re;*Ct}4D*P8NiKM*)|Xef{RPfweKR_R{nfI@^F zs637bJ^)6WK|A1Csxi%iKjdn>tkh{A1u>*B)mgRX0O`N%63P;o5#OYtK;?8QYo-H-VhwFNHZk?ZWya*-GtAw2Wi<95 zV;A4C<-{}v%qLf^r5T-Q&aQpqSOjz`WZLXvsAwkz5hf9>HF+35ra=xavz2B)pz!Vf$Xf*xZ`9Q-}SXES^KzHH#f3pf*hDp2U zhZJIjy&{(Njr=yk9VI$>Fvt=!j|i54{Z%3dmtglCsZK zm{)TfT-Ogp9f;u_^TlUmY$R;Qjx+&apqO1_zD3GyTVM?J=yf(gvH*1G$3r;S(WZ#z zby{D^B5DeG!+$@YC)brQygeSgNsK9DOH6KFs7__El{jfD4*h&JCjr&tYop zXLtu1%_H<0@i|ktl7)_FQ%frLaQ$_CUQBWyas~LW0HRArF|+6;IXnCU3#sriLeE~n zbz1N()4w1wgiljJ)On<voKEh@qC$Kp195UNjlIrgIQ|mXZ^`P9kVNQ% z-Ra&Cf`lzX`(3tF-K`O(^p~vBEz4H8BeK9+d`!&w1tqQGjuZ3(7^<{&5ph&TF8#|} z1FH+*Aeez8CJ=diYk|0@BA0v>i5D^QAD{}Rj{Sx>tJXK9v+IN?S;vE-x_7w{hRJfR zBMmd)9SK>oz)Kjd4NCinADTh})D$C9`%YI&*$N{7V)2P_Bz*l3qEUo-0nj@2($k{< zE4Dj98h0YUgP=R!;SB1BKLc=PzF_1769bl{nL(g~-PXRSZItTH1hb?fMid2#>TLuR zmiv7Z0TN268|5*3`i7oe^v{uGatfk$AonTk^lN!Piit9uLOBJsoVmWA?^f?$V55O; zyMykaWCr0oY=sZ^0i1=UeOdL^KxEWX$o+4t0%L#wy?)!c)plbm9AlaR8A8`TdIiUJ z6Dkn(?;o`d(!%(5jSOTPWviZ%Mp(dHp5jUbFUYMOyM`T^$a-fI3}Ak$QVG9TNU-$S zs>;~k_)m3}VUr_0k`$6>*l=)vI{Ck&ADWI^q-N zLSN(BR1CYR91l2b$g^SDSwc%==M<45HS#sB|?lNjonO`tZ6b1fwATWCBpO=zW zg^f4SyqoL7YU;y#RL?1)jZhJRR`@<&^uHAlMKSe7yFGfO%z8E)`q*{=>HmCQvsOtu zt+;wUoR0j=w%gvxFTQzM1M{tKhMyBtG5fhjOxVSP4XhoUZpu+#mh^5pujwupd6OmaW$}*))VxCL9@&I zcnJExx_6m}@;pA@H9kyfQo~MkhPus%ez7u^=8goFk*Qa0FAC;;rKoznN0x45H;ehu zsU;dQ<9N;z5jgV!DmRv&5GbWaeShJ_%qxuGn1%PrGv?)e+aD2+E{|^D3gSCDa0g@| zox!EE)Cod@&P=n7pxk|hBMP_`rBw>)wYw4W{0h%$*wY+n1zyTt)f zL|1x%-B7;f|HH=ppS=G6!Rr1QllowsU?`=fN}_o8=A}`m?{YG?3n%`QR9?9wApLVB zYHb21I2Qrl4~Oz+v(_|pmE_RCGm;K}4nIEjR6i?G>N3PMbrzomyp0V!#Kve z$TP?2hcigV5!bhu^#5`MJ^5Cnscb#s)2om+ex9In4Sg^|^%vw9#+N6P&_54grRTVN z^Qs$0Xib#q0Enft{u4-Mdy!9i`wJN~6@MfUAifHFPVV)A_k48P&#Q(-j~Yn9E2uC& zg@nz;EpaO!qSf{8Q>2#j32`R^zL%jbB*u~ef=mNKulpBRUvIi{LXUY}vR)BZkdW3R$@^VvFrhQ7%|WLjVcWzeNf( z08xrgQ8&_sd=BL4AP!U}p={e|fhbzuxEpxDS;TJZ)q)X*hM=HHvi^;7st!=$%g%6N znSy_0kM0BclN`JWDXMt)tXvD6=HtoerQW!UwB4_ph9& z?~Cr7RT$40dk<$WFDAN33_IlvX>z^lq^U79=Y1g(Vu73B^mz7f896g?vyIV}f*f{T zq|yC@jWIyroBE{K4{2X0XKw;Rb&8rEuH=>`BWv`*&hnR*Pkxg@Bnv{}+d2}i|M+Qy zVZJYo&fi?-RYtJ?lmG}h-!$!RtG=W!E-l}xe;Z)7U+_(sW7??6eF@1U&pC4XBUCTr z)ufm|H@(tg(HmXg;H57dUy$4)b=*|Iw<**kGw;Ta->08ydFlQ=L7FLQ<|AU67A2Y= z^Fh+FN&8-y*r!33&cRUH!HY)xkX-2b6Jm;6mI}qKC#mf@!c}MrdDRz&$;X8^y7Qkz>_^lD1OfD~enqM>3WGmh=X0A_9?z=;I5O^1A^<)!eZ$ zu;rav6#TI`SmNft-%@v-$MCE6Ms(2d2m7CpA;!U8lq^qCp-^oADONq^M;Mz|gA|rz zc*_h8xE&~yW}_0OE^Y%VV8LrsYH@SOj~#$yf;Y1KYk41F;v$A91fWC9c0Ovg@|1`W zP-b1sqX?CvzVXW-M@?HKlhLLk)pqNNDXLW({G53)yg)li6ssvh2`G0Ytm7ImMDRSKy&)J=h;3wL4pa7l&sAMMf5H1c%xG_7<;NKpmeDUaew+9-y z4W;7-09-yKMnxrM!UV0shx9TMWW4@!n|K5V>xQPVJscc8qgT!H{p|_X$&ZZsthf#BWL(tA z7ai6dchx&D;FH!R=bxOnz=d6f;!$5W-ev+>!^TmA&Ay#6nF_D3va#)UKbQY{Bp=1e znW#7>`r1wQ2=CohIwSs2is(U)X9HLU^(SPM$69oSQRfIF7P{|!w5u(U_ayL;8uLLP zGzADW>XPwk&b|@K(pCQmXtZAjkN7Zr{0j2QR=D}hWt7sjBX%6Q;%+HxV_yY&HSfHi=Sauy-4{QZONrl|Fu26A!p z)kf0zp9VOFrtjiqZ4pGnU=kGIa)J4!m-LgNSq})q6dDhw?%2HCj@DUIfWYpm>bay> zMa@Pc6a>T4RCF(A-q0;JSQ*b#?-7|ygVZPC4ZRSNpNn{t(Lf7BzjSt{EIRV@fA@#V z)>G(mU3{_{=&B`o3xw0!;&tPvZ=69$#&wM7T7y2r_jOqw%ILnQNjCRzkn_!-0eutzm(Xb6@-Q9(RKh@w&o|u9| zcy4Xc`lVrbaodD9pqbEZ^Tx!zG##J}wO^l%HW-WfFc9`({*T3|rPH?6s(dzE!}~huZHDBY2?*-#ii#vgP|DlTh#c z?sYzGv9E#i)_i;93v6CC%A*11)$c&wI!6OBlTa6(A2|YUL`hAmX^xwJ3J=%OI$lCjIrIo}Tw$E)Zz9>V`R7n&%eeqRcfHEQ`|3 zKG9}JzPz7l^YV_6#8-m7UqPYL9=xS&&{#D)KS?v6D5o-u?xhx;BjG2vq(ek1uhvT} zL~}|Coy#OhJvCdG;4;@c$jlfVVO()f6^4uphG(QP1GlcefavAK&4?5yL1rnK}3O;JG4E50*UN34kaU<+(-l&dHx8eNyArCwU5c0E(m(FUxS9u|iD>2oA{)PL>o8hUH}AEI5aV3qe`phSKE zAku6QIhbsVxwE)tlpki(BBFLGMq2yZ5RICGoN|^rbd&N`g2jcXEJoTxh{+|_fH->? z_5Q11^G*#drjlXgbMg2bW8MEx0zP>{!n z>JA`FUsuHEXxW}g?q449OeZlQ1gV*ewop9=VeNXC4C&u|m4&5J#P`~011k7m`9$xs z2PLK10=1a4#6c!8&wG$o?M%7qEhXR+DM~RAs@YeOkm=~J&_3ZU+GS|DDisXBCM8sB zBklLfYBJB?8cVH0&%rDraM;Ff3Y%XFr=fxhx29e+Kl?e726+lowtz5B(*Tt{{-zOp zRM|F-4Lx`Uk=-@x8W@VO`;T}Knl<{%BJeWB8|^6BGF`_dRDHhYoRJL>+7emIk29ySr8NI*-&$uHo0R{tQVr~G_yWSt=R~$e_HX>78B?dB-rYQB~ybw%_W804wH?m$tv+HP(d`Fxjli5tbLD{m{!U={DIcHV6EEyR$Ud>Cu#IKvEL5a*y?yA8g+ zvvDA5wi@}lh3<<(&$i;JKlXP*TxRFXI|LJ;7m0^PPNXKzX47*>)KASbGUOt?qvYJV zsfLloQ4R+{HTj+pc?Nbf~Jf4F={_U zSTPR>wc}YHNl~>=kT%k^slrVxL>%l*I+5{}Y68e4a`GJawMX2^ z#_hSB(uSt_NSqy){_~5s)FU`A4mAT`!AN`<^H>|OqYT=l(7MG-ZCBM_ajsU7fW{yX zQs-N+^f}m63#oWW9@n}bU2G=ZhqrM{*z%BmdYX9ZGH-sJsLcK zvhvZ)qW}W@kMHvZsaEJDO^~~I(n)|D4gc4X_IN!YR=pXEv;atXH}=M&+fg?hS_bo|HXlp1t`4LmA}MW1{q%%ih(ZYEFoLK~ zNx#VQRAFZ?g=XERfRC}e+W{5mG-6A>hrai-9ak<XRsR{)5fQaOUbDINiZoFse!wJ#Hv`8&8&0^(Qa-`}n zsZ!y#@g2B(8rG0WpDG=uszWQ%XS{IBY7S(7)|s51Dvzo;9fYLN;nsjKt6)rOVhr2bbI*fT%zyZ ze+JUIC>;9zY~g?tn-sUKrI_AjUar_#Mo}i~Pvn!$4y+h9q(!aC*;GyRTf#;B%@GFqR z8vhUl<@RRhooEiR_~W~4Ku==xOkctteVzs;JkIqhL&E=+&)u77t>N#2Or$1PMsD*u z9wVZ9)A)fvhzuwmuVzkSi%WM}$ai#{q!Ab2QCpD&)g4!=^43$exp6?-3{Lml+yQuPT^GAT`N*{w7sT`*oON~vnwsx7U6E43di$Ftz-@0yH7?3 z3)fX$FYS&RuZ$^SE2rjVfcoYlSO~Q{0dkt#4&J3W%ltjfwQ!3+gTmT1#nAoWG8h3~ zRiA~5N1#EsZn^la-rh)mCI5ZZ+0;PXfX(kst{KeT@ND$3HG~fj9su;R675@tjf@PS z_FZwCns*;Sh|%utg}M*R8K&t$pIoSK=HOuz@wWpvyb5#zk*mQ|bmwWto6(dFx4}CE zH!FGnJCI=|)dL&OAu?$Bho5&>mqA|H_x#X2MGqdK?hZ9Ovc3kGfI1)y)Tg zFK$=-{*9nV{0L#75eD;#h3oEHOa11K*f9qNy7O~*JnIc)=;nYq9rtRjh6%y3%7L>e@}`ukssy!bZ>lMy=%FqC34!e*8adF0z6X1Nf!WlPYQ^FdR$d&+ zw`+yq?CEx`=f29^&w3{Gl7DLNyP3!hw(|Laap##Ff^D609kz zO)k9T(ZcTF?%tVU`f}bq_`&@2vo!Q?3=Z1p>Ds!`eGCX{=?#~|?HOdg)CIXJVPNO8 z6w2|M-DX8Bp{|2LjEgS(-KX5v0bJ8F$n~Vjc*dzvb2-=+8#+)D_6r^Yr8hv@_yQpG zZy8g{Z$ayYf-}z0R0H9k^LRk0&y`XH7!te`i6b zs>#L6Xt(C-4ZQ0`^gr)*lbYcHWGkDRB&O%Y3XAI)9k3~xxF}+XMr<@plI`7e7D6M3 zr1jK0-hBqPZ8X(jl6umY`|&8kq%9Xw%uVnCN&7JR)fy0J8MY;_EYO^mvW)0VZ2+R} z!Q{B4q7-TY=z$YKx?5T!S>%m^uMt*jH#%2NOqEnmK#axh$*DhIbl(mcxuN@YUxkNf zp0C*<12oOc=*Ejq(tAv6Y(R0R9!YVb&?2o1vRTj`5M1>B6R28ZHtFwA>_gW7m@mHZ z9avn!vj>QBP0(Bi*h}&@)i7QSNWr}DO0T?HG>!rw4zB3kYMl@Teu`G_2PMf!^i0!k zDYy3f*7|TR)Sm?j-NwyjG#M_J`U#G0gQXGS$f-)qGSOTxNR70^Umajqo+1_qeEB9e z%gWy=6e7ZaYwV$U@4unXz|TD(3oftkP!k-UrkBBFb>oC);#&=7m-NxRy}tCwHzvO6 zkD}_V;6XmGUT0Cw$sK}b!fMB50AJk~#WXZz=Uz)Ls)-Pvq<9JYs5K4yC@^Y#Znmwc zO-;(KcT#1K-a7@FC|1N4twL0vm^xzz9H)9d949YG4ciFiu}5%}gXW375TG$*MfV6l zsN8%--F5&2k8%bJUw>H`yJlb6qX?YxHI%M86tl=lqo@#OR~))QVt6LWQMt)F*Q~s= zq!u+yQyPct@oTi*{%GB7(iGxoiyHq0)v1hQ9ofHi51yG+M2c_(CdUY`Zh7d^YN{7_ ztRri%QRG@mQBVxKj9j}SFNfybk%OM_paZdIC%cuD$tQh8N<6BeNk!IncK*pj>jfbM&qfVmSreeDBNg>zwF^ zD*e^bpVg<7!>z_Y@i~v)+pq6-yEU30o34JpH0ks<`04k(+cd7}Ce~AE4ES2&#Qq9UuQ}y`O4I!IS1_GtH{BPgMrdK&yVR5Kp^+msJL{hr!cq}UJ z;1fYshyc=@1=ri9ho`5_U34=~$||Uahu;j&tjkcv&CyvQO7>?0V~IW9fKubLCp2uMP{?nv}Rr1ZeY;69i==+mBbc9A7qEy!K#^SGg#H6FqCL7x^f8rFi4PG%LT9d;g ze^iNbz<}eL#Pge6bqcVjHHW;?Aa9u`6#fyKX;Op}2;96K6JPkdW@XA92{zB@;igvD z>kQ?WJA@OP3WIYoT&wJr+4AV}05Q+o7OB=MPwsv`gi@AXW$B|&ByF(h?5C=mb*9sE zXk;GYs}A{LU{v-!>?1MYj}Kk!jixR%H~X95YgA^nU0MxNyjkh? zWT_}m<^E%PLE2KPhzGdcx@1zrhoU+W*4;GWnJZ%N(mW9*%G z4OU6b3%495^rr9SHPTI$c^H-{bU*6Dbp^V6_1VDo<`Y!^k#jxJ1SrhRb*KvHi*|MS z=c&)?rRjQ2H^k;hQV4I~?lvwDeYL= z6&(RtgM4%Al=AF?^H#PTeRe=Iy4Nt_$be>Ig}vDI@c6plFV!E~jZtyZn~wDkm|;|# zj7oWV2NohN(L>yB#`?YuwX9+i5fUA zcynlXbT4o3*YZX|D@)d_w~j4G`jiD8)Vu;Chh0u3<$^Nrp3-q`k=VQIOnf=duAFGb z0XH}gslKti)UVHx-1c_(c<{i%9iXuR`R}@rD|ej~?`0FTB8mih=lovJb^AH)GIoNF zRG!$cAWs-+p1QP@x47q{Qtgs~(w+-vZ*qn!Iop|ZCRU^`X5Z_ZK7}UBb)Ydqs3IK{ zpZkLx*LhMUZ(fap3qBi(7&jn%HveB z$sRjbH(zQTcRHcVt&>$ggMn6A-c+Y%#38tYYMgpanztGuhY?pQ3KZiE**!2T(oo)4 zBCf_7D1lMIYcGU(U0fk?>u-6Vx-;iNP>Hm)l~Tbg!qqy7YWuqbUn1$;i^&{5L`5~B z;hcaDyG;W~NQL7`l$rcF?m39bo|T=PHh&iNr0@V7U4yc4a^DJ^V}zvDrd8Fbg)k_HM zCI424vi^Kx(sDFJomWZnQsL$hc&&CN2A6z5~1J4MGO&6 zZahQpQ*X||!NuS(Jps*-A>cBC9gf6d>A)ff1Ro@73*vrGDr8@Wo@(8FZ@}X^>yHA@ zm3)WIQl3%1IQhjo2b3&u?q@;A5rX%l zX%_Jf%3fSTTtRr3<%_-_rBB!?iMFUiIeQUbPrX?gpuGtkUi#zQ0Mbj528bM|LY0?G zQiWLQeB*x?)Ww87;CdsRjIdkjlvQ-^$8RcKL4KYz1~-r0Ohh~FlT;r^{WaK48t!V! zB1qP_X4=BzpR>iM;OYtsy;L-9h6P zaLZVK6r1km^LAzhBiyMH$JQDGQ!7PEBu{%g8XA!F7`$hs$xNVtRGWIsnfbEvorH(u zhENV#k7ig_J9S}#E^plZg78=3#}KafEj^*Xkvm$303bq}Bw#3SX!7qsi^X4wjmVGc zU!eEW@<iZfa6OME_BVPFF`ui!p9o-7(#P5hw4cpX+&7wJecqkJDmA705h z#if6+taKyGsyf+hBM=lxxiXxzd#D09s^fuWB!8<#_%5}x;pS)|`?8pY<|wOyD1ZJm z+MD6@450SrcpWH^;=GOvi!pc(@}G`o;FyG z=~oK~iTYnyy#(hC6fNZ9gw3E7J@v-OPE|a;2V86ZmI$VLg>2BBhN|@?W7FrLE zv;h`Zk+6Mr3c_RYDaRk1ip)8_Pjf{Op!rpY(iFypfVwZ#u#Az33zqcx?~S`8^u0lvSs9_>qBx{3NauGNfv`-)uB8!47hXNTGTnj`B5+`3AR z*jV-+&{Vth<^Dd|1kM4?#uov%L@Kh5TEG^jd0%~ty*S+zc5t0R@U;~J+oUxlTPL?E zRXoZ3^Jx4~ySydqguIRMq4>fq6NRc-r?VVaWoLf*+NM<0SmTo*f75(@YFdQygl&$c zc=uE4ZqVnB-lY z+bq28){gF_1GDg@`%DsIHQ6EWkq`5yey+6G5yiZ917ZEVy${NpUIZkZJUV&6_h|fL ztze0bmaKFI=}pnS8>%w5cHI&Y@-L1myU!@NPOs=Y|<=O6mc< zhJOTI5x*Hc$no>QtnxXCYc5783-x8L{!Y)XxMsiZ=FM6w?9a?F5F?KJ%zYVq7Zii- zcfV0EknAkwzwP-qmYKOHyT#(vvTxf56vj<~6RgoN+}Dq&J^nNMDw>Pi70^`-_rzSD zmdo$~|2D|%_o?>UMX*_@?C2I^^H17-eDjqVd{L-K6FjZ=DqjX7Qk0$~fh3y^WY83- zY5w;xf~Y%GBRgg=+LrRL)bjJDKN%)f{e1u?*YTm*CYG8KOYntr z6L4D}CE>JX)KN*+^eXb^=g@oPNpC@6_?$H(kxZXZ5&P)SckY&FR1yQJ(+@l~$5Q;q za=ZVB1T6XxTtvDT`;FC9c6@DKG*Row`4%znpZc^uQw+$&gPH=sjp-)#H?UuLwK*c=|89SH|a$ zQx6_r&Ti?*Ch)|bRfY%k zD{EXN4eFpAo*?$T^gL@|glo`%I#1R;W4Mk@Nx_JtLd{5ZOB8OuySz#LYk8B{R!deX zxooyLnN^7?nk0t522t`0_-|UP4w$_h?2mawTOhzae6U<+qQDAv`HNCEQ6Ij@cOlAl zycdBJ@jO~-uHDkEA)jj0`NV@H>=sg4lxP(8*ep5V;M6<*M2~sJH9p_sFTB2d{~Dfz zfSQmK$~MOO+;iOc7IGJeeDXV}EPU_HA4ENJeAG!=G&CL1t<-VI#WP!pSG@GR7zk`W zd%Y!>PnTyQq}m3EC=ygRd#EBjMRM&w-aWX|2?AOE z0nAEo4i6|?D$jn)DeFK*qq=l?qnMMWqo>*M5nUUOiY+#(TVlmUq>G@BVmZNIwQU8J zIb?qK0P`su8lwz5kd!p13N>%#7fkdJuAvhi_)pLRJ*3Q9UlMsK#^P+yBz*mUb%d6VCiRF@Vofm)Na z-_JdHQWBfrq4_cr6ltV{yZkS!t?1BFUmiM00b0IPKBt;1jf5vFAevm9EF*MX%PvM0i6Ux$b|tTFsQYdszDagLX|ufkM9*!*VLAa%d^G~J6!CVk<*?dH+ig@= zY6J(|`$=8oC`?bEE9}N`Af(A92)7?Y=w&CNep9G1T0+eM@!DL{#xh4T@D|}2Klm*Y z#{v7t-^vrX#z|_x#BNS}z!k?%(eo9s5sxG4%CxS*V(dH!3-+mKAP32F*r#GNyMMB> z(AO7l-?9zi$M!vl6Zwhowr)@$!ZLg=gxHjZWM6^r^q4pmL~%(Q9-xs>S5Rzp2?H_n zsx>bnT&tms9pP(n9DDAJ7p(8Op3ak?YDAAUzWmjvU8$1Vp*10zk>c{|SRBq%)qvqT z6$+8K#;%6_$}aN2iG3HL93&gMjP$}FF|5l!I8ZlyBgy7O`fh|T$I<%`Qv#R28R{!j zNxWlo_H*dE_>MQHmI97vlpfAGvCo&rSKQ3c+-jsX?P1h!`6#W1c?^exns*$PCLxDf zPXAq~C3X(?ke0=7D6nvWmZFEYi_qZ)Hm?ZblYCc&WBuR_EKk(%_@8C&dc{n?-(3Zr z(|4>8rK;2M%(t=#G#(?m*Xpes9@=T!Ph!BQhcVEA)4lUzI46du8$2;!cYcB(&S7UX zO1GT2bzNb>i%~}tUTlg1>7=h8Shha@ZkimL;Y~u59tIOy>ldX_WA%`%8!V;nikDdXwS)olb2p)(|u91-y+Zlokq@aau@w z7UB#Trr5l!e5v+~BxDEsiaorwR3-Vqaaly%Bbv!<=0jDgBy6x;@>V4840cfRtITe! zq>M1~KI(3%ZKlR0eOJC)=2U72#h2qb@?6^DdD7iT^WGJoK`8wzGv&%fLk!>wk)E{T zq>yl31848r-TC|$tqytz%NudvCFQ!*gP$Z{6_3@913ope^%jUqOFe>R**}PS9Jnkd zRscfK)CD#v8t#K=5-Hm91ck`V&t>65VroiT_C?vUfjOT4LGazYUX3!(0qJ=T^oW4@Bg-kNehultUYCE)`e|p&gNStN?W_|NCYH1EyKYfku^=I9|_9 z(Y+`{GVNLpR9t4GV6(sa3DjQ~oLG$s7$MDc`pqZ&{Nw}Ms)o46^wQjldofk+}rxJ>} z2llkF$pRt$TX5j7Uur*@zVDH@A{bk*muPi@&vG=)r7ZIcc#!X0G^+wpb-Mj3b7JZq zv`8EWVLsr)6c*+ZWqbyMDd61gASrJna5nmeo$bTm_wTL-yzm%buXE?d7Y`X}QqJnz z^OLq5f*|>kASh1K(lJiP(vf>fs^q2TUk0v<$=UE9^l1UUkoh_bEh=gCAlsiI<`vN= z$@CIe(;l*0Pm#jzrGY@^(g?cDRELPE&{#P&x(V+n-$?w-z(deAu0o;!8IsrFVX9&w z*emjhE)u1YA9uY%%}R&-(>H7~x*#*Pw0UzY|3O%#rr~1Z*1tl_cO48R|VWs>(L6B&o;EkSyEfXS(5!i4Nt`WxI%&4^}5jZwafsZk{0;cNm;eo8-Rg9VaEwfxYg5UW8QDXN%7lEH!N0+KBv*TgfNvy5dUVMyXfV{jaa*~@hs$t!`5j`TeiQ-F>ycJ`j3l>9 zP&XQUL8s^K-OU0u@}=(Q{a=EzoaY=kZug#6hd6HBa42rL8#io;SQMd9!e+RN3#c!o zeZC$3RWO`QWlx~k7bT63t?z+pP9d#`q1DuFIpQmzNgJP?cp~T!z+5g`g2z~w{0Y0M zQ$AyuknQ8BoTOUM3lg)Y(K$QC?YLX5hi)mSvpa7iZtU<&u_)t?o+I4b1-}ld-MCkO zX0R6-6qmku;oaT8HG!!p3|0`|r@5rl%l=@BXFpE#CHRUfTJUi)@NnLUUsY{Xb>_QH zZq@U;pIuEe=4L2AqZ4}5gB4u26%?n=8EXK^oF*|m?~R>*k*6klfj!`%rb&tb>$zkyFeeLs}3lA<~WPV53-} zhjQHpEqp_`ctrewIRJWaHN895-7wb`>KR`_J=m67)#cm(HY zA-gE8|#1e%2v2Jwruzw1gao7{?q;chc_#dOn!KFKHo5+Mo`H z&X()6hd%YHVC;G*Jt-_K1DK}{~-6X=wj#UHvl)Z@AW|D5cvD~w`q z=`|OHvZxkx946qJ_2Fo-t%ZXFWw5I{Ov*Rpw^^K}v?mZ`gR0M~e&2QkM>p@M)hmAy z&oUXTpX<_(L8zLCQGH?^Am$fKeJ>3}3;93IeR(w1d;jn5XgCq-L`vl7m=l>QQj{h` zI9r31BeW~crld^OK~XswHj=5fu?`JNB+3|@2u)I+2-zjEiwxQK_1-z=jFTBmhd?EU?IhWGn5y@~J?c=k&%%vgOdvq(T%}7! zN@v&-Sp0NBJ!R&KE_BFK8$)5B1y9fIS^07)2bt&#P-_VL0!#D-Hp0HZP8uITtV{A9 z=oXi(GTjR6*>2zBhC|zem-a772T<9S*eMAB2w6_w+^WlChhc@62WA zz3+o&uz1D5qu;ozbbAC|{emHiAPk*v$tNXl=ZbXJ@{S*fT6N z;ApEvH05s_(!Q|>Zn;$ROY{j@FEl%=!6LQ8zYzw#Q#4-aBi8TE@$JTIdIB64&p|qh zG2YsZhm+@)qfPh)UG|-1RpqS9wp-m5EJuF__u#o>7tX+N((d;iqSGNM7iPxc5$xM= zF#5|V?&nU#N`JKx1(eTzqiCMb(KyamJy6ILcyh?l3 z`u(_=YtWFO1DnrWtdf81cp(Zq_^ApEy!=}F!k`*^|EqK296}W8(!UIvEc8GY1eD%z&YrIxyQr(UNr04|k$ojDf3q!H>@sg3slTWxeNo!YwuIC$lisFHK)b zv~0682WEm`m_BZ{c7%&@i555!glEC6kBB7i+L(aS92Wr6zM`pgi%f1kQ2idjLF*b( zH~NTDX@*j9R>z8Qw?m^UJf|8^aF-$_ON{(YFGo^RrM^?@sWW(@$BOYTcc;-unORp%_Q9Yai|dzPHW4pSQWCLE z!b>|}C`TB?8uZBP4oJjw-!&AY4I(G$0n|7c6jbVU{B#*&P*)N9aHbZNoc|&FU65E$ zk4&}YO%jk(n6#T)k3R#eX(+k!2(-(w!8;o}Xe4%0APx%Qy&gJg) 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 k(9!?5KmIiHvtYvZiXFer4g2{reIxTV)~j