From f683a084f377b4bd5a332a5e6e18d1cd2106639f Mon Sep 17 00:00:00 2001 From: PM-pinou <2504420230@qq.com> Date: Fri, 24 Jul 2026 12:38:00 +0800 Subject: [PATCH] fix: nl_describe variance awareness + timestamp formatting + AGENTS.md update --- AGENTS.md | 20 +- analysis/management/commands/run_pipeline.py | 2 +- analysis/nl_describe.py | 22 +- analysis/views/globe.py | 5 + data/geoip_cache.json | 634 +++++++++++++++++++ prototype_cluster_ui.html | 356 +++++++++++ screenshot_auto.png | Bin 0 -> 82155 bytes screenshot_home.png | Bin 0 -> 63619 bytes screenshot_manual.png | Bin 0 -> 64322 bytes screenshot_run9.png | Bin 0 -> 93361 bytes screenshot_runs.png | Bin 0 -> 59867 bytes screenshot_upload.png | Bin 0 -> 64322 bytes server_stderr.txt | 238 ++----- server_stdout.txt | 61 +- templates/analysis/cluster_detail.html | 29 +- templates/analysis/cluster_overview.html | 5 +- 16 files changed, 1114 insertions(+), 258 deletions(-) create mode 100644 prototype_cluster_ui.html create mode 100644 screenshot_auto.png create mode 100644 screenshot_home.png create mode 100644 screenshot_manual.png create mode 100644 screenshot_run9.png create mode 100644 screenshot_runs.png create mode 100644 screenshot_upload.png diff --git a/AGENTS.md b/AGENTS.md index 0507a56..40e713d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -354,9 +354,17 @@ runtime\python\python.exe scripts\column_survey.py --csv "data/*.csv" ## 近期变更 (beta-clean 分支) -- views.py (2000+ 行单体) → `analysis/views/` 包 (12 模块) -- tool_registry.py → `analysis/tools/` 包 (17 模块) -- 删除 `simple_analysis/` 模块 (已移至 master 分支独立维护) -- 工具数量从 27 升至 30 (新增 export_entities_json, diagnostic toolbox 扩展) -- 模板目录重组: 6 个分析页面在 `analysis/`, 6 个功能页面在 `tianxuan/` -- 新增 `analysis/distance.py` (距离计算) 和 `analysis/nl_describe.py` (自然语言描述) +- views.py (2000+ 行单体) → `analysis/views/` 包 (13 模块) +- tool_registry.py (3000+ 行) → `analysis/tools/` 包 (18 模块) +- 默认聚类算法改为 AgglomerativeClustering +- 移除实体概念,直接对原始行聚类 (entity_value = row_N) +- cluster_detail 显示原始数据行而非实体画像 +- run_detail 新增全域 SVD 特征分析 + LLM 工作流时间线 +- 3D 地球侧栏复用 `/globe/?embed=1`(iframe + postMessage 联动) +- UI 全面中文化 +- 非阻塞启动 (run.bat 打印 PID 后退出) + +## 待办 + +- [ ] **前端 UI 验证**: 打开 `prototype_cluster_ui.html` 查看交互设计是否符合要求 +- [ ] **更新前端原型**后,将验证通过的交互逻辑合并到正式模板 diff --git a/analysis/management/commands/run_pipeline.py b/analysis/management/commands/run_pipeline.py index 6f761ec..d992411 100644 --- a/analysis/management/commands/run_pipeline.py +++ b/analysis/management/commands/run_pipeline.py @@ -69,7 +69,7 @@ class Command(BaseCommand): run.save(update_fields=['total_flows']) from analysis.views import _run_clustering_pipeline _run_clustering_pipeline( - run=run, store=store, entity_ds_id=ds_id, + run=run, store=store, ds_id=ds_id, feature_columns=feature_cols, algorithm=algo, min_cluster_size=5, run_umap=True, diff --git a/analysis/nl_describe.py b/analysis/nl_describe.py index 9f89418..15a5de0 100644 --- a/analysis/nl_describe.py +++ b/analysis/nl_describe.py @@ -285,6 +285,7 @@ def describe_feature( feature_name: str, value: float, std_dev: float | None = None, + cluster_std: float | None = None, ) -> str: """Generate a Chinese natural-language description for a single feature. @@ -296,14 +297,15 @@ def describe_feature( The feature's mean value in the current context (cluster mean). std_dev : float | None Optional Z-score magnitude (``abs(distinguishing_score)``). When - provided and >= 1.0, appends a deviation suffix like - "比全局均值高2.1个标准差". + provided and >= 1.0, appends a deviation suffix. + cluster_std : float | None + Optional within-cluster standard deviation. Describes how spread + the values are within this cluster (high = scattered, low = tight). Returns ------- str - Natural-language description string, e.g. - ``"中等数据包 (720 bytes),比全局均值高2.1个标准差"``. + Natural-language description string. """ meaning = _lookup_meaning(feature_name) category = _resolve_category(feature_name) @@ -322,7 +324,6 @@ def describe_feature( meaning=meaning) break except Exception: - # Fall through to next template on format errors continue if not text: @@ -332,6 +333,13 @@ def describe_feature( if std_dev is not None and std_dev >= 1.0: text += f",比全局均值高{std_dev:.1f}个标准差" + # Append within-cluster variance context + if cluster_std is not None and cluster_std > 0: + if cluster_std > 2.0: + text += "(簇内离散度高)" + elif cluster_std < 0.3: + text += "(簇内高度集中)" + return text @@ -380,11 +388,13 @@ def describe_cluster( name = f.get("feature_name", "") mean = f.get("mean") score = abs(f.get("distinguishing_score", 0.0)) + cstd = f.get("std") if mean is None or name == "": continue - desc = describe_feature(name, float(mean), std_dev=score if score >= 1.0 else None) + desc = describe_feature(name, float(mean), std_dev=score if score >= 1.0 else None, + cluster_std=float(cstd) if cstd is not None else None) sentences.append(desc) if not sentences: diff --git a/analysis/views/globe.py b/analysis/views/globe.py index b460d62..b2375f6 100644 --- a/analysis/views/globe.py +++ b/analysis/views/globe.py @@ -4,6 +4,7 @@ import logging import traceback from django.shortcuts import render +from django.views.decorators.clickjacking import xframe_options_exempt from analysis.constants import GLOBE_MAX_ROWS from analysis.models import AnalysisRun @@ -112,6 +113,10 @@ def _extract_flows_from_df(df, MAX_ROWS): return flows +from django.views.decorators.clickjacking import xframe_options_exempt + + +@xframe_options_exempt def globe_view(request): from analysis.geoip import lookup as geo_lookup from analysis.data_loader import load_csv_directory, load_from_db diff --git a/data/geoip_cache.json b/data/geoip_cache.json index 9ff8287..355651e 100644 --- a/data/geoip_cache.json +++ b/data/geoip_cache.json @@ -45,5 +45,639 @@ "lon": 77.0, "city": "", "country": "印度" + }, + "anon, hosting": null, + "-108.418446": null, + "-63.303819": null, + "156.494253": { + "lat": 34.053, + "lon": -118.2642, + "city": "洛杉矶", + "country": "美国" + }, + "174.324906": { + "lat": 43.6425, + "lon": -79.3872, + "city": "", + "country": "加拿大" + }, + "91.251045": { + "lat": 53.55, + "lon": 10.0, + "city": "汉堡市", + "country": "德国" + }, + "136.838644": { + "lat": 42.3223, + "lon": -83.1763, + "city": "迪尔伯恩", + "country": "美国" + }, + "-135.232683": null, + "134.708535": { + "lat": 45.4763, + "lon": -122.6408, + "city": "Portland", + "country": "美国" + }, + "172.779207": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "76.375007": { + "lat": 35.6507, + "lon": -78.4564, + "city": "Clayton", + "country": "美国" + }, + "-37.054377": null, + "58.368656": { + "lat": 35.685, + "lon": 139.7514, + "city": "东京", + "country": "日本" + }, + "-128.312338": null, + "-86.295682": null, + "-83.710197": null, + "-117.654327": null, + "-94.931072": null, + "-31.118326": null, + "41.94697": { + "lat": -29.0, + "lon": 24.0, + "city": "", + "country": "南非" + }, + "-175.557379": null, + "None": null, + "90.484378": { + "lat": 50.6846, + "lon": 1.7610999999999999, + "city": "维尔维涅", + "country": "法国" + }, + "91.136808": { + "lat": 50.8934, + "lon": 7.8856, + "city": "Freudenberg", + "country": "德国" + }, + "98.398423": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-37.351993": null, + "108.8728": { + "lat": 33.5363, + "lon": -117.0439, + "city": "特曼库拉", + "country": "美国" + }, + "-40.490238": null, + "-108.320482": null, + "-42.599081": null, + "60.847895": { + "lat": 30.2936, + "lon": 120.1614, + "city": "杭州", + "country": "中国" + }, + "-70.344735": null, + "-17.065978": null, + "-17.594761": null, + "3.748318": { + "lat": 41.1412, + "lon": -73.2637, + "city": "Fairfield", + "country": "美国" + }, + "117.90784": { + "lat": 21.0333, + "lon": 105.85, + "city": "Hanoi", + "country": "越南" + }, + "-178.325477": null, + "47.034714": { + "lat": 45.3155, + "lon": -75.837, + "city": "Ottawa", + "country": "加拿大" + }, + "12.6356": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-4.376563": null, + "117.415791": { + "lat": 21.0333, + "lon": 105.85, + "city": "Hanoi", + "country": "越南" + }, + "-95.943745": null, + "115.811466": { + "lat": 37.57, + "lon": 126.98, + "city": "", + "country": "大韩民国" + }, + "82.858229": { + "lat": 54.5842, + "lon": -1.5631, + "city": "Darlington", + "country": "英国" + }, + "120.177108": { + "lat": 39.8897, + "lon": 115.275, + "city": "Hebei", + "country": "中国" + }, + "12.054574": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-112.238338": null, + "-161.091649": null, + "24.207799": { + "lat": 40.3698, + "lon": -80.634, + "city": "斯托本维尔", + "country": "美国" + }, + "-148.31237": null, + "-132.223679": null, + "76.252382": { + "lat": 35.6513, + "lon": -78.8336, + "city": "Holly Springs", + "country": "美国" + }, + "104.839037": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-147.319447": null, + "-137.111721": null, + "-107.76671": null, + "-167.802595": null, + "168.500812": { + "lat": 29.7176, + "lon": -95.4188, + "city": "休斯敦", + "country": "美国" + }, + "-19.640731": null, + "-36.115066": null, + "-31.172609": null, + "4.746775": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-128.714202": null, + "-95.66714": null, + "-19.935247": null, + "52.225763": { + "lat": 39.5645, + "lon": -75.597, + "city": "威尔明顿", + "country": "美国" + }, + "-39.370987": null, + "162.006633": { + "lat": 43.7807, + "lon": -79.2855, + "city": "士嘉堡", + "country": "加拿大" + }, + "51.696746": { + "lat": 51.5, + "lon": -0.13, + "city": "", + "country": "英国" + }, + "6.673336": { + "lat": 31.5273, + "lon": -110.3607, + "city": "谢拉维斯塔", + "country": "美国" + }, + "102.5503": null, + "-144.964956": null, + "-104.457778": null, + "83.087052": null, + "-125.101539": null, + "90.262005": { + "lat": 48.9018, + "lon": 2.4893, + "city": "邦迪", + "country": "法国" + }, + "-83.715609": null, + "29.378547": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-57.090496": null, + "142.184372": { + "lat": 44.7314, + "lon": -63.6482, + "city": "Dartmouth", + "country": "加拿大" + }, + "165.297813": { + "lat": -33.9167, + "lon": 18.4167, + "city": "Cape Town", + "country": "南非" + }, + "105.875829": { + "lat": -29.0, + "lon": 24.0, + "city": "", + "country": "南非" + }, + "160.97215": { + "lat": 43.286, + "lon": -77.6843, + "city": "Rochester", + "country": "美国" + }, + "-76.327692": null, + "-179.768984": null, + "-135.649249": null, + "-129.397466": null, + "-159.604348": null, + "123.957119": { + "lat": 34.6836, + "lon": 113.5325, + "city": "郑州", + "country": "中国" + }, + "106.508142": { + "lat": 28.55, + "lon": 115.9333, + "city": "南昌", + "country": "中国" + }, + "60.737607": { + "lat": 45.75, + "lon": 126.65, + "city": "哈尔滨", + "country": "中国" + }, + "12.851572": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "133.109702": { + "lat": 35.69, + "lon": 139.69, + "city": "", + "country": "日本" + }, + "97.468122": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-49.099249": null, + "31.114424": { + "lat": 52.25, + "lon": 21.0, + "city": "华沙", + "country": "波兰" + }, + "49.613214": { + "lat": 37.5985, + "lon": 126.9783, + "city": "首尔特别市", + "country": "大韩民国" + }, + "-76.937967": null, + "24.350375": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-57.188778": null, + "-129.431676": null, + "-136.186649": null, + "-61.694727": null, + "-90.513611": null, + "91.194896": { + "lat": 49.5333, + "lon": 11.8, + "city": "哈恩巴赫", + "country": "德国" + }, + "132.327773": { + "lat": 32.404, + "lon": -86.2539, + "city": "蒙哥马利", + "country": "美国" + }, + "-112.197533": null, + "155.022955": null, + "162.854691": { + "lat": 51.5, + "lon": -0.13, + "city": "", + "country": "英国" + }, + "-52.303734": null, + "-37.91953": null, + "144.662392": { + "lat": 37.3762, + "lon": -122.1826, + "city": "Palo Alto", + "country": "美国" + }, + "17.315107": { + "lat": 37.323, + "lon": -122.0322, + "city": "Cupertino", + "country": "美国" + }, + "97.359727": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-37.814213": null, + "-57.066252": null, + "170.670964": { + "lat": 47.6689, + "lon": -117.4369, + "city": "斯波坎", + "country": "美国" + }, + "19.237916": { + "lat": 42.3223, + "lon": -83.1763, + "city": "迪尔伯恩", + "country": "美国" + }, + "-77.426219": null, + "35.273579": { + "lat": 42.2776, + "lon": -83.7409, + "city": "安娜堡", + "country": "美国" + }, + "-29.56673": null, + "-173.438083": null, + "-164.691055": null, + "-140.463216": null, + "-168.663276": null, + "-138.543279": null, + "-47.142859": null, + "-102.389184": null, + "24.754033": { + "lat": 32.981, + "lon": -80.0326, + "city": "Goose Creek", + "country": "美国" + }, + "-109.476174": null, + "92.836244": { + "lat": 51.5, + "lon": -0.13, + "city": "", + "country": "英国" + }, + "2.089979": null, + "82.41569": { + "lat": 51.6578, + "lon": -0.3954, + "city": "沃特福德", + "country": "英国" + }, + "-117.765392": null, + "-112.753899": null, + "-147.563834": null, + "-27.4301": null, + "66.656057": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-52.329152": null, + "16.783619": { + "lat": 37.3762, + "lon": -122.1826, + "city": "Palo Alto", + "country": "美国" + }, + "-160.668335": null, + "-155.782242": null, + "-43.415128": null, + "-151.682652": null, + "33.713437": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "151.170164": { + "lat": 42.8333, + "lon": 12.8333, + "city": "", + "country": "意大利" + }, + "-2.437103": null, + "17.096003": null, + "4.372196": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "12.775114": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-26.847855": null, + "-2.96053": null, + "-136.421502": null, + "156.152711": { + "lat": 46.2857, + "lon": -119.2845, + "city": "里奇兰", + "country": "美国" + }, + "-121.186972": null, + "-126.924167": null, + "-101.388131": null, + "-101.03754": null, + "77.828572": { + "lat": 52.5167, + "lon": 13.4, + "city": "柏林", + "country": "德国" + }, + "-34.813058": null, + "123.011334": { + "lat": 23.7, + "lon": 90.375, + "city": "", + "country": "孟加拉" + }, + "11.265017": { + "lat": 39.9612, + "lon": -82.9988, + "city": "哥伦布", + "country": "美国" + }, + "11.202764": { + "lat": 39.9612, + "lon": -82.9988, + "city": "哥伦布", + "country": "美国" + }, + "70.262109": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "-70.027646": null, + "26.990087": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "147.506751": { + "lat": 47.5, + "lon": 19.0833, + "city": "布达佩斯", + "country": "匈牙利" + }, + "-107.81862": null, + "141.75262": { + "lat": 51.0, + "lon": 9.0, + "city": "", + "country": "德国" + }, + "30.674809": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" + }, + "120.327798": { + "lat": 39.8897, + "lon": 115.275, + "city": "Hebei", + "country": "中国" + }, + "-158.088393": null, + "-121.790773": null, + "77.908193": { + "lat": 50.3167, + "lon": 7.8, + "city": "Nassau", + "country": "德国" + }, + "57.252522": { + "lat": 47.0, + "lon": 8.0, + "city": "", + "country": "" + }, + "-15.466886": null, + "-136.800708": null, + "-139.560022": null, + "155.309838": { + "lat": 59.3294, + "lon": 18.0686, + "city": "", + "country": "瑞典" + }, + "158.175545": { + "lat": 31.5273, + "lon": -110.3607, + "city": "谢拉维斯塔", + "country": "美国" + }, + "-38.283752": null, + "146.597747": { + "lat": 42.3755, + "lon": -83.0772, + "city": "底特律", + "country": "美国" + }, + "-146.199812": null, + "-60.696207": null, + "141.547786": { + "lat": 35.8869, + "lon": 14.4025, + "city": "Mdina", + "country": "马耳他" + }, + "10.542121": null, + "169.586656": { + "lat": 45.0059, + "lon": -93.1059, + "city": "圣保罗", + "country": "美国" + }, + "53.588162": { + "lat": 51.0, + "lon": 9.0, + "city": "", + "country": "德国" + }, + "-48.221466": null, + "-104.847562": null, + "-97.617615": null, + "145.767865": { + "lat": 51.8425, + "lon": 5.8528, + "city": "奈梅亨", + "country": "荷兰" + }, + "-173.124365": null, + "-158.431061": null, + "-132.023148": null, + "-171.873785": null, + "-23.369992": null, + "53.281077": { + "lat": 51.0, + "lon": 9.0, + "city": "", + "country": "德国" + }, + "28.294006": { + "lat": 38.0, + "lon": -97.0, + "city": "", + "country": "美国" } } \ No newline at end of file diff --git a/prototype_cluster_ui.html b/prototype_cluster_ui.html new file mode 100644 index 0000000..5241d77 --- /dev/null +++ b/prototype_cluster_ui.html @@ -0,0 +1,356 @@ + + +
+ + +选择一个簇或数据点查看详情
J`XLVAQntz)Xcj`{*qDY_NX8%=&s$o`jqT>?OKpH-3?S zvK%3fhpTw!tXsaMwz~g?Mr(PdV#jn-YNELW`j?QPST$5p^-UNF+q-FPVTQf>InV_5 zako_s_HQahiX}nBXl`#GPtt;}!eS92AZbSQicZM+w!K&v@ceeK0BGQ;NF|+N5m9IL zcz42BG5AfI#2OE|u`tZ( I^=E6g8mXnU* q|ru%pZ(-ISovDewV D-bcGxQv*zmNo2~ZY_)0W*)6n%FFAf6?DA*ptX9T3n3H9Y T01#>rCX*0i@Zm#>@HJ6*ONwPdHbUMQHPSS^-Ttomxm^Y>Zwq0+=E) zSoD!;)c|gVQER{QP>YSo@)~;a#FC_hWJZwN7rrSx@yqIlEp++dUY(SBSvWZ3yz=N1 zl)TrOCyl_VVq7M3wT1aMiK8{BxoCD(szH7O1UJtjFVvbIc6ir2uH?cs04@$+D6t z-{Uj&&vijvV@`=HKPwWOui8Ksu7f=nZe+YP^xi97oRtLg=L$6uw?em45k>DC)|Ro^ zu4vZ6q{S#(9B0mSZGwt4ax$=pTwa*)`?cg}s2$WyK_Zd9{9HR^JbWB!W^&F-BD8>4 z&7p>bDvLz>r0*t-gJm+>tAdgVa+%Ubr!oODjSq_tI$Q&w0cl8BW2&ZzNOfFFceLDb zg5bJ#$vA%%IZz9)s#m$0x`6^-uA?Em<@>2Ew3XlV*M9YaV4f>yL0_YHN?)uxB#ELd zs*))ZKKV^jFTdTFEWI(Q2dy-mIBfwkOi$QdqaJyvpO6YxY!2-i=+Qa!P&*akw?)r* zl~xPHJ1m7n_PXBqHgOA{d-#(`HQa)gSwB4fuzw7Dh+OI;!!J#p=G%W1L z`3P3R6oECN#hYSoC13qo^Ta%MVYJcr*@$q8CQpbckxtsK{*pxD`Pv#4;#c7go6M+^ zM=7%0UP4K9{B*g&NEmeiA``w$`8HyN${or>D<*dsiGq{9_x);?y$E^RQ)kLAos~w; z*(|=Z{FRjBz@C5k3+rE(5R^Pbx{5dQrAFN_4eAYIKIse9!q`uYYxW^-oFl`u)(FMF zbXQ&)d0UxJkz8M}k)mkNr(uK;D2b>B1DgD%x1Wz&1!(NOBeNO9)F9eghLI5sx~7^J z-F}FZa~@iGQR_sU7ictD+wV)QZ*a=aQF6PXm+mRJ+Vq`ZRHpCB3=TUs5Sj01?{W(I zE$=*WV&O?esddD+P1-17Xfw4Yj@`5^6P66~cG%bgvDx2UtPkr7Cq>juAs1FukEB{Q z?f5*AwA#|lorO~cgT<{QMr2eEj-4Zmpzk-GG*2OmTsv%YJ~JO{PK_U$+<8kNvri(` z_Mo4vodPfTT8#h_xMT1RnLmSwXR{D_5n^NFDK-VadJFAOP2pAg>W2cGQk5w-Zh({Z z9`v Z$RRopSVDLCTFP9eg;7LhbB> zFJJs_qVi#}GW91qtLeAOmid{#38{j@eH+ru+# Qoc=WgrDjqwbZG zH167mncu1DUZl;Q<;;*~Vg y!61RwH8Pc4}D3 R`z zylD+tw JU-e&~6-+X*ooGu8OIrGzMPOn*6ECoPiT2L-o8M?9ue0#Xpq<=H_YA-{6 z>!CwK8Rjg9U9L_w_s_tGh`dncb#}fTzY`j_%cqBvY y&l86eF{m zw2nxe898Fd;LpCl^uo1QrmAE^7ofi4RS_9bo*HzQw7v?VZ^X^7S1O-y_XOnZlITr2 zN;e^CMd$pH0_j4MwU&t+3RKc`vcwD`B3#?H1jbvti&0INrmp3M>D51PqM&Z?8|wUL zUx(_jG31<40Y(NL(&w-==|W(c*&Ut-+f?{6d*V0mO%8h0)o-oG7^^-iI+}>@g=n5C zlY`Q^eahE5iIn%^vx56obNio84H!iFSsn?1WLq$;nK4W+kpm3|o=PE0d9B10+hr>} zf!Rv;T;Tu&jQOhgE7}eZpJUWcyc1vI|EdK*oVxp|fqJK3!xwUdt%cFwaSaZ}dr~n9 zBKiEIjEN0T_0IQh_^ekb>FRg6;KSLSsE=sqqngz9v>C19Ao-Of+$W+e&Ot$}aEJc3 zh@|HRP2>EL$}nG-``GVeJRwz17Pi-GY2)NKM)`ls+cZG5*|cHvSvxTX{~;Bah8OII z%Mp8nhk+r5tHM~cN?5jUr-C&*^Ki?a$>BKD{b}la#NVvTEp39Ha_^gYei~?F#K!9b z0WX^zbzw`nuxvzZ`GaRrhBE~AFvQ+FkS8FjwJwt0Dz3pDpu8wMdaOHgs-z{}7#AD^ zW}R_S&$S-up4pkovM&irE97l_YRCP0`R69W){} <5Iia#PT?AJRA*+FW1z*yGUyZ z=P@t^{$%egCjOx9@7=Y<=9<3m goa%{>CFundCGpVZoZ}T4i8}|NxL!PM7mK5X#J$(Le zBEBW0r;}Upmb{&L$!YkBL*jorgWu NL7aN>KKKtnX%Q7N-*CSrSc)jQal(MNh_@ z3moMo4VZRnU5p%1iD1F)RsVnePpYXkx)N-zebx1tiq(r)Ewz9ZZ~s&JDNX#Pq3VW^ z6*cQ@B^%366UGn!ed|wT5-;JT^u={cB>{T1SV4MjFJJzTvs(HW{MLtem~*hY!-32O zl$ig7#7K66G7`vXJ@CmWXgq5^UjUHdF(pA$Fb-67N5hXg*73wS Vxho-OVD;;x#T z3Yen;Dlf)KdxEQRLEO|1JsaD(3=iOwx?k!Dvx%2K9_w<5@z97I=l;XAz6G!Zo}V4Y z9n8?GKWDo|z7%Xd7w3tbjriqha(Ny#BX>9KU~E_9D!V7xC~4^L#%$?Sd1WA_6b2N2 zed4tn7Y7T><8dci=AbWz=^n5*nL-~c7}!CRcnTG|>%6v6Ze1 }2FvQ $dXIv)Vt<|9QS3FZVx# z-e-s=mn%tr!@1|)a+kOfF)5M1xdyqEyyk8ZtY$$I^0B8~`%yh~e%|3}v^o0OWRz?) zUsc8^EU6J(Dg80Yh+(B90@FEs$qyxDMHStLoyMnjI_KfwrI=;2zdk@8==O-wWGpd9 zo{vtX*VShb_D|<0vg5V*_T&bo_eC?bVVWJUZN3gMgjX8GrB8(C%gnD@wCJnJ$`aQ3 z)^T*m%aHxi8#_AupiNBX5uoBEa#PT>tBFe!rPA)tUUn0HF_$ETo2rm%n@)~LzeW;n zp}?i@&6AKrk+SpKg=JyTH*}?kv3ZQ-kI5y}AAPZ5zuETfZtA(_RCE7RSE;AiiTuWR zM7+uqs8|0ilgY#_uz-7SemvzhP2k8PeK#9ph(E(~#OUtPpgWwR+-tH$Z^qWp;-%_{ z#hJ2t-;({?y{9ksno51pK4 h >kU_7m)?{7Vq$8+OW8(p~F7USSbt*W#ROR za@K=NVS<_R<|jWgFFsV*&_~Qe7{dp3Q-(hOl&o72oKMaA0Kz8I$Nn JYf#VOi$c}2>t8LbDu!}H{(+?|q)q7bFlRp~%b&+v& zAtG;FPHf-7$u_P*CUh+W>=V-H7kor#1`R2@ip?5l4>V`uK0(+;P4d>;ozhdvG#d+y z&95_aIRmiLt_jm{_5 std<{2Kb<7|w2RnTmu)=6?VQ#93G`dG@{Jp>S z`L6V+WZW=iejfWl$e$p>wFbal89bbk8)v$+l|{5ko!sFK38~Qd$p8>E{O{E5<4VEW z|HJJWI1@4M_I7V3Jotq~0*8dg^HV;IQ)dueO)+efFEv&=-?3xnfVT~NR^ap(afJyW z2vz@(k-Sw sZ={o8-vyw=B(bswC-;b8b&+%VTX$edT? zFFO73+#>VigyseS3y5s$swjW^IEEEY3L&qjBvlv&ij1|#|JD2CyFy%UxjomB<#sbY zrB_&R_!14WVK&X|tIBrE`x6V(mX9;q$u1{R-ym0S;YMsY*a$9?8|YT*=9#Q-tG!ga ze~UjAr#f%Ob|ldmNA{mtYW5#Wd$y;H54|(kljfr27w`3ltthEG5Mxd!E}nL~N~$gb zKA*mF11kmp=cK+^t0{hDZmeZ1wKe7HF#F-3Q%VLZOSP2DA)o +^#L-w*Vpw~}Ws%(yA`Zo%v;r=49Y4&K)$XC3lWr={;yzQaEK+%m*VM_Bi6 zp;5_%pp$JtqSM#ha$?6zP^)IYpO5Nr-CEoh>%X|akEkKG5@X_-wY7C&Vd0f`tE< t*M7NdF+wpL8LGNGS&M*`AR?*U(0ilXc08{;p=!><|6g z3v#=Y6~_% SkAq_Md+J8ff6#w$&H<`*h=aV#I!q&Y(8@Rvn 0C@V$&8G3|$v6!M{dcd5)HGtEqh=j&s{p zs~jJ*QuqtcUQOmXem;P*#IX-wIj!;X-Ba%gu<7yLft4rT+8>}gD;#W {4|&}R;9 zq~#|zHcmY2v3YF-j7<)plN$TQIy%ZNKEXx5K~4yq8(C3)YGLI-!GcO918)Tks{Hb) zP23|H0zY*0;HPwjv>OJik+dbA%x4QzS$TzD?lpD~svSGOcbTQR7WX+Xa?D;Bz7j5M zxcPC#h@oj_^ZCVKW3%D$Q_Yk5oSU;fFyhzh i}xW;SHj z+t;XUVF(e=?|5;= MRqhIqdf*AM(yU(59`;8 zmd^r&Z<7M{+0yetR_Bf1#uXCGyK}o{xGnQ?cYIPBd=Gc(>?d(HYCv{fGc+4#NZ7B* zO1HErbRU^*@P1qZy(s|>i(vXETn+UV_e$S>-tAfQQFi`%UCde9yL?5H%_>3&RgoHZ z8PU*?_gSuYVqs(G>TJ>6GwdCKX|ZQRLR%Y2jN~&sNT}!Or=N+ZI%KRuTfq>vgRKi$ zR4#=u83ed@vuhyD{rArqy9Aa%@D00eamk7`;wB~D{`UuCG%w#J%k5JS#m%pIit@A2 zadkZ3J7n%6cM!{E6=C=(*WZ=>I)ou{Bgu}^nx*fUB>!&4fDc4A2=yvC6;mzK6dq7x zUur=nT82ly*UOwP2|B#{s{i5o-h2z65L6>Isoq&;p&v<=r9P~|n&2GLud;pQM#1z! z8uJ4YEZ%-O`$02-sCB)t0>i;>#gjA12s4XKff^TwUDr9Bhk|;bk|6GM0mKra(PslC zIX|!(cU(WM=J-Ha6PB%HtW}vI@V#HNQ0TCj!tTpOuo$IM#FjazCcKGn=;xV9n;Ce& z6pZ#tB0soBDVuj_3``UR4k@Xfx@8?TVpq`C@B*$KG2@hXEwh7t{YOjfj%@XOoq00) zsfc4k&+2z}cr3D9ac?O#K<7Wu_EMQnB+l?K$$YSb*cU&+0H2SYmpP2jtR7kKV0*og zu(ul;;eEmqV!*tW)J!)w!wH7#p^_W@Y>te#+f<7&xlFDB*;e<{jWy#*RW-)w%kR03 zrCzG??^x+BRw~I=oyvGooUHU$@hsXvnWB4vT4gxd3@VvXh0w&jX$Em)A5-BawO~nU zM_4BQLGSC)#&2ESxk;+eg=SjLs<_OuJc@hEWF)}`XXhHeMv1i%ElN@@F0cNGg}*9U zebjT+YAs|cioW@vnb^AS41I1(uvo!1G~*6NXuKuan+U$1vBJdpRUbl~=BlEebj^YN z*tKBiZ+VG-m#3%qIE$G%$Xdk2Qj*2TlT?&d@a1UDW9_MYX$S?&IGQ^kpi>BNAb5x? z!ckd!qzq8hTE3p#1ss&rbh1OD2LC3l08FahZ7adQKOb3kF1QRfmg0m&^ph@f#KgfI z==dsL4DJ<4W?q-fzm>5~cJkE{TI@$i$8{a1C5k#43eR%g_uc%q(I|rCmw4XONivj? z^$Xp%7-M+=K4VfQT)!5CdCJy*&Eil =f?r({)!YSSCNP4Uwnv5o|B;=$Y*IgL+&4 zWIT8bt#vYDGbEZ5;aA*bZmQ=`+QAk?rYc=SQQu(ZEEE*AEqkN#gReY&V;i~J3)epT zhjcDAP{rj Ko_bK+{t? zE-T^_?Fen(HYS4i{8(5^hTy(N)Bti8W_IbAHQ&gNXC)n*FeSs{mg5an1DeJpUnb5O znwkdhuDWd0 3;7 zI)~{9yOk^LPE&|&;pp-~P8Y;s#pT$(CO_TIPGdisUTYpROtF1?Jg-!}0doVy9w)bN z@)MZ2b~XrZeifyY@c(7R9BpLxq8mWTKKVS>AlvlMpu(!Z(YQs;Ial&h`G%kHtb@y_ zkPrR%!~hqk{t3Ruj? r oOL~D?gS`%hr $w2k*>1S9!0|K(xLhlX72&TU<@p3K zg0FRxe$Hg7aE}cSY>*YaMKGoaH7bEBy=M~^m!^8n??wE@ycGOq+99>jHDOl>k*HRx zp^i-C!4SUhw?nb(6HJ@oDEPKoXZLuMpWkn8_@QD`(vQ= #zQPBq`$_6QXGGjrzXDe{;tL%OQDB-#NF|H0y@Y!pZhA2&E8m#&`88d zq}1psKh4HOWQH55sJhd|M)8-zmgZ86+}hmQ z*jmxTT8%i{stE%70)y`&;D4%l*Ax=kFzrHZIQjPYp}KbwwURF^G?K9);^v9 zHve~`T85@&B!%>;uX *6SeWqk)br_oCf@ylg*S9)_I23#wCOZr z1vT5SBz}Mv)6zLrIOQIS;W7KsGg;6JUGFYkq>{&yR(cED+ytQ?_6t+r{R;UlDjl3d zX FCp zT $0L_&hQ@zGDLm0k%1y3kp$p7Y2lXDT%i%+ROU6-ST z)8a{<1f>_iq}IrA^6dP9wr#(^8|!)VLjEQ>=-geA8 TRef5ZqtgMB< N*i_C1nOXVgu&6gn_t`2Yq%^EQ`N!iN4I10XLJj z;UZurRh6n`^(%;}az>-{FQjADBhd^iEHPT1lvkvPRDTgviYe!yyU<0;doi_ZY6`Fl zB$1boU=04X-yJViu0hInK}3?nB1T93! Ui~6+3Im*p!t~iR3y898AD8Sii-hdEQwxJFPTJB3guNX#J(eBY(M3eJEww zzd4~;J)gTrNS>v7-GY`jM=hc wBT7@~qu1iix@?K962Sagk)f+4( zXxRfJOWKZ3n(P%NVNZzOI+;Pbq70!Jdp5^yJIV$cJL6CLjSyBlNbG^r>+WV?yBqyu zzHWV>IA8bg#$q|S;O)Rso2hdsN)bml@P@N)oizhNHf40kpzGwUVL%BMO-<7+G@JJ? z{oUd%a?N%62K*)cMp(hPwD&D|ifsa7wqoo&?D;ns!e+9s#3yI~q(fm99!byL5D|KO z5RcS@V(+ZUD#Lr-E#2bvWQt(Q#gUb-JrYID+6KOSmlctxI#s>->(xDa#29`Uw_n$i zEW{$4k`zzy??pOvh)VZc;pIPGI|m&zdU-drpBl!u|6nh6gte5BDjy?@o%NzCf>_N6$hjY$fc;Yqu~IRDrdg9rlOSx6*q z >?lFvzy+dT2;%O^r|7=bt9B6--WJHKKDz}}jw3N;ek%1X1N#Wg{7 zfUp0n7BCzcIWp~6bdon~E0xhca)x?GF@xzqF;A{#VLLinG&}SV+Nzcmxq9}aLT+x4 z*TlTG)`Al{>}_Xc {_=T;IH`9~bt0?V&RK!9g>5 zgng?u*8Pzp?=jf3($w@+pmP^iA=D$}!N5k>n5?VzS%jNeUVSCt`c|=~f`AYQ&W_~+ z@o~#)=0qfqb|AWZQ=)L9c6RpO6t2yuQYBh^b;zK*k!9EM6trB6>2>jOy`{#~ZfxCe zJ=}w~=%^TUGH)hVQWfgLc=+!$8cj#p4^wIfI_g*4Uf%#&hTeO03%hpVnMiusJ(5-T zCS5RCqL-2924(kusu=m8sn8|VH9l_b7%h&~m|EFEX@J#0nl0csAN{B`5)%VaJQKsC zRoVL*(tP3l;?i>!39Iq+jv@4E;SfyHcNY_CRM2txmX($Sd6z(1B<7;1PLf*c`r76u zQm-lPbt-m0nXn&V_WSt)h#(|i++Exd`qc3Gb_sOB>(#tAHz29?LCb3D$4Xg m!7l&iry z@!bAR+e95z7P}MOL$}2y@ScLmmzRx=w Ng*8yNF|3D?B6AIb5O zyOz5=Q`VmhE_(}p{9 HLVVZn`ZWFMw3RTk@g|Cx3dR|u7B2P7O%@kdGP$G@*Y09dj^>yT^sHYyj6 ~WflaV{AfJyu5^> zE08KChNiz6SxerB78Yh5O6mNxVP=J@e}Dx^Ll-=i9-_2m6GeSffny~Nl7gwW&k4wg zWEEw;vSH-Z;h(QnYv+o7A)vu0BJHTW8))fIQ$uGHkC$+au>r+4ey=#UL9j$TFdszv zj#3ZIvsf>V6X%@B8>8goTpc2ByMV2%%);BBYf5sv;Np&WRkTBB@Tr%Cg^8K}4|Q)9 z)z%k1e%5G#7AVDvmtw^!TD)j*cStBu+$BKJ7I$}dhu{#jxVyV+fZ#4e`<>sztXXSb z=D$YrlC^Sg&OP^>bNAVI%V&ESL>{lmE>ueyk!+aFapPm2u#x3D`8RQMo}a8PW(3en zsX6L?RmS3c=e)PQbR=bX9pi0r!o)#dME~TQn7=4`@F8 }VRHuEXF zyty%8eocyz@p@@uRB6$<-U9h1Fa_|Gce4MLZQaJzfyT{PQ79xEfQqg`IaxVL%e0AG z882*eyQ-S!NNuYfm+k?6_NxZrRY&t-v99^v9#;Zm+!5W~jaNm5{nkDKu3p)w)P_Q@ zzrB0mE@1J^VnhU~EZhg~y9Hj1zcNxzZ3eF @ix>JlB|zpgcJ2A0jzTjeqTX6AS6(^iu0Sf$>i5y&IKd%@s^kdGwX_9Wq18 z5G{V^%c|j|Pk_U4GW80tXN;}4X}x p_=$i<81qe)o=maZ?v=XM7lH96MH z+LkgfZsk&K?W!lT=K&(d>guouN%UW#lvG7u=3ZM+(PKOK^j7(@xNRN5v`u|n&X~z< zT=RNs3YB>*O;bY?TD7pXy2Gcb&-;9-ts}!8?fIcis5C=P-_@zm92W2Lr6jt9^Ad7M zhQ<-Pk>IXv|C*?^44$-C9-G*3EZ14vjM4RQeV?~+Jk2st|F0S{l;>-8FX0XVI}L7M zKJ$au(mKa6{7D-rQoOQ?VNh+`!a~LVuInOpyH0*|IMjXN)0C9F=n2BiF>fy^VuCja z*575XQs}aCz&!~WG-M-eF-OW6cU`35=$@76H&RM(-4g>=H}l~(JmlTea&e`7RDRoC zFl13T|60$)8b zaK?7q>%0mwN*GX3xleNq!GSed^E1BVuW F2o$&JprTT%5jNFyuN zXK?w5=U0Lv8P<@9IaqmKg=g4X>{=RH&YW|?s@FE8(} oplDkMtTzlO z#AWC5Qi%x%vko!LzVD1NGP$@7gnj&RI@i8Sd!W(l0f<8<%9N~#w92iZ!qnyYxgSc& zv+mz`zHnf-?DX7Vclm3trdx6Y3MV>F*jdQCSM2bdvqcN>CP`|Ls{PLHD@!2YyXzM3 zYpKNn$kNCLYk_AdTLDh+tk%4bPUT0oX5g Eou_L_kt;VX82j18Jja zi}jCFCZQTI$$SU--jt=8=fcj**X~PRJ7p!e`l)ogj`Wm^+SBfdICZSNOagS!a4S{E zQ6{NsKB@gh3-0%Mn^mp}tXv1RmX7aT4l@JJDDxiM%s8`N6_R>v60Bp{(#|^2`ZX#+ zrmYNi;L-Q)yzOJD;ydy&gw^2QUA#n1;!{)}2V(B#?R6|NA4b7}NvfQ$^N!ud-1Tz{ zsI!ptZWd1T6Ygi ye`8WrL`HCHiYlI`67m- <7A6kS#dg1PC$&7<4J7Hzag|ZQ6<{Ru z*}2RTM!JNi#U}T$J~-`rK6BA`Fqz2p>1xuhzE;=(7BmDXy2Wua!4`f*<}dw9i*q_$ zd1#5G 4HKRR^}C5m+LGe!soTZhymuEnJ4_+7an%}TGOgqWiUU=Llwt30 z^cIAg3u74 dvXjnzf2bL*7Vi*Cp)V9w-HmmR^UhhFAIlg? 9z>V~|CkE#s LoObR$`?n-{YQpr_1?zgkymvW=k>7GCtuuLp- zLm!E;EPF$5Cg<&_G*(kJoqJIgJ{D$?rW4vnxO0YX$t9wrg->i3Rf@b_^l_fsZIkm? zy8u83vuLgzGV7ZWuzg9oykhgcHQmh0%mqNLC48f_WyeY)qQiZzX8(HlM^CL(f+n_6 z3u)C04^(a2#Xn=MCdFRW zZ>b0IyasV2jYPIkjhiWb;(AHV3is&{5tT~aCKiF?4g>~UO01h@vSU{_f)}VeGzQl0 zh*mU42Vrk~s$U6<18N%Z+2^CfdV>3k#wLp< 3mf>ZJWAE9{N;l$u}v^ z+PLYkB7mwv_&z4jY?sZ^%lpDkMk?>xjJPt((dzB7*29clND?K^W~Kh2GTO2BwkZuM z)<=^T^PHjtUK^qhPlnvxMUPFJpzAYFa}}AI2WuvHsRWr>Ex XL9cNFu~Y@JYQC8OaUlEUR0J?I~jGBUW{zcyLr%4D_I z0FpOlR4zLhjlF}!4O1$T4(4%ZGrPhay9>7LRgH`|b?F+idE!5?c5~T@N*VE~zJK>K zd8v#mx2b5jk&HWsJ8b&ZjnjJ-III-0HTHdyB=%xxA_BvWkF6VQFybBDakOK$yKv?$ z2GHf^i=RhVG1+}b1UK&ro5jsDKx7T~UD?)`pi4}Rx?2A+>qSgxs>H>Za9_V8(t8w` zYJhQlk)jdcOELJWJDN<=mD!+VFv(8~HR0+Tx5aKb+x5yP)Zo6MSCl4hK9r?5C@_U< zc{H21{-~^XuwNugCERDt3?qGn|4BS;D0sPxB2a97H_b_7Hq}?j5=wu)`@!zI4j*tb zO?!N0T8~FA^P$F>eLOy0;&2~CU4Q&y+zu1IK#<0YFS2CrDG9oo3Rg~or7o&xC#C6Z zkCPc?lK3CYcg#QzPy@Qf?>hL*gew^M)I1Cdh6ZYFefE51-dq42M61Z=M+!{f+$< zf16)WP*7O7c6vQ`U~n3S9M->CG|_Niz@DZhu7h2WUs}-TJU*azrEQ77$WCHHP@SS) zyv2#B$OPEqBeM&VU6nizf*E9w_Q^AN7|<6&!knX<@kcz2LpR22?VQ(7T=~N~P48mi ziyD;yl$}dbcGj?*M6^T8i4_$QM9LkZ)%7Twdi*TY4yTf~W?^ZeW`hv)s`%n@Q`iY0 zDJ2!7qOz>y_&EpP#wMrBzWXSW%?yykuR#LWSxTy*IeSWO7+V>~R0%3DHsRQz^?Rr< z2R$B?UQ)CfIo&Qw)-lnD@0I4^>(D*fL%6P?brVcrBqSs*F0Qc`|9d3yLryF@+&KJS z2*&@H7Q4!k1Zggx(qZ(j-!!%Liw-vPIQ69 z{*likjId_OlysW{rTUa4WZ3^Zq^0a-rSe>XgB&$cM65@4&{>9(Mow7qZ+O%%k1*6I z`|M&079oc=ZUKNV$J1c_rT)<>Dz+* DSj~+e|hWvM3I!z@U-_$QQ#k~H9HvT z5&BaYn&S6}U(vnyO7f-TU>G3;P!V0=@-X-K6nm8Zht;B5Qn{ji$>W-~pA>4Q~I z>zhOL4 kHlnMZ)E6cQTVu5 z?qG$m@_3vJmkEi9-HJu67!8Ut^CTI(hm T5)?^=>d&6#~67@ow$bp?V@u2c5XL=o7NeC{Jd?Ga`wzWy#Btytc(F!n_mfNt; zc)bR0S;`Sf%;?{Fk+#~oiBa8t$cfmge-a=3q9M8b7$hwh3+idCtnYlVSjZQe?^rV| zUniyaN9~(+6Y$d}^w*y^Uu4T ~;raMKpxj{iMfAq#VN>T%$UQutSe3bY^Z3& ^oA6_{DNCn zmx)-+@9Z~~rTIh4`SMnZ&DsuJCPvCx3qMrj_H5h;1b%1S=1O2jx$+lbA85whota}T z@0i%nxZ{4c84Gfzw%!3Wyk;ilJjD#da$Sg!GD;=t-N)DvJ=)1Z!4Y|3dKo`IK%Re@ z9l*YEkNLBPUP7&Vr0)JyeG=0{jJ|pz&!N&Oj3fz8>T@2o=lJx*TJ-pRoT95sIG8D? zh rqSdHg&x&1Ks;YM02aemSI)TzXFi_YNF)hnE8S*{&2v?AbByUpU!C z+)m%ji+ysfIDK;fS&(ws^3%E_(9NQGFeghAeIBQv`Tag#z^TCLSCPfT&)Vs+9F`oa zppt@|PQ&Ufu>`bq6DxfXCl6gPML>(?err<@c|n{ kgA~?lOloTt5J};&8(bkgnQbIGRi`1_|wY(XZ>|ie9LS i{@%aW|l1ER9k1O~3oE(j|WBJpGgnLS4zR?$Dr$|X$7Y9>0zGPXqbrC;7RandG zz?O8q4WadAep>EYt~BwnO?YrI6fP5R%6f3>s4)gh-r~4TMB{d-vLCohDj)Bfm8WJY z%onC-XCQWt`$Sn7iR(mvRks@!?;?0)lebKT4;gs)F8Lw#gWXtenZRYwT{6j!P&sZ^ z3E&^=R)w3MSX{Re=Uu{7zu98~xBJ~?GJw)v7u;bY*S!fjEs!3Yh-P%BJvgaD!~7}1 zqsoL-Pn}8pMmStvVpm5*pT&eGWw2qH7t*_!q5Ijx=HYCdlirloa{e)e!RlM}*@eYJ zBQXhj;(6|#8;hRB?O6S>_uEPj%F-qBo4`T+F%>p!w+UwmJ>>jzToYU784{E8E_&xp zCk9%z-PKUL`pk~yCUfM5FX?$erFw(?Sm~U`eu*|WnCj7IwoHE;B||ghH1fhCKqikm zhT`Xk!`j6)WqR{meIovky7ta1RQl4^$PK5FOB#JFMY?DDU)V3jzBkxt%|`| zp>FF!44ji&yp&gA%9w4pU@3oC`4GF`;B@Yi+IH4_T>QKc$HQ>I>Za);LF+DQrxKj0 zH%A woxol^oeWl-1HWw=&ZV5TxmconTv^NAS6`o`e(X l{Tr4}7c7k?3={R8O-;Ca-30Z#>Gq7`?}=~-LhxQyF9`~|lgFY`i}IO+}* zvPEWRmB^$)dJYCW$w^XQ48~$SfqSi5zBn!Qto-lFMJ&iX0bi=+7t$5Awnt>}V$n;M zcieY3Xvc J65z?FSAFPN9_V@1^BXn%@_4-V7fTgOPkFWH^6L6-2sZs@j} QPOg3uhdMsiA4oVLGXhV>7NTq%90Uwo3u$?Chg)Ges`2iC1Vz z`~tLbq`=1$7tsY;Bq{lIKKc))YiB)b_d7Gu^hA?8vmapZsts_^N;RoW<+Rp6?d=Uo z-R}w#F)EnVC>I*2^GYDA_5HGSi`XbyGohvHXM@IXQt)n@uVD|>s5m|lZ^vD^G_CVA zm`m#}uw7c5P~q|*>+ Q4bxV5zlj$osQ`ZLkx;Zb-*Sp2q z%JL-i@}qn7r-GNyTz~M_m4Oo6Qj8~x`TiKuMX0c xWSf3lNi~ zB9jj hIv~;WHC^99D7%+ d=;-3PEY|({U>qDWYqfqY@tBq29lhN&qE*M=SA4b* z+cPuw<`#Xdp21Xux;g}Y7wRQOn#>`7SpuRy_w3GnF%8UO!0DM+D4v?8>a)j}mT@_t zZJnmP&0Gzvtj2ThTa=(|BhG&;s_Q>zeAe{f)_py )Pa}Me50za1>PDR~>!49i|B#dtwwV3%#j&to}IRBb(=B zLvMj{R-p568i?r{%>Y17Q;L+3Phbtqk~y7TZMlf-M$wBwHV8=Lw$u1&z!F_&ZhUnP zg=WE!Bp~9%?>MPlm8^8_zEo@MQG*3#Qhunb_f6wLIAYpV9-+NL8O0%3u+>7(k)8 z2}DLEhKT)BT$GeDx&ICG*yrL{MlO?DhNY&O`e=TErQyrpf_=Nw47monn{1iAEz5lo z*&J?60OGl`CcUF6Ub5$TZKPx&uval$nJW$g896`kB6VDk?ygV>R8 W3T0E>8G_?>hATSX+)jQ~{~n&Kq+*p9jTUmkj?D<8$0_ZxSlvb77L(y4c* z3p)1r#t?KG`H3?0lA^NR%BxKn6eiR1(IqSCN$ zl8IabiFeX~6>=GJ+Sg`6AdzCk8MO2$Df!5Acw@u=sdsV**{=9nZi z(^_}M{g10x{>PgdFu9&0M=}N8r6Fo;69t3>C`CvuC1gnnQC6h3i6psaw*1ZI_Ip>$ z8@x9$+wT5mcMq?~W+*8yz~i3KIU-VIAO$V)ID5DtySXn@H>IB0N8l(+>048Tk@E;- zamdFUx9Cp>2FXCmHu=*N-jk2 2|y3I(|@c0ZB()<;mFK~*+ z`FUCkMH7~Py8g4*)%05qem_U^w~AxY@J!$DWJ_MiVLBlBm)fblweAjGYi5dCHK230 ztN6rmP#aG~^ZISuyG-`bqqjl+u`&mkp0cYVDtzqad2Z)I{j=NgTI=h66r{H++5z{! z@1&3-1P-}OrfT!lX9b %!a< zVO-IH-2`V`-t}4N+|IENXPaZho>t$ZfO51%=#hw)`gm`Lt3kP_>`0mk+U7{|T%2|7 zS0!_MeHa=VYv%%#C$lv<8ibOBd@+jQQB%E X-XfJGE }dM{#a~`jr_k*SaYEeBd#`Yu*b(1O>eFZTZkjg;O!@ zv~DZst}Wc6mcfOvD>l+jf4XA$2G%08Ej3ZVx>xmUC4?t XS!s$`vEy4yj9WV&A8$=9OWoS*_5FgbWw04>KGlFeXZ~Hn zZLleIiI&OqB$}|yP0U-kP64}fDPDlc`N1A!xj3bLz-DciInjkuh|QeKW~(cpZMA1p z?Xz;Xg|;9bt$e}Zg-@QH+Hi4NV5(J0nS oaR9ISFE%l&o4 z`M@oJcA2X0lIfmZUimfFcxYovD60d5^e&zVM~M#I&BCtX9346 TiD6FkN9{$MHWq4(9X3E!R$p9J+)(s{$p_2vC=yrY#Y zA;&6^d+pS;13JW+$47M8aElWp(Yl4{kPTatOU*?uGz()SV6#<9EhS+57S<8{jL#Tk z5_sC?_4Bl9wRLN4v7gs1RXo*qia*I(_QubN@OSzzk|yaF&w5HRD2wCx9=pFk*+43t zLuSy3A0g7kX_z^(*+}08(yIErOq3e!$tNJ%BOY+h9Ek;rG?XNAU&coE6W>nl3UfqV zRQr@i#@^{|rX`w}DoRkJBq~;HH8K?8N?uZmi+&M;wVLJEEh*FC(z3yi3Tk!)ywEAy z-fpOQ$Ko+hV58Y?AD{Z&zMCWU0HQ~P&-{3
@Rs6{(v(CgTwbgLW35BNz<;bigGUhA5xJ}!y zF@mh~FlrT<2A00ZrdYXt{gnvOq4Vn+tUwtS2JPG>O=$|Y)>oEQ_|R;;=N%cn-v>F? z%NrGpzAkT9KF+*Q{S$JjnYdBk-lRp;G;Hk7Z>F||reD3qnDPLZs5dn}9B@vlm~I$2 zJ2$wLu~l!m{FKnEj2qziW>&-zkz%3UKx%;g0hBBtW16%9b7XRY0G1dH&Qk `ieMD}Nk;0-ANPXLF) zXZqY^(8ak^zir7Ztxo5ncC69XD>d5$$9~G~VyD_Gt^N^KkajrlyVaoPS#(oBKT*wT zh7UfRueIS=hfl&InwU4{g?X)7zS-e&@;U{#=tif{HbC+zY)S*?_=&q25;YK!3pr}C z9H~6VhT?^tp6-$TBX&w@AF_t(%`^L}4spX{LtQ5HGpnSpxY2+zlQdLU`nq>$5~t z8xI4N+c{{d(P%6C_v?5XT>H{L8=Po@{a#Jz{vq5dfwEmp&;Q)|MA&W8;>(oAak^2S zqp8Ik8cAt}C!T-#1OIY=s`glyUM@(RY*0;$NQm=H@w%ax#j+^ pCvgy|g+mx#l73P`B ;zsmM7hRjl zm2j%jqn(1_ nbwEkG^Y~4H r^iX02(@y1hh!l^ctpuPPeKAd}Wv4c}`BRuN z_nd}hPU1lWd!-E9{mgKh`KK%gFe|kjT(TE`6Y_JW=f+Nr4+8|L`El1~BU2TG=Zi>| z*#f{Gw`+tCB&p-@GA-X%r`~;`!BV5yPt6)#_R&(KwNahq783%>2vXrsTWe-amk2Ql zE$8iRWL~U$K$o0?q)2K7b_*V=^%_EW-u4A1hVFyGr!vLy-YPk5_d&!u?ny;l`!gbY z!iwOdN8N)eE9!bonduzIme@L2>YHI5m+WIiz}Sn-#~bqUByjnO;t`vIjd+uDd>-Bc z2QN-+t2XMzr$aO=tgfo}(33i5#fdr+7+ZX?)!tNw>Uwf7n*yuD4Rl_W&vm}6w9r8B z67G7Fs~>`X)X}GAd{03yqvq%6050~Bz9oh4!!u<0>7{qdXD!)uIp|N_w_k^0v6tpO z61Xmn0-cnZCx#3TLskwovM )%gpw$uZgU9`q2wG->}f0<-iv@B^zsPrnrZ3k(+};zFevS ztVN_-36R$QkRSJHZ3GmFLD7cxYgUei`^_m-fM%M-d@U9;H`U|K$t?)8w0z3NotBAh z? 16``z{`@sVvYIlhzqpT#6?0p+V67LVP znSRGjLvcel!#LiculpNP|K=K8+ >wQ&7MU*|JrXdS|Ao-oRF9|7aH zM$`-s59!=B7iu2*d0bS}yi2HcxEILg^1d`#qbjj|i|!^ET>^MjLZ~~QjM2j8KAAWM zD?+N~X7U7Bkqdg-_k^9Dp4KZX#sj%6hlfJ!Nq^_)f}{)|TRGEq+<*AUG&us#jVIHq zTdUJ5Gbg+JeM&Q54K8rIYv z*H~kKqR*dx&czjVx8mM(9HVCx)p)p`CF{bq!+slGL`-$s$on>>p0hByK)I#7#A_V& z`g+vFZ098(_hH&cP~#Q5 wwmrk*GQ_Q01m=~=3!g4gN$|0N sb(KHWM-;*q@ler=P&F0t2`MBk-J| rnM0+#6l z@v{)jqBo&CcMd7{wcO>FTRwHQq3-27VvGuK9y`N7(~C>TF{{s>u>kHF8Whch9_Sc@ zIu+&R!=qdr-I@bTZgrbB?l{ 8k$5s=-Z5W3efA?;Gd7 z*IkSAt(#cih*kg_fB%!EyZZf94n^_HySK{f9^s!G1VfDT)mk`;g$ex{VqZLKObGTq z$AF{fJ{zp+sSJPC^I32^-X0qIm!f0w{0Th#op1~yGU0{!1c#VIg*@$qPaj2;|E1Nf zdgayQ$p1Br_%-n497BPh(Eejlth7X>{Gj2{O_@ynclge+0*l_@OEDZ1qVlgNM>_Hm zk*KjOLb;60Du Dw z&P^cwq%D3cpQJuj!}7QNKP|u9|DUPJ^}i@-{QsE}W176hYN{N}v7W$iwlpeCrG5 z5)(yA`!^?5T*@Oj6reFZ%^CwBNH(-v_+KfsUmX6Z^(PDo6B1Is;H@vhpytB*`l_nn z|NirYSjzEa#BofBJ&z6CXTX^%02@}+H+p&s*_c4Mpq~Gog`!-S^O+IHelwwL$#xLV zp!Hg~ -!zGz5BHqk9n2>o0q zq$*qL`w+&BOJ=O{*Dw4GpWJ^dGk6JAFl9=zdfl^@%76dAuBcWkO5+(%zU32*_&1Hu zmWmA;EdL$*<$?CU^!fU~1DTSHsLD(vxOwy6n5fv=+GbByDXQaj*gtRmuP$6Tv1jJuSg+<65g$z-cAc5c o2;ry%cIc z#Qbn*@pGczc;>f#Bp!^K?Q2lNw(LlFYbBq1b0XdGdFd;8CZl`d;G+N#$Fc2zfTcux z4wgsq&(Z0@gKp%#UWj9;lk2M9mPpgTM@pPn^s|?fBj=>@#$?h&X_4(Ew5O#@YLQdF zW*BF!>R_j|oZHicrqxo|eTagbGp96Pe7J9blAy7WD%L$AAxU)1r~I2CtQwHNfj>)i z>Y1rJQ&G?gctgdFlw%!e=}PS!32$hActA!tDNNvVMx9MW1HRJ8EqGG2fIyb2RG38K z;R9|u-%2E@WWN5zF%9Qi-i uABm%dFmQa_`M&S_XBsc# zHC+S@bCG?q>;L|5VIpGoeZUY=QN=bZUSJ3>eaNwLH5$dEXQuCXtkRp_8I$gUMt%=7 zL>BAe;X)sF)6pTodjW4iIr<7 Zy9Xh;2RmhM#1 z{rGLdp`c#Ex_9zMnZVxMfQ-4XM&t(bUPgm-lZ> _W+0<`vf4DA|XI0j#voBSqwYCDyM?nb-Y4Oijf_b2 TuAVu7U-M LQIngv{QBFVc <1jaqY>jt*3@L47e^=R2bFZQL_Gyx9bee1+1&|>D?>4tg z*5X|y5}9<2Q%-*cSBB2AEsEyuPg#qMCrX;V`t;5&^FXh%>+_mxV>~s&NOwv$Zm%){ z0*=z!TnP-plpx=BZjb4nSu&Ha >GQO7k zRc;G9tZFDR!O!GiDENVaDh0oWlY&AAF#ShdT{$a1V_qT3Uj75UOi8;LMcrPx+8GTs z)r0j#oO5>6#nkCCb+51U_^L%t ^4db+MWnPJcl`WNoLr#Z@C|z0)J# zs5lh=QO*9Ob|l)DHDJ0}Nn_5uwKjyQb>MBnR|lKAvbW+uzuD(SMwf$pd#fbxBa(>L z_;@;!jJa=gF18tJE`!qNs=z=8hOI#mfmpq?fP=Wv{Z0#!@6!AptvWXsckH%hylWD{ z{&G=3kVfZHS}wX>2tAbeK7zIy{^?^$)~r#w%p8{C5vc4obHy2BDy{9f9#hv)=6{P4bRps9iaBEj+IS+rKUu-K9RzB ze6n@>P3qEKrt8wOdv;WS0Um?b?*_~HLp%IfS-#p*bWTpDHAQLEZARi<3wnD(sNGXJ zEG7;d*(0nff4`v}%Bcpa6WUu)k$3xF3L)_x0~h@lOIXv7qkovX9Dg~?9)`6iY-0b< z?tgC)7Jl?yU%3>oOWW%=&w#CIftg%nriK@3
v)^9A``vrUxq9`c=S*tE ?QQaZJALzkJP%1= zpbFoxJsQb``{BsQgQOP?$onYHR!)48g48=G< K)SLoC;;9gTo1HKG|onF0+Z1g!A7CnY4Oo7qIsiSKFAnwe@>az zD=|_qC*?ocK+^l94pC)CHtN47${Xg&d@EtL>9cS6d4K0Qhqp+ej9l<)!aRWj*|$qo zkxb*~HCf%Q2&&6X>q|5( nvaFa27QvjWqH AypDg w~K#s%m3qGXY<}o(mYAw(9ZdCGBBZOmG-)$Gll<; zzi!{oELQ-g?%7C?cidSYwTPJaSGnv?{2$99GESl}AKo^S8h9o{*cTIr3FTbU;N$X( zP^z=e0x80{Wx8>+vwy1k66tKQ2Go4EEY)t?zq?H)BWwqR2F`Qxm@hiah!%bb!h+fR zAEsxB`d?Ep*%gl72VRYFqb~ nB1fr%Li5^v zua&p4Z0aqHnY5CDVL(CzmF%Un)&zrCbuKhJm7~B?Qt^WunR#tykMne}p|5+3xO^Mq z&Si?Wh7limFdLb9D>F*iD%C&CEFy{C7YxHihl^%MSvZQ;182A9fqt=PA3BWsA71tz z7f~FTiWBgeo^0lQa4|M U3$;X@cL^8Es8bdYnG&g0G^ z^S=k}O(6+-9vXkfbt5*nn`k18_;O65gfpI`fBl6$#~mXWw*Aso)&Ldo&H|V>!5$T7 z)Zq>4HNVm(c7_GBDU}j;%1Hm+qL(<&UX!==zdK$Y-dHaRDv8?fc78={Yxgz(ZC!oT zi?wfGYgywhcX_OR&pAIoBF*>c_U6_-N};Fj)zIepTece|CFHA(#86i|5>66*EAF54 zcj+w>b0GxW@_>!+=zF(A#}Zs- Wa*JuMU+nC!Ekny+qdmbn(&CY)E-|B62WcfI?xv}ilf0H#5 zkaeF4^KPaoSbt_q^Z7)fUc3ETez0$*%xY~*^W_uJ8nl)pON)6f zrh8}Oo}n_gxI-JH=`GqsSn-+Gb{BAI)=Sf|UqjI225>c?fp057 kC9eLL2o(ee4yt>4UzN{c5LboNznka~(3;S_(pjQA3_z zh->A(qk=TK{7MIPE`0Z6Q!-fUMHt;`=lQbH=Q$y{ZtKnd&R&+YG%Bn@ycOUsaJ1w3 zxVQP8GY8`xH#|;?Sp5A^Su=rmNqZ0)nyzz1c`dtCV~jK&yiUeJVg0KvAL~u+h_M8n zS*8{yzIzzg$JM&xqmvZ9BB{KiBCuUN`n;3P%p3qy0P^OQ&hW-kLtMkr8;ZXH)xR#K zo{FC*H-27ifj_1ETDBn8E!C1_slh^O*#lSX=3){GeNFMv#RK!Tim ?7%RussbvDpA1689RYYL*g-1)pyLl@C z&O(<`OUCZQ3&{ay{lu#fZ4L{TA$gYa^6G3Ud!Z=vP?58moKXDzyt*$~q5W%egQER7 zAb}6Ae8bsqw2oeT3EA6%-&|}O` D6N2fu#Iw~sa6C-=< zW#GH1;!5_7{k$q60Q~Qk@eC37KhQ)9DF%3BU?LxNpJk`o37uJw3njH2{Q$O6u*%ml zm-bOvOG`^ZK|vK2oCwS(6r;1Vv-t&KDMRON XE>vJGcZ+OE<1#&Yb{LqQ9aSYbe{ck1$0|TE-3ewWj6O)rk ziD(EZ$)2@aS_Xz3)p$*O+KRur)a>*aJDf%7HC7o^r10rg=$F>%IFwR`PqNxT5k*2x zO-(hD)Mu`jjh($ #FNUmck-j`#O&BL=+Bv%ANx@|uzX zEOr#6LfF{Y@`HXNugho6_nt*`uS>XMBc$e@IxsdiRvHGP_#a!qnl0?_h%Sj35?~gY zE!m~ii%e+7#7cp_7Ou+s&KVP?Pc;_!$~7|4P}m{h>~v2_na|cn2>*UP`xPzp&mQ*d z{~|4-poV11uZZ+UVG&jU5KviO&oW(fsxNKiHvz^tUNX)mX)_WGHm|hYmTquWB2oh- zv4-LuFWXA?#q6>zNY@+hO}w_5P`P?J}YpI<9C{wfM4Tq7o4_jFldb@~TCh z)`Pa1+P7Lo)%pc2ChRe@0PSw`>Du*)W 8TEnzQ+qJFkkS!Yb6Ok*% z3dC!uJ*kmdX3@M`*YIq1QwRIjrh(CMk4t3DtY!g?>T?sct=ODlItM6%FH`4_h^4ce zlLr0({Inv~zr^n3;VYFeCp9Y_QFYmEybqn)!>2n=xAb05 ;^BUox=)E=Bc{-l*4C`bBF3nE6STzCASr%R;;G>>W5!uz zOi`^W-PZscGq}1Q)-QFk*{K;|92d?HP(hl7^ie5DJEfHgxV6i#4j|>lI^*48b85uz zg&10D)VS4c`&>1V&q=tRG$h>x8FeKuXD*lGgz u@LX(bhyGA5U&e58(UMu@ zJ=qfq-2fsEbE`L5^%*&|*9RK%EORGA7sbg ypDU;f;b_eJKiPM&*hK&+w2>`f03IfTl^h_fbr2jr=NK9vbYgp*YIlbt-&| zfw_&_fX)@-&b;v*{Lhzo<#?tLTD5Q2aZ#fLy6BTF2T*yPLP-G*?Ok$3eAlNs#h~90 zYkpsc`T*J~{T!(eyAn5Y6CK@2B~$A15v32sNO-tIFu2|3_vw0xWGi%fqHo4G4_D*k z=LurVhy91F80udb$fJh6BOPvlOInI~n!2@h7B##_*2;^hRZr=#+sB7kEwv46%TQu0 z>jsy%sQUGEkf`1aBmbIg_T~l?z3|qr7(5b8w)#=<-c6i0V&PLK_6?QPv$lq*yM$X& zIm1PF3-u!?cnRcU8D})Yi^Wl@oeXSz+lDcXv`hU}7i6?h0c_Q_Y@cFlIb32$HjvyI z>#xqxC~Uz{47ZCml2LGYLL6MUL@euMYEf*(-a4tkm{h=*Cflw>=8MoqfOm3>I(w%V zdsMWVI&GsgBfne^-aw<0IW~xDB&(#uxPzBGlITZ+GGyuI{_qfgpu@ASYW`qx+XvNf zmy^@U5b7!Q)}oujr5mv}p`{&Bd35)??oie8fP}=_kiab{?3<(dG!xlU!yB^gg{=iX zk3Da}#k<`5uDL2jLi>}$;n(*aTu0XC_o^EX B`T_VW%Byw<{Ee-4w6ajxFx@PwLQr8Hji^0L=X0uNS(uw!AOu6kR7x )qFNFRlhPvA7@BS$4KjIvhs+3!Fn|X)iQT5RDPAem8JvTelSv9-V z<+-FHZdNXzN~gPMnOTwzU;te0>B8yAPx2wy=et{AuCYK=*#@+eW}eUXTQhQE=$OFz z%a@a~FpDdqiqkb$CE8~=$y&_!hKPuS{$k}gcIOvE7%eW#3&fFkv%H}!lOhDRsT65x z<+Gc6LbTMl6gu3GYA!dl!^@!aRK3M!s0rM=<>dCk&V7X7WHjPyJ%B)f8#0X#cT37@ zMkUD*7C$Zs7Z5)owM^>nqTg>VKGxaZWq+XCP|;C?JKRfaK|6A0N&H4=Y96Z8YR7wi zu9gkBfhMdxF$u@U{g4SqEA{0T%>iQWv`*$5;#(fM+}`V0SnDx0i#F&=6YiWHF1LfP zhsPa3M`}%f3CfM+7WBnxk0kO}Jbdz0$;?ux(9#%L{v2>6(NFiK7;CpRJgIp%5!#n8 zAX;uJam%#Yj%ih%RV#vvEu1Oz#w@w~A$?tyU+Cz@(9(9>e19ssPiUM%Avg`M`m-%+ zNQCL}Qu)c9m|YN7(3|rW^~(n4W50~!d;i^y^H%%k?MSsr5=AvkY?LJ;*W?Jg-OPxY z7%Gy3(uMcUH$DlHeqgazIv+Tqj1U-*a}>Yv`NKBv7~%DOakc650cTJ=gxo|F$XAuV zjoJD`5aLy?IvvV-HXiZ%JkJ0p4SKMfn^Nos%Kmmeme%W2JC2&FAahGJWON_>sEtqS z@Zz_rDyf;sy^c;=bS>7y+(_+%J%wAx$qz(_b!eG*uks#x@zV(X)SNHYnBFdXnEq`- zoToX6vq5}A_ch84#JASH$>Nn(NJ;>m5j2lDgCn)M)7$o!=2oV>p^3bW$=*zGZ)SD> zKy9%a(e6!=rVhJzSQJ*4vLKkPVi}$@$hkx=N4CG*%E`F*6xH8UCNu(u*i}7Vl(GU@ zIp|!>HQbZ1vGG38gu7iD3bv3+i)L-E%~zk~KBA8&D5aUJYS$Tb$|!1&Y!IY@ez+)I ziS^rw3wj^Ou&=6f;C~IOVzhuqtam4J#D8<&=ao3^TiEXWB6o8?IdZDy$4ovUk*bp# zk?=&OR4gvGS`J(K+K+*y)Zl(`A79XSMrhuESNh~qsj8^C2E-ih=MZ8|sciZewoOEM z+AG^VHhwAY?=MhON#P%m((QU3qQI&<$&ji8$|@y;#oR8ku36_Zcf7lJpmoyyeL!UU z-8w}_^H0dn&&EbLN)Vc#j)-!J>Qz35T|opB(%^86quP)R$VpdMaKcdNTNHJ~Mp~*p z }ZMq8|l<_x$EIP02Ptpdt@ z4fiv0HUuT_@*U3yYc>ESSD%z>H*$kQWOS@i^No7xYOCyxhV-j4ujiTK)7n2TMwei4 z+kdzF_eViUExkR6yN{qjl~5ptl%L4cja{F62Yur|Q0bA@&CTny> x{vv8P`I5Q;@6DU@Bq=xiKpyv wuRluNW6kYI>w07~sEe_ImeXeeuL9_#w>f9zROw)w0tc5J>dq`EfMsV!IM$>) z)BAilpo*#5P}5MJ{v?FPa;>uhIYYj-PV@;+xEZ5(8s#}jl~)KT%@^x9w@qQkEUBnb zK7N$7=MnK++a9uIkFXo`QOok%D+(KHs~G*$he)9mhp(ng_g93grn3d_bg)Z zpeuUaxrl@f3I>@K15fi4?N;3tr-Jj M2aE!{l_C3Z&e zLtAkcmCHR92JkUyU<&(9??ezCy^G?z+=(&1U4}5JSBpF1Z&K{{WL6W- Z1iYAk*DhsLMO2EpCIZQCdcRj?PGE5)PJ z;PQ?X%U5;}!HWlm)`%>qL}>qv4+3^~`QrM>fql<`fX{X0?lz55Wq?(p>5qY6!}na- z@f@NJ|NWa)C8YlWN eBw4IKR@4L zr4?r}F)gj6tPGiu1ihvHKMIwtkrZTYC?q8GuWIYx>RPYWX5BvlW#~s-KC=C1TMOkg z^Z$D9*o?lMWw7b%=o3(~Lfr>2#L{n4 R%^ZKs)$)fA{8kw7$-`(By_xF>Kko@cGb%X1CR4x7-la}e-qzCh`o>`Jn z-rCx;E9=V!buz)w$9}pJ!aqGd;x=mUbUq)MA(ID2_Z~@3 uxrfCWkvm_ zqdOlE@Ei#Pl$Wz|#Nhq+2JWS0Wkwy|eI_-~23r}kKxEaMn@hu-S5{JjlO|5ys$%)# zE2+5Oo0(`u6f?r>wZi%im=^c5bn 5E^ zdPhlKOibj g4cc{|=G-sBEmP(z;2-x52RmhJyiXC@KecV?$Xo8slFS&%hdxwuyW;@W* zM*0Ee2VM~{t@iY`_NJ`PxB}6?rg(Hib( !k8_J016PsC`}<4&+!Td(t_ z%q5rA!#9hC7+Zg($-mk*M9VP%|MT)S|B(k4wY`}yNhl~+wvhwV6P^NHB_qRL$N^x+ zBMp9!RP50FyxAVB40?sQvx06{-7Dwt+a1NMdF9G1Fnh0{y`|h(kV%m;dnG0iQnvKR zlsV~6$J(Qj{IJ#n6y)nKrx5NLp+EU(w{K|-9ZkPVR^dCgHqRGF(N*)m E zmC>ml%q))0L-1y70jKRo8~7l?O&mhrTbg3ta$^NuPt^3&cCNC}krc_*+=OS=8w-zU zm!fy$nTfVq&S;S{3A{48Gf@gOup-Bk<=qBhj c_ zzIGC Oiba`K_LL;b0Jl^JYEz+&~G(CXqd&@eP?d;^p}`Ho50q6nxEN+%JY-M zE5Y|L<6B;qFzgXMh1Aooz+dR|$ER#?(IosIU$>+3WE?}4Cfs?YwL>)34e%*zjgi4o z%q2<}S&K4Jpc$9_VT~lr9ku+iGlCUNrS)`>&9+!h46n;@>tj{KL&s?wbGWr{&u~j4 z(6RiR;g{HWKfyS?Myc5mU=qQMum)2{&8XIctu2>v63e4-HmlH~?z71!*JjikunPw| zS1CksusoY$FtUqSLcqL) @u ;jr2h`uTndChf20{lGpoDpyIs%MO7Oh?>^*@9!xwf_!)g_b{ z8;ty4kMKJ^Y$Jkc@?Q)x2D(}I@YmKJ$q3LdA}yp3$0{3MZNyM2?F0Cv@b(7wH+VOF zeQ%8hs<;?lFw4DkYhUJuAF_AVXBSUF_7I;48ieD6pE2^-^;QW)2wB;-LpTITFGlM- z8 oMi1xzELJ%0iva+0b@{xlQ$h@E@_jv$ z3HVPJ*na-33|kJ--$lQ~+VC)sL=4}~l!#%{NlDSI-E9nq=W eF(LAC zFnDM%E;IVCTCSJWm`{{Hpi_6soXm?RI R!=q)Gr_)u)W%zMsF;7 fWW^TH^se%cpj@8I z^uFj^3uvva7>C%Iy6NwBjSW;U5M0$!1di?ZwpZ1hr;pRF%o+yZ9B*khAK)`V0AaqR zO5=s%GJa($ipw266<;^+?yQ+ez*o!>MNPT0m!mw3uTqZNO}}7X(o?cGdJ!F+p9-%T z%Ssf5Z5`GRmZi0yBht`0q8Z!jY_A-Zgf7W>?8U{_$P~(ar7T%ky61eZXrHVLSHC0Y z+r?ki>>a#NYn3Av4vbJpb!wx7hGHrrX6@5d_wsPK;<9<#joSGgtGx@x2R;jm3dIH@ zfio9J3aCGCmXMZ%aJ@Y7e2<%MS7fHZho*7`mkj>C$=nyX!u3MTC9uUd_^z1mHG&>M z8H-n|e3)7{hA3QAe`@izREU!{D)P5B76{uw0GQj7C68rzDhAT5(@;qSKjm6ZY=>8B zzy%jW>|03u&&Pf&2E6H*sg6)W=OX!--?$~bu? Z z8dkZxPDgIgc3}}F4UT)v%IcCO3)DLUePgjOBP`iE4a>@+zWc577B2Z=ZFK~qpqgIi z 5og{vaJwfXu6BeYCiMsc|F1FgHs15)W<3};!kzs-%6v7 zw%Mx^eS5Ty`7O4;tH|rSsX&j))^Jo1o2p0FtRhR)($;GXNW;M0%XIh^Ss(1$P#zQ3 zB9u{J%jb0s5fyrwJ&WIWcqK-nH1A;j-c98LxxQ8f?p1us<9xDF?#1Xp1!yjTv9w0r zyIHYzcSh-Cbv5DzJ*E@y352^ss8uN3+@Uf(9+#4|B1M)L?b7O()>lw8*?m{)F9eyG zYtg`=sEwepOx2`izqH`otb~WV^ZqEnlK_EDu+GPp(Rp23tj^5LNTXlqILGav^79nA zfjMmg$(JRhf4n?C#;gPLUaGmMH8Ke{!f}_D^+Q&}wbCkX#SG4KO6Si$Pqsv1jB`oc zV6#6&6Mq$~@m)iQpJx@YWV~g~=zQ#^Pbjm@kCzxPELn-30RPAd3S#1M(e;0rc7Be+ z{o2^Td&_J~xhp8jtXMBB_x4x%^(qr?`Z*O{&>e6)s7z_ m<#PC0! y4U~EhF?U9{i zMw_cNAz(SvGb_Lmd^Agwu(CA%x-M`voMdX|Xll*>K`nQ3u~gota9O_YS6p21n>~T- zfwVmA*9Uo>+)mcFNGB697u~7-UpE}&QTfv4^h(yPBc<*g{mt%-1aFCG12YjJ+R8`A z0o?C3HrxXp7o_fueRUgxtxwoNbZN3Pnll!Sxhp6aE;4GRIwJSlvDhiA%HtXmsK4l3 zQ(m~WnKziEjHf^vD_~NtZmJ7~ndtNzGR&$2GKgt`BeU5hX7G3LGJwU#(q=YEZXcSd zO!|WA*Y{Uy);%MUF)dy^+ZLXK{agMr2$gyezu%AY2OA9)wGvwI7u%y0Q(t)ZwhCN4 z?($a{#*DBzQ+8m2ZuE86os{i~!bD1k@C)$a{n^=#5vXm s^snb_Fv@%Xb z>M0?kR`F4ktB``HwpL|WR&K{O*Pi?{8g;pRLN2gJJemSiki@^McEr*}vjX?>lJe zjO2<(2j3>B7^=BI47g~j<*rDvkomD+*eao2e(8D{XXbt4N?6goTiq^uhSut!b$9)< zM$=%u&5Sc6?^cL|}&(#hQW&oaD-JMCQ5|3oVP%sEo-vMV}mZMc`vK)7aZFJ$cj~0{p{vf3> zyCqMWFvm^K{_w?c%a@NsgF8mKjV9=K-!+KnGM8$dZM8|1^2W;@`#nrSQ(MA Z{7m7-XnMxzn%$YA=fpxd(K@TbO(K1_jD6xEu zzr2w4TdT`5yyZKab&Fwx{F(+gYz0gMP0RT-5of8g*Ox8NI^uZ9Hw1!VV$I%`CG+#! zO}VO}?OsY4eJML7Xt(Jy*E_GdpZXqEn7n-ZDE!b!3IbO;TwMaB#4_rGZps;t#vTvl zRR1hb6=89R(QQK;@>9$M3nmq77%!%V%AnF7F(F0CC716{_@u7#5#2zn%GG#2moY|{ zMOeh0pukv0Gf8@KA3mV2zJh)%%cf|61{s}rxZ=hwy5qkvc5lo|AfhH*l$KWkLipc# zF*Q}{w}E9Gr7#O}A%h9?Lht*s-YT)EaDo5w0fH98ZJW%-K^rqiz4r!GyKEssz`X0O zGuRkKw#3)uU249Ivk}eRN0RR}d(g4j8~Es*Kd$h;4L!9;Ildz}r`B6+G{4%avvEZk z!{7f?U10digs7$3@p5a@#@|4_-sgjafo@jlQj6nqvTdR+%ThNGQ|Oq>L(JxTw@G?( zQR1D%gt-!MxZxPeMf#4~)N%hj`_L4pNBzls(~`Wu8wV->Gfx DLR OH8P=L-^M@L6jS66b5k(pUjQ!}1l($KK8wH40C za~csoT!x>t#DpsvG5dG?d4mKm2yJ3`wH{jyu+4PG+~46%f{sViRbCwUM95-mQ@ziP z2Oc-A*(X;@-s)1HA?y T@)o(iucA&+DQh2!@Mft2TY+>k8FV zROjVgxFTF*sn%ZCE1?xLlGW3Da5J;#>8xnF<)K~(W;MqQqYV5m5q6UHP#bVAhiZv|j_T)u$xzYGs)?(9YX3kyKXN9JC=pL>>1_CKL0e>-Axs-rRf z!)-#z$N&FRY8V!E_M&6QeZ}i6a1kPPQAB5zns_huWmc`AUj? zW1F6m`Pk0(nlJ `wa+@j*cVG&Kq1aEf*QBX;@Ua2%L)_A$}&^>xev=wS6V z5_c|VNkyHXR<-8kTK_n~vAF-%p31T!U2nNMYCz%4syY%vj326y(BW@A3F5cyq;$ Ll&({T6%hBCMKl% z5&!^@lBQEj1pkM9jIuZ*-2-1~^N zQIiOy`aaRQVe(ftAkX{*TU_t8$at2Bu>0Y{a*InF@;Kqig$2*yL?$A3{g2+4yOG2^ zuiFJs=f^&UvBuuU?n^dNkky kEHThRjtrnw1nbtWuqaKxaAe4H&C zKxZ)UE^n=8)iV_7QmB**N(^RZHPG8| zX@mawVTXY&cYADD_(A0T9e|_FvDM6hcu?V{QP0$!^P*VdaW4+`v7+|vaOC^JO*DoW zhnoO0*(Lm^e9OxYDz%<=HSC!2rDNeFYxSo_rSs8C53Bz6xbzo;ft+~T?|-u|N;H>s zq1q_D-Y52(SxKzVh5V)L)$hEpj7|{2)e1Bp<1tyi%KtlOi1%ae!v))cmzNikABF@L z0i)l(eLG$6!=R~9J%*XOKwM=F#qBI$F_4#dUci?Xt(NtF6?UZs^jxBkB9jvAL*I@> zes$JQ!o6tKVa|GptN-iIXQ`c16)Cx=x9Yjrj%6?$PV{mGs0v6FF2>?jn<}BVW83;^ zQ5p;}#;nSx>QcU}%J*M_j~Hz_M3*}?(m$~FP-tx&s%`A5UCi2uv)a(3PWDEB;mfR( zWuo3v+B}9)&B#VAlWrbUIP=A0t!MJ9pH!9Z4Sdp=qrdZ#R!?ZxC!;ogvD wEbU t TzDKJj-?T EC7!Gp zFk0cgMbF!O&I69Wr!8v3XQ9$%lf|U~JHK54`IvAK;4c-F66y=%OdCz$-MP7wlam_H zCqH =!TwO{vFUFXzM>>bP5yeQ zh1$a`U>Q(2Wzb>-DB^6PeQuBH*SL}qhN>JgtjaUky{)11TbOG3?+teeaFUQ(y_7KQ zL4wy0tTqgy5;75jTT1(+;W2o(W-FAPeG*sT8rr%1gr#@9qTNl67f`&IIxVOE+wD!- zJ86z2;_dWZ>aVA9Fit*(fUuR_{=;Gj6;aPwRA&nD8vUKExK>eyOO%Bs70+N&+PZW~ z0=iaM*1+Tt-QDsXZ%qSyY&8GOPF!ogirOt?)RF2*`j|Z9x56FsZ)fm#zkZyW7mnTZ zD`cM~875Hj<@9zj3zfj4^OXjqTqcqmA;lI~dQA=h5O3JmOvpEeB8{8WZln(b7Xkrc zwELpHP;0m>PC;E1Em?UQqgz7!*y{`CbNEALF|W-ZXS{FwSpF(BO3SR!U_`zCT{M&X zo;5TmRVdbS=^=|YeZSHz&)LO%vyv3pm3T6lHZ)Dg)U{k*7|q^xIW^;@9s3|=6W<=J zDQwRN|B*mZeB-RMNtd*iMtHeU@}>cG_jzt1O-mV!g_CY?2KG*n*|{!MUz1y9ciL(z zWbW-A4bpI@?zgyuk7^WbpF~r*r6Y@WOzXJDAS&eV@HTrs9<|qEV75yt|BojgC8E5% z$L6du3LaIzycn9%dXmB?W`*W%zzSCRM@xqA11!CVAPMzVx-U%Df4b|})&XO^_z7gO zp0htaz0kRw5o1HUF=bz(UCWhZ6$=WL5o92bmgfn6y*6b<%R4GcikSItw0fPWE;`Yo z)Bo1&`xXitc#pN$=lxlHf4PVfLp5#DA%u>tE7k50+S!A3v0Qw@$M;$5yPzuGEAEpX ztId~V%xk1(irG>dEZ9@UY?o*oyStt{W0_rur?xW*nP{@L?;nv>gyjDFmXH dJ9OhpndH0ni{E-?$M zq<>*KiP-gi?>FU`{N43$rHxPt-ub4`)d(`s^IhkrIAP0 *`se3#aqt_DTn-+;l`Hp*tZiHdjA08XCy$HT^9nj1x;SljTN=?h4Oh=V z{;QV&h?<@P%@?`&>R9PhN9p&nzVTzczbR=cqI_h%+mec)8+kH83-bqEea1ON#?0Eg z4Y<5^@}MZr5cYt&XYo4jI6#@b7*$e*9K@k?U<-u@F2@O1+RhqHv7u@7%kN>#UyB;w z&GGT_E-x=v>bHnXUA)4kz$YZ^^gLVN9!*c@w^vnBadLO3pJL|X@1N= _(yQ9D A8NU I_6cp?Bm_D zp#K>DE?eo#_x;B&R-6(?x-BxC8eB6!LpZC{0QatR5K<&9f3*zxOqeo-+>kXCH#awu z{SIxkU+VO`&-&!WZ8KBsw9${Vm*gd!e0gLpDHrc3wm(}}=_uPcf&k35Z=AI6eqEq6 z7V{&2_vO()jjC5G-G-F0Mz$p8HYqOvSXNhsBjtlZuA1h<#_Ik6+S$32!`SgN(>Q<7 zg=`E~XP8O_=2cPqCdYV>?S#6|*A^AU4-RBR%K zHpTr)WwW! iqMLT(_yvflSe$LNHTP3VX)j5yFcuuisqaWe5vYkl8_L3KqZ|eETH* zeq!(4@~2BFuq`2K5qf_mn%X$=F&h+E{NgW^I7(WPiaPz5c<8RPy=>iVLmS3N@7uXb zh7R+ H zfhk%BmYLA3&!4&b^C~l_FJe)qgn!+*(-QbSh2_@I>c6mny)5I823T#M9 W5|c3tjO zUZbF&2pQkTA*I@~ U?>s%#kfYKEjB><{Y!>8_9u&ersAUVp-M~WhoDo zVHs>n^Vxb@M@%^>!_fTGl}u2T-{5u3VBjB{1d;PL?1ZN-RlvD3(BZ?}#a^RVtP_)M zMT~RO_Ls?jrf4V|l8X bf82%L2 U*9~b-o%4~7#4n; zj7+{@C6q_XU=%B*9Ga&Jb?3eW4|Uxe)OdS~T9cQuYXH=vo}+xlE=)C>7FOE76jAPL zO`<)4OXB(Q{}l$(y4`-uF(+S*YOe*I50g9xOlT!&*?rIoMHcOYpNMUAWPE>kNJL3x zGnKLm{ztxaOQekU;v_gcH>2?l(^^6)NqyCP+z033H aSEWSpTX)WU*-0?9cffvjG+DE&l!$w%fir(1Lx-!APYx3yK* zkOI>ZWr9}c&4HYpoa7wR#fpiszN8J()Zy`xlH{-#(4FkXQN8%=@0A%-IScc!p-e(; z^H|mV^(v09RW-H%s@`@75~2Dr-&-Q^?`}|-g8pwt7;;;GGfOM!XZbdJb3#XYkd3lY zk=x8k)0L={+1{9CReQ%=y*T;tjuqBK{rw!_1z#9M EJF~pP>t9? zN@}YK=FcM_prxrvf10JfiXLj9nh#v9s>2n5KkQ77%l=r2tPiQgcCCWD6&4YQ!CDyW zW->1-qR_ljYo8?3ZqHjKgvP6 e3+JnhJX~E9ZPwl>EF{mFDU3bi?x@o_!*9r^*~GFRhpP!cbaPX{nTn3}pYd9*@45^17w| zd@i6PiI&-CJ@8LgN!kn_{F kli5Dxnxt0q-(EeM{1l&UpVyc zMz-5TvAgt3&!m_`n6o?o$)C&Gwp`0iqGTtRAcWlB(WpqzkYPWQsC%`^Je3U<2Uig{ zoC@Kt90z0Y(gNe&R-2(=Cp>h>!$f7LE?e(H?8a&B7d2v_u&*$Ex>L~!;WgpqTkBWB zgX@$j-yJ8Vi ^>l9}9*q=*fk53oJpne}l%G5~;}n@n!XABeaN|8s zvRX#%jF%hmCrJ`d)AV1?k(9n<**B17SZg9P_;_K%;~0EH+vU8R zp}!*Lb}tIS7E!+oSBIVX#mz^@#%PpR;@gX{XAE2y56?$4n^sn5e7*ak81(c7Ffew` zeA7JhCe_=zC51?%Og$-U)CecLnYZ+p=+8!uPmF7AK538|;HE&wVdq|ai#Zj~%92CW zVmBlY>#9h`f1`ewn~}$aDuFcPQ|k(bGp)VaZ9>-MO@IRWg`&tOQOC9u^+J`qCD9>) zX;=>Ng|q_}6<&`*swqmF8TMM`6JfCkb+P583NlnIockB>t;^jQSWxl$t3FP$;CQIl zd_sVp4**3s1`=`=ACHTP88r{dE-28@*H_5b7=HAzi;iF)iU=J&6dqUj*bwh<#&>6y zngBrvs!x&f!tW|Jf|e+!OkWg{>hV8RGt0Boj-zeTPxdmi@6XVjqXlcE1UPe`TgIN0 z&z!!TC^H&)a#z0_l3N33lU%=VH1$xG+l)j<>=+Ty-wqONzsuFSu<|x1MnXJgPc0e- zieHZ_O0`<}`ph*n1K(H7=?iw9&tnzLsF^$Z?A`k{{Ix#u(>yKOrEB!?ltr9apN(bi zD}D)Lh}MFDvn8`DTrRP3F@;z!xtp*fmbqiGcK?AquU)J@KJE`~kio3J{2^|3MIAW) zS2H=LdzuC2rMG>z`rC|dHk+rgZYB9SSOp36I2M-sg<9iK|2g>afhYEGQ#eKks3rhI ze^xeT**e}Uif*3(N$E!BNOg!t5D^k0Nt}30_ a)4=GU)x!D#t(h)|F&!jf z2H(W2Tpo(jC+ZT}by%i+iHs=F;_|yg9IjyKtGhiR&Q2iTQ@Sy}?s|4(@PooF3`4&e zL@G?#GnI}`+0F9;RgNuMbShgc7RQs_S56%*^a|6>jpvm5A|?9 ;DN|C z-Ar8VjkTrly9m{IC47B9Euk~00e2+g5oH%JKQLcuE-xJ|5Iav#I%%~-#JByhX?`5^ zMyg_ceSQ6J*Fp-Jjibo~r;3y)bHuqW0EM?Z-d!`M1JJ!~g1i$hh7%>Sh12Riu+tg> zfA!hgnJfZ?H!sy(Rwq;T5aPAlq}PTyeUH6g&ATpsT@ozwC?OH-aYeu+LIHE*v`KEK z2g 2^zK{vQG(hPu}5p z#b|mI7XFQOjVz2X!hQeOilbZ{FIRt%#JMBn_IUm2h~4Kb2fB{CMro%Qp8Vo&qNrUc z9NN<{t4C2vUN81HI;+R0Im8$w<-PjtC%=T~5=C $6{fB^cuhxr`dSa!%j8B#tmKAxh)EZ%gjxo$5b3gqz?ZBYbUBCL7*LziD