From c6c10032924aaf4eb1646a4fd593c17a7e2ecb3b Mon Sep 17 00:00:00 2001 From: wangxinxin08 <69842442+wangxinxin08@users.noreply.github.com> Date: Thu, 3 Nov 2022 10:53:38 +0800 Subject: [PATCH] add ppyoloe_r (#7105) * add ppyoloe_r * modify code of ops.py * add ppyoloe_r docs and modify rotate docs * modify docs and refine connfigs * fix some problems * refine docs, add nms_rotated ext_op and fix some problems * add image and inference_benchmark.py * modify docs * fix some problems * modify code accroding to review Co-authored-by: wangxinxin08 <> --- configs/datasets/dota_ms.yml | 21 + configs/rotate/README.md | 10 +- configs/rotate/README_en.md | 10 +- configs/rotate/fcosr/README.md | 2 +- configs/rotate/fcosr/README_en.md | 2 +- configs/rotate/ppyoloe_r/README.md | 147 ++++++ configs/rotate/ppyoloe_r/README_en.md | 145 ++++++ .../rotate/ppyoloe_r/_base_/optimizer_3x.yml | 19 + .../rotate/ppyoloe_r/_base_/ppyoloe_r_crn.yml | 49 ++ .../ppyoloe_r/_base_/ppyoloe_r_reader.yml | 45 ++ .../ppyoloe_r/ppyoloe_r_crn_l_3x_dota.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_l_3x_dota_ms.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_m_3x_dota_ms.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_s_3x_dota.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_s_3x_dota_ms.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_x_3x_dota.yml | 15 + .../ppyoloe_r/ppyoloe_r_crn_x_3x_dota_ms.yml | 15 + configs/rotate/tools/inference_benchmark.py | 356 +++++++++++++++ docs/MODEL_ZOO_cn.md | 4 +- docs/MODEL_ZOO_en.md | 7 +- docs/images/ppyoloe_r_map_fps.png | Bin 0 -> 148038 bytes .../matched_rbox_iou.cc} | 35 +- .../matched_rbox_iou.cu} | 23 +- ppdet/ext_op/csrc/nms_rotated/nms_rotated.cc | 121 +++++ ppdet/ext_op/csrc/nms_rotated/nms_rotated.cu | 96 ++++ ppdet/ext_op/csrc/rbox_iou/rbox_iou.cc | 95 ++++ .../rbox_iou/{rbox_iou_op.cu => rbox_iou.cu} | 17 +- ppdet/ext_op/csrc/rbox_iou/rbox_iou_op.cc | 97 ---- .../{rbox_iou_op.h => rbox_iou_utils.h} | 16 +- ppdet/modeling/assigners/__init__.py | 2 + ppdet/modeling/assigners/fcosr_assigner.py | 2 +- .../rotated_task_aligned_assigner.py | 164 +++++++ ppdet/modeling/heads/__init__.py | 2 + ppdet/modeling/heads/fcosr_head.py | 4 +- ppdet/modeling/heads/ppyoloe_r_head.py | 419 ++++++++++++++++++ ppdet/modeling/initializer.py | 6 + ppdet/modeling/necks/custom_pan.py | 22 +- ppdet/modeling/ops.py | 16 +- ppdet/modeling/rbox_utils.py | 54 +++ 40 files changed, 1954 insertions(+), 174 deletions(-) create mode 100644 configs/datasets/dota_ms.yml create mode 100644 configs/rotate/ppyoloe_r/README.md create mode 100644 configs/rotate/ppyoloe_r/README_en.md create mode 100644 configs/rotate/ppyoloe_r/_base_/optimizer_3x.yml create mode 100644 configs/rotate/ppyoloe_r/_base_/ppyoloe_r_crn.yml create mode 100644 configs/rotate/ppyoloe_r/_base_/ppyoloe_r_reader.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota_ms.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota_ms.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota_ms.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota.yml create mode 100644 configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota_ms.yml create mode 100644 configs/rotate/tools/inference_benchmark.py create mode 100644 docs/images/ppyoloe_r_map_fps.png rename ppdet/ext_op/csrc/{rbox_iou/matched_rbox_iou_op.cc => matched_rbox_iou/matched_rbox_iou.cc} (68%) rename ppdet/ext_op/csrc/{rbox_iou/matched_rbox_iou_op.cu => matched_rbox_iou/matched_rbox_iou.cu} (72%) create mode 100644 ppdet/ext_op/csrc/nms_rotated/nms_rotated.cc create mode 100644 ppdet/ext_op/csrc/nms_rotated/nms_rotated.cu create mode 100644 ppdet/ext_op/csrc/rbox_iou/rbox_iou.cc rename ppdet/ext_op/csrc/rbox_iou/{rbox_iou_op.cu => rbox_iou.cu} (90%) delete mode 100644 ppdet/ext_op/csrc/rbox_iou/rbox_iou_op.cc rename ppdet/ext_op/csrc/rbox_iou/{rbox_iou_op.h => rbox_iou_utils.h} (97%) create mode 100644 ppdet/modeling/assigners/rotated_task_aligned_assigner.py create mode 100644 ppdet/modeling/heads/ppyoloe_r_head.py diff --git a/configs/datasets/dota_ms.yml b/configs/datasets/dota_ms.yml new file mode 100644 index 000000000..802e8846d --- /dev/null +++ b/configs/datasets/dota_ms.yml @@ -0,0 +1,21 @@ +metric: RBOX +num_classes: 15 + +TrainDataset: + !COCODataSet + image_dir: trainval1024/images + anno_path: trainval1024/DOTA_trainval1024.json + dataset_dir: dataset/dota_ms/ + data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd', 'gt_poly'] + +EvalDataset: + !COCODataSet + image_dir: trainval1024/images + anno_path: trainval1024/DOTA_trainval1024.json + dataset_dir: dataset/dota_ms/ + data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd', 'gt_poly'] + +TestDataset: + !ImageFolder + anno_path: test1024/DOTA_test1024.json + dataset_dir: dataset/dota_ms/ diff --git a/configs/rotate/README.md b/configs/rotate/README.md index 574cb4ed5..5558c4a87 100644 --- a/configs/rotate/README.md +++ b/configs/rotate/README.md @@ -16,7 +16,15 @@ | 模型 | mAP | 学习率策略 | 角度表示 | 数据增广 | GPU数目 | 每GPU图片数目 | 模型下载 | 配置文件 | |:---:|:----:|:---------:|:-----:|:--------:|:-----:|:------------:|:-------:|:------:| | [S2ANet](./s2anet/README.md) | 73.84 | 2x | le135 | - | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/s2anet_alignconv_2x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/s2anet/s2anet_alignconv_2x_dota.yml) | -| [FCOSR](./fcosr/README.md) | 76.62 | 3x | oc | - | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| [FCOSR](./fcosr/README.md) | 76.62 | 3x | oc | RR | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| [PP-YOLOE-R-s](./ppyoloe_r/README.md) | 73.82 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_s_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota.yml) | +| [PP-YOLOE-R-s](./ppyoloe_r/README.md) | 79.42 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_s_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota_ms.yml) | +| [PP-YOLOE-R-m](./ppyoloe_r/README.md) | 77.64 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_m_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml) | +| [PP-YOLOE-R-m](./ppyoloe_r/README.md) | 79.71 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_m_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota_ms.yml) | +| [PP-YOLOE-R-l](./ppyoloe_r/README.md) | 78.14 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota.yml) | +| [PP-YOLOE-R-l](./ppyoloe_r/README.md) | 80.02 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota_ms.yml) | +| [PP-YOLOE-R-x](./ppyoloe_r/README.md) | 78.28 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_x_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota.yml) | +| [PP-YOLOE-R-x](./ppyoloe_r/README.md) | 80.73 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_x_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota_ms.yml) | **注意:** diff --git a/configs/rotate/README_en.md b/configs/rotate/README_en.md index ef5160ec9..fc746ae12 100644 --- a/configs/rotate/README_en.md +++ b/configs/rotate/README_en.md @@ -15,7 +15,15 @@ Rotated object detection is used to detect rectangular bounding boxes with angle | Model | mAP | Lr Scheduler | Angle | Aug | GPU Number | images/GPU | download | config | |:---:|:----:|:---------:|:-----:|:--------:|:-----:|:------------:|:-------:|:------:| | [S2ANet](./s2anet/README_en.md) | 73.84 | 2x | le135 | - | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/s2anet_alignconv_2x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/s2anet/s2anet_alignconv_2x_dota.yml) | -| [FCOSR](./fcosr/README_en.md) | 76.62 | 3x | oc | - | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| [FCOSR](./fcosr/README_en.md) | 76.62 | 3x | oc | RR | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| [PP-YOLOE-R-s](./ppyoloe_r/README_en.md) | 73.82 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_s_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota.yml) | +| [PP-YOLOE-R-s](./ppyoloe_r/README_en.md) | 79.42 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_s_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_s_3x_dota_ms.yml) | +| [PP-YOLOE-R-m](./ppyoloe_r/README_en.md) | 77.64 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_m_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota.yml) | +| [PP-YOLOE-R-m](./ppyoloe_r/README_en.md) | 79.71 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_m_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_m_3x_dota_ms.yml) | +| [PP-YOLOE-R-l](./ppyoloe_r/README_en.md) | 78.14 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota.yml) | +| [PP-YOLOE-R-l](./ppyoloe_r/README_en.md) | 80.02 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_l_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_l_3x_dota_ms.yml) | +| [PP-YOLOE-R-x](./ppyoloe_r/README_en.md) | 78.28 | 3x | oc | RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_x_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota.yml) | +| [PP-YOLOE-R-x](./ppyoloe_r/README_en.md) | 80.73 | 3x | oc | MS+RR | 4 | 2 | [model](https://paddledet.bj.bcebos.com/models/ppyoloe_r_crn_x_3x_dota_ms.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/ppyoloe_r/ppyoloe_r_crn_x_3x_dota_ms.yml) | **Notes:** diff --git a/configs/rotate/fcosr/README.md b/configs/rotate/fcosr/README.md index 0113ee1f8..19888eea5 100644 --- a/configs/rotate/fcosr/README.md +++ b/configs/rotate/fcosr/README.md @@ -17,7 +17,7 @@ | 模型 | Backbone | mAP | 学习率策略 | 角度表示 | 数据增广 | GPU数目 | 每GPU图片数目 | 模型下载 | 配置文件 | |:---:|:--------:|:----:|:---------:|:-----:|:--------:|:-----:|:------------:|:-------:|:------:| -| FCOSR-M | ResNeXt-50 | 76.62 | 3x | oc | - | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| FCOSR-M | ResNeXt-50 | 76.62 | 3x | oc | RR | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | **注意:** diff --git a/configs/rotate/fcosr/README_en.md b/configs/rotate/fcosr/README_en.md index cf8e49ae4..ee16d0edb 100644 --- a/configs/rotate/fcosr/README_en.md +++ b/configs/rotate/fcosr/README_en.md @@ -17,7 +17,7 @@ English | [简体中文](README.md) | Model | Backbone | mAP | Lr Scheduler | Angle | Aug | GPU Number | images/GPU | download | config | |:---:|:--------:|:----:|:---------:|:-----:|:--------:|:-----:|:------------:|:-------:|:------:| -| FCOSR-M | ResNeXt-50 | 76.62 | 3x | oc | - | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | +| FCOSR-M | ResNeXt-50 | 76.62 | 3x | oc | RR | 4 | 4 | [model](https://paddledet.bj.bcebos.com/models/fcosr_x50_3x_dota.pdparams) | [config](https://github.com/PaddlePaddle/PaddleDetection/tree/develop/configs/rotate/fcosr/fcosr_x50_3x_dota.yml) | **Notes:** diff --git a/configs/rotate/ppyoloe_r/README.md b/configs/rotate/ppyoloe_r/README.md new file mode 100644 index 000000000..0892942ee --- /dev/null +++ b/configs/rotate/ppyoloe_r/README.md @@ -0,0 +1,147 @@ +简体中文 | [English](README_en.md) + +# PP-YOLOE-R + +## 内容 +- [简介](#简介) +- [模型库](#模型库) +- [使用说明](#使用说明) +- [预测部署](#预测部署) +- [附录](#附录) +- [引用](#引用) + +## 简介 +PP-YOLOE-R是一个高效的单阶段Anchor-free旋转框检测模型。基于PP-YOLOE, PP-YOLOE-R以极少的参数量和计算量为代价,引入了一系列有用的设计来提升检测精度。在DOTA 1.0数据集上,PP-YOLOE-R-l和PP-YOLOE-R-x在单尺度训练和测试的情况下分别达到了78.14和78.27 mAP,这超越了几乎所有的旋转框检测模型。通过多尺度训练和测试,PP-YOLOE-R-l和PP-YOLOE-R-x的检测精度进一步提升至80.02和80.73 mAP。在这种情况下,PP-YOLOE-R-x超越了所有的anchor-free方法并且和最先进的anchor-based的两阶段模型精度几乎相当。此外,PP-YOLOE-R-s和PP-YOLOE-R-m通过多尺度训练和测试可以达到79.42和79.71 mAP。考虑到这两个模型的参数量和计算量,其性能也非常卓越。在保持高精度的同时,PP-YOLOE-R避免使用特殊的算子,例如Deformable Convolution或Rotated RoI Align,以使其能轻松地部署在多种多样的硬件上。在1024x1024的输入分辨率下,PP-YOLOE-R-s/m/l/x在RTX 2080 Ti上使用TensorRT FP16分别能达到69.8/55.1/48.3/37.1 FPS,在Tesla V100上分别能达到114.5/86.8/69.7/50.7 FPS。更多细节可以参考我们的技术报告。 + +
3@&(YB{XUj0Ewbdy zMy&y{sGD?32fA|Hq4YpQHqB$fw)JMW6ke3MKf~;Vt#t!2-&5%L2hlY!Wr3jE>ctI@ zB)rxmk;RX?KucT8aA_degS&5Nh@N#&(Ar3^+Z*-Xo5k|n$;w3Bg)YwsBBxUnKih)< z^@gf-J|YcJ(nXy`evMC_Zl9gmwrN54BJo1;LbEaZGB#FCu;W<}>u>!k5{UzWar}Mb z3-=HINvJl*O6qH?^3~A`kjNuJwN$xZmqjJp)h!Eb8>#V{ow?M>O{koiY3;G?=ZV$2gzd+qKg#kN+oS@RG1?V4 z6d{${M-*(sj5i~1Lce?PA~z&nJkKUD RZ00Aqblx{8hOH2kp;0gK;H&z5J^x)l> X}L%}MKEQ2v#K||AU&%o+ qy{Eb9-X!Mk|EF|C!5TtLKMpqHpo6gyE2ek17O}LXTi2% I z*LpY;JcybC-T22>r|q|ggFrVQeMIzB86km9?|Y(&e}9%_$Sd7C`ur@7@tG$S1P_&5 z@ulnJ5I%l{D@>TVDXpX_4~6dJ_iKZoupCDds9*5dug)Lwje`Qn5;oOGh*{Qzb^!Zf zG`Z&MCc4z85K=1tvoK>ME}k~BgyI|eoxI!U!|BD`E|A+)f7l*S8hV&auR)jaXS*`R zu`Ui`$WWNfZ_sm9Kaoj$_!V3pdi };B$OALIEwTvs2>BLjC+uAms@{-+j%f9kaBaboI=++cb$Pu z>s) +(<0!r9E!4+{ENPMPDgb7yExF9 zfaJ~nvgk|_3qd0Y@2qy@vgU6kORunh@F}w0QF(_PzjjlVKhsHj-qoKZw)R#0YZFz} zD{m)_(_7%+#c y*l`fEVAIY~ zEY@y!mUjnq@53lR(X^NBfM#rK^~h(64Q~oTYFVY8%{6e@Sj%h~vzG^Z+wX?N0;r-T z>u}G$N?Kb;hPK#5(e)ixXP*ufyWsakr-rWv6R^C@=SOa>*+R-m;HxYHqXvX*M$K`+ zcqB5QHdGg2>Ta^qL;~KJUuyc0EaK^u3(G66uI2#-DpU|Sntl=T@Z7m7L2}S0yu@NV zo}e(<8wdqp!wPNo_Rp0wkW&m6@_BrQG~g4h$1$0h8)zuF!5U0T0)lv|;)`=9eZM{p zl&+;~OP2CCT5rg% az=?_sP4J9@yzX`%d6FI<=KF}7f%WRKDrVD=6^e%b^C zDqwm-ja 8P~M1k5^nE45no^mm*2PI WB&U;^4{^!7*6#s*$EK&N00ubM?9RH_;9LmI0|7&yF{w_?;Q)c B%$d~$Vj5Q|NK_Yo=DwytR!!vJQ_!^nq{dWp$~ z3=jLlkvXi1;atlDT!l7JvUtcU#Z@ R-y!Xl*bb;wmI8VU9zz~<12n>Nb zf5M{~048Pn2Nb_kp@Sw4t)IFeccm~M5uq?XW}Tla(?-_c7nzLyvTt!Y>NOYb1?YXC z Qse$wS$2J*s&yV#{?DkDLabvt(<(CjC{tvLDH25(`Y@< zfzGlpHZEWTsX*Cl@j@=r^v6F>T=$$i0} ~@d3^QlGx1#! zO2KGflhL|wr_q^mZ@Z0Azf^|Hm`W?HUf8bp^n42yiZ}DJdX~mVU+;hW%k9hgTY3 $=^W (2$)_g!;EP`T5U?*9AD$|Ls^9a6(Ty9yVA2SRSW{g#>2d~8IJ{vFS+}Nx z7NXdv{HV?V@rZ`NyM&r=fxcBBtt7DaoRJ>Mkinu?d91E{XxS1TE7^1 a9?NA&prb@H3~D-)J0=# zM3{N5p`38Vgb0P{s2s0gbwM*`>6O9BwcMO8UfYLQqj36s(GWtG@s|RfiP7J)u%EVg zR+q-){n|lp#Wh4=Q`W>qM~Hr>0GzqDWj6+O104-Fc$@)S5H-6$ZCjrSTackaF0e~% z?STjfL|+^M^yCQ{3~{j^5$GOqUJ7 RSMx`(sIik$uq*g0s8YRYZWC;j#Q9Q+ps}Vx)Wr&eRL_jqWeqDnj(*684eumNolJ zVH0aymtm3$Na{^bejAePb9(bPor5%aHjx7mGLS!utoio =4k2rzJg>9g5+eA_kp zv#Xb^yPGKMt;hP&A}85{Kj9L%_8HK~=SE}D6m>K}d3=RyEJ0g8 @O%} z0@0ji>FgbsAljVT7E@J)iUH;`)uuv@;~apmy2R;vd36CNNnO5Y{aBWU)DGe(=6Mw@ zVA0*77>lClh?6byvu1>ng?(?O%Ca+fw-=jNQ9|xT>J@kubrc>kCc8sWFJcxJi(2Gq)QZr9lt6i z10ZpBQk|BaqR=s+GeOaX+5GW#AS&nS0!-U0M&6Mi=^MA!j%;vnI|n)C89QjV8rY&y z-62hq0NTpE_`dGsw|0-X&aw!zg}E#fkfQ7@a;WQeA=d&xM+31PjZ9Kfr}s8o<`y7D zy#Yb_#&d) Hc=qkpXImG;B#f?&s-S L0r8_*n#&FrnL6j=?SYeN$$*_bV)XE_88P%rZwHoXD+-UT~mSDyrR$*NHJ-SK*@ zWkDbOk!2?i+5WJ0wBZ*laBq_T%f%sj?ehw4+UkB|Z@*WBtpCiCu~W)JTM &n<@+`i2Zv2BZkVWx z#8)~;z|bRT?fd1Rn?ln-GMBf!YH!k2@Hrv+axk #5J5qU%U*Y4ZwQ$-f)NOZ_df* ST0OU;N@g5?1+P z?W3d!od~zj{*Qb8_6Pemj}^fHWa>wu)(7ntB_K2=!l6vDBFE}t6B!>#%LY89zzt)A zA&f00UWp^L@7n|c$5g}=tMOb(OvD6Q3jwJJ_b2-8_3&W?O&2HQpCi5U=lF8DXMJ|9 z0UuD6eP|C;H<}qBaWa5}r>3 *+=-tf&o+s&)UaUr%2YGkqzh?flCk>c> zSm#&9-jcx6oB;TAXL-}noT+|!*> #m?SDibn9r%cq<0E+sSz6^Q>IF!3 8fefHI2l93;zuW8(Kbz-< zvFZJbp{AE}CMS09_hJdnh+#xo$;nvn5)khq(&ZEG@L@jaH}QZLcZK}$uf`SnwmW;R zC~RHM`?4wvu&SZi&gf>!`mr%DGo3$fWCq%f(6NHji(k;mD(os(Qe$2tKXdLJVfW-z z7*zHM{T${P0lnWd-Tc6wSz{^Q>Mx2Tge$j%EatIUdO6`#MsS4=Q_1o`&_NN(H1( g4Yu-6@51s%zX?tVl^Gs1XgtsRHZ zNScJ#I$^pR(disW$B++yJbo8uk=jus734JFxWIb?B>XSJ$hym&rB(7C<{<1Y z>#?xZfDo;8A3X?R7Z4RV gsf1JLa)5mfo`0P5zikA059f+$=Rh5KEC_|`N z5Dob2TT?(?!XZJ8cYvL!8gjmQ-V5|FA&G19CSg<^h&v xEUl73=%lY{7md2s%EdL! z@wA05H!5BeB3?T!&wC @>y8IXz9{~Tv9bsi9l~deG1Rqh3uF0HMc799P@u=x>rs gS2+GNeN_& HtpU&r&3@w!6ez+FnHUDRL_a2uOvnBwdL(z zuGag@CGT35w}iz(4Wpoy`@sa%OFAL$tJ^qD4N@3>usetnulg2|3ynN2G6%jH9iaBF zj1GO$<1%TWPEsLpF|CsXqrclF7ux9j1;m3EObPB-;y$*(A>?e>>+fx>^N_ld!!cvu z16g2@;Z36Sb;*o;;XZS?vr)`0G~{7M?%l_Ur`Dr0h1Ubi*b_DD2B~?6mH|+IXfWDs zJ<=AUGh%W-GaO&-WSLRO=&-`hLXSF7><4$FIZ>cfR2V!5wE*#5bD!sZ zcJJ4$y1d_yHJ+=kn(@|jKP%_ujx_V )JVlM zM8D&Q03{b_B7tUt*q8!is}+L|MLf&vu@E*-c%`Ohqbru;2Z{Ub5T{^3IQa2JZ)X4} zwr4;%Zb`#OWT)sY1@vTL^<3?{Z!EH?$H`2V2l3Ue2?KXm4v>>tf3v%9`?)G~TKQcC zmrC>MqZNAXP4uCAbe%1ovkZ0(NJc?UG4#O0A@yY-l_VD)!&64lJMZ
ss-_{z z9+_iKxaPV>oI(5i`^2AggA&VU-1F{=g6ej)3Jz5kvmP66EZWmZ8Ay1@CjrGIL?)0u ztt<_hCb%uJ_xFEXj0(d00#&P&G!CDp^f$z15=CyH!7Z$hc$rO~&p^d6F*8ttc58^; zl8%~bh`1^d(`tWkLN#}kFf2&;vRN1HjXhxi-?r`rcTdl8ft((09PXER{?jZM$N9=t z<7-ya9xPpM^T}R|Y2_t4Sxr0PuUDD|iSb432qQ=t$c8KM_YRBq1rM?uk%ewUy+SNP zmZTajDE+F*KhaS*mnlH%`{crF%k63dU(kjLbc9871X +qhZg-&-Go|!6ii5)!coCCiTZUziUjh#UKiHMOXuMikILLV`= zQK$(d8R2oofUgWsEfYns75Nd1?b-c<+L$As=oB`d6D3^jM1b09o(%rO*)yHPIn+pD z6&0A%S{?wF!`nYcw+SGzm{rtQb`0HLP%jjivTfNh$C~+>%93iZYk!{u<5600{Q^+x z84PyUou<%^*Tc+Gz#~D6Peq76(V^b*2TQbK?P2-T7&MaJM24k`bR{1wD``Oly5z#& z&{o^`T7TU4r}gurxZ`pith8N0zv!T`JIJ{6dr7A^o$axAWv+$w!E8A?95;^tgV{yf z+Gbp>qYpu*?0bXo1qbLm=$ZmROajlVc+9A>1`F+ZC$;R(`uIP&JLbRgdbZ@l_vYLq ziypP V@F>-YHu;x+A_7Mv!cr9;)3T)|aSYBh?^}fRD)XGU !X)KPMlM6dlGke-Fj1g;MliRLIY z&F5HO6}){F?bQZqusH=vk4*$Mq%LiONBk?sJ0W1B6CR}|xEZeyIXKKG+oH)N8@OQ? zcd!p2O{^M?=L|}6q_x*#X v44`6bPw2yIM-msTD%?eQ(hrIm917gS z3qy|z-JK6NSDKORz&svajflwYX9BVOlnak@(5CFnkj_%PFNy^W`PUoh(CeW!)TaMt z0S=I%3mDb#Hv>d=^TeP%4^{T*KYYx%0bICqdRaCc&6rA`Pe27HG8vY!Yw@O>kPBqK z$^su3G#sgZT(a-1l$^~?)?{4@UHMyHHPN$#&cVr;m&J@QVglXlK;A&vwO+WXd+4UW zgv}kh%uD9?ikl!U%Xiy<=pJPNv3!?<^A}@?o#jCbQtN~7NkZx5;p>}Ga5vr&kWW+D zp^1~6ec-@JLAkt}1uM~OD+&N51Z04RScpU2_empfFdJ~arnj)i?3JdW<1WKY#OJl2 zp3v4rQ+H#&d3u)Tf3GJ*rbSCZ*?o&Z_xA}e1%0PN6472CEh|Qg-SVILP`2yQ`g4Fj z|MLYHRIJx!q!vaiX^8xNGi~s*l5P <~qplm>mpnlQ_$w5SyJLS18xxO;e3HO?fSrLD$yPI!NwRT9o zq9F9-^?^M!=dThrSx7^&Y1aCQ)~VVPYkBZhees+EB-+^$>9tLPL$I*vO`B%guU%DU zO&9lf7`uwAQ+HJ4(R_H};*xd24AVu?gJbH+Or5shD#QbqaIdGc{HQy5w0mGlAqS*M z4#X7AxxYYm=q!C7)!#N_J=>kwz;sEeY55gb6mtr1ij!Wv1s lkki?JT-Gd^*3#zm_w-{_UL5o60Z>CQ=aqDLw}bj5uExZQp}5 zjSG9h2#-Q|@!}?u+Qw7%?z|-(vn3N3{l4bRmF|JI-Mi87xl;TBOXqyhLRcsN6AQR; zL7tI@U|)t6ss*EI6ZOvg>YnH9R5_9|)8M |xCI|B`60&UCb z3!zQnD{nB|*8i?tT!-$Kf?!l2m40DKr&S2{Yn}8es`H)i-RH--xL3;3#W~8rJN=nx zZ&5r^4D#!MKvAlA14IA11*AaMF=+}P?LgaSf4XVR9A`+E5U|0Q)^K%`@b93ti3dep zN~yMau@{QF-O0DE j93ZEnZ;zAMeK2 z80StQKYTRATfKSM{K}VJD8&yDWO-&?5UT$i@PzxBenby+3A~mpK33(kKDU6>Xo_X{ zNJ@NF{0y|y5BPF^^GjUQ(P!%U5A_`aq#?+1owQ{1GuX4;d%fN3o`X!eZzy^K!-5Ke zZsI%9{}sYvl@)B@_4Zuj*&H~tv(wtFzZn3+3A}2+gGh|n(9rLRJcPx*8CRhhi;yOO ziB&j?pW9&kam6eIAyi!w5WH$)X-b*-hzVXB;<=diJ4N3XM-w+9286kQ2pqVW=O4?? zY<$Uxhw$^ec&>7EwnxzvLrvK+lE&xiw`f;Je|?AR4UmtBbgzm?t3of<@k;?<^V%J> zsRq!x3fN4%tQ;xzgAgCKL&?_$oC5cdcoW%Jr4kG$1U%d++85%BaL*|zQgy~3y$CJf zC){fabvb5rx!(KwmK+fM0@|OQ^bZB)W_)5?CfwU2`_5`)cJ4X;3o>CO07Fq1QSTr~ zqVcDOABPWJASe;ND|;Bgr!$JPbOh|#kAMT#2Lbq0;=ofXRfstT>-%xje0^-yzd)DM z&ye3@6cm7NXCK)0+W5*9js;_UC3vH0C|gGcJ`OiPw8!yle0paHsf~v_g=L&Ja#S+T zIlf|9E)ovMxCLC%@hDxTwIJB}n7JuA)9yQa)?=zrP;b2LhM#w;Vk95w9_?8NI zV@uO=Ec=Nv4MuuOBCYQ}w$Kj6m8(18gtkO~PV% 6A<8=pY!S(AAe&vL~ z9>NlB5j)xl!sqYNz*|-Hp%s$+ vQ6=2;d|m97w7dQw5sML2wh(expa>a{mN&l%X!h>gsU(YFqHh!#xWznS87o z#NRAersU~o|LYfy4V2|sdwfMReBat(+FmuB#J}ZYl@#A{L!V{oW%={N{QqjFFKvm^ zcpJZE3RFf$+%@g|U6!-EIT)}uLLisGGAGXUitNpa%65BeAAQARsO_Ox_IUQZ6^uo^ zDGy&x1Tp%FbBcpHLK;$8 !O`?!S3=5iiHd}WaV9*&|cqe zx>pIbw+`HHbjX#X*b<3(ilgxLaIA%}_4<%Vxzg4&dNpL#oh7#K2rZ@+%K{$hTLZ+2 zTZU3=RUUAtNsGh~MJfN}PAr OZFJzmsAXzDXBed zhrdR?jLLHb&ksd$#k`D6$NOZ?C~Z~u J52g6TYG_2?+4Y3Aco{?F)r3WiInEA zs72fYoR4Bir4+;@-MB}c*PLCHi2(`3c<@E3esY~$pQDHQolyL&!XPS^vUMYNOTnNJ z4nLoN3{>N2(0lF}VHEg?^2cwSwr$~lvt3s~=A1y?V6gKo+(f$a8|>f&K%^2kz))=W zuT36MRIGS7VNxjJZ=UfV;K_^Qek=QNlNb;(>Kw@!8&`pbu!U|%hx}IVPp+hhTK68h zX6(}Qi~u_l3{Me46FZ{mQ}PA?#l#hy^qDhD3kr+JW&esHd-q)1W>_uoMMj`5G=M7e zo}#^x9ipJQ&`e}QRrDng7z=}g@aESiAxikcz0qN>v Fg+}26*%L^U5J a1!H#Eci0)%X%C(K6!u*G`6?`Hx@U$NAm z6 Oh}2v;Zs411uB~v`slv{#XJ>fO z0&C~$^FFvI=0j41VVM~&_iM+NO^PY^yl3P@&M6B27gb*!Rn^wLO(RGsU4kMFQqmm) z(s*b|NokOjE 1{NP552x-6b+k#Lf@IS=^Lr^6pvZK2droN5T{OVCwwa1H6yj z)rMNLlO~uO6>6oV K4 zXK7ET7(fu-3>3fQsx+>nofW!E)^ZQH*BL`>n!APKm{XsJprVderFL(yPeW^;g0v1Y zX)%LzaLp!#TQtocK9m_l#HxC2>~%90CJ3~!$Bi_^iY;$Dk=X%=a%&LVM-g^itwV&l zAOOX4EGRpV;16@5HRE2VeF< iLIwLCET;}u*+X%2LP*LR*1JS| 6D- aB(crtoM2YXOzYp z1ngFjLuS4RoWrusLJ*WTf;I+&wo0FETb1AZSC9Oz+2f#f zk-6(f24Dxbtj%DGkxP?-N3ter_k`Xx zLcTM Bg#!^FVr;i zoALF^XD>}92ODOj#oQd{Ga_|ikL>!-y0)U5UM%zs=E=(lKdgNlHWnarF(n!93oU~U z2p}XL T&u%7aTV^kM@+PEw#gQvqG@K8Aiu`2H6 %wk~8W_EH%>}>TikEHtf_^6m7wfQWIYm!(7D>Fx2BgH{L*f-3uMB5Q^>l zgJK#jWL{i1uK#&=PpCocC({ldk|hjBzss*!YQ9+VeQ%l4fpQ$MS?S-Y{ZHkYE<_0T zxVQHFhbnTF%57zrcX@}WA68!Ob#2>nb*mf8YAE>}1a&E%N0i+W!u&h{9R>&3FNDDP zK4PAPuP90Ay)H(87b&M7=_{i#9asi<=T4Gm9e2V)J(_?wczbVd(0+$N4E~xk|E;a+ z$2E41CQCEF6`$?X2o0o2 aueb&Ur(YSO6H=x03rInCeW{hWhHg+C6J^=^4*7I?xFX-ycDH-T(cw6 z6sRlUDv=+Dh26?CAZv91a*l`d?NJ%K91cI`SesgZizD)GE`%$E#@b%HUKHM@E0yZx zvPV4Ii-hw_a1u($O}tdK3*+VcvPNi5QD)OLQ{hyH9-Cbfbedk*e_KiyS&KL?6H0~| z=02QXj(Go!u~OnJYkP;zA?c}Q5tbOH7XI)6(`5|QhZ#z;v_g!8x3)KB%X=)04;>5! z(4X&_2XG~_;ZQS@jsx^pd!5UlIw0s(KOaWz1wg?$@A4kih1tDS`7>BC70P7T&i~QG zQ Q5k;_SC9KEGG+?1*(3eV$gHbu&(Ro;?`_{Rs$R5G*`T&TCu-RF}TPX)tXDXzC zB=q~EqW+# {gKIi zQvmeGqvQ>p@tBGcKO7G+aB51dcU>B4eC_H1VDb#UZ`jnUi~7o@sZQOU{^{60v+KnU zD eai+(Z5PS7!o&t3&y{I&=;86TJPRTVj*7 zP6K{NGhLNkw7o}j0Rv}SEdvg G|k1hxDe( zkD=m^EH`S{1+rnz9d{J~E|Ctv*266VY?Qu$RjU$WUl|iluaf=H1f#Vjo?G`L06R;G z;!CE)o0u-%ACA7sVH9vxyFFt*zZ3_XdDdYam#{DHjEdZHf(~5GTIFpON(vKrNuC*U z@d&w24oY|=Jq(NyVBx+2HlGlnR;5b#iCml=6#xmQzkmPQAMyhxFBT-aG+bujS=A-6 zjX;N_4*&l9S2^c@#`AjDVs&h8SdBnQFyLQ>;*4M(S#@1%dc4P_#nd483BmF0&qbcS zzY)y{Dde7WPLbHUJC5729aOgYfaBUF2Wo*fy67L!sw)v8H?EZ}cxJ6F>S8{0MmbjX zlFa)Zkh3HJ*P^`7z-mnbF8Gy`IV}MzUaP{`uf({@d0uAL>kmE(79nlpggLWH3Idbd zP|C%H=U{DY38+vNsC^I-%`hm+#Zj$GvIFn6R`-sHPjT|39fn;Oc8nKKJ>k}F!SR`J zo?nHG*ktJIU-KO<^Es}oOuJ7;?UU!#|NLjFPweWgCi#6^8qrGACogfwMYm~LID VI`5u$|`SW|*kzyBs({|jg1L9aN05qw2-s}DLXxfz!P?%@te=3P5 zJL5RK)ZAQhkfjde&YK>f&KE&c+Z(l8n3&$-ewbj9Z*<<)IlaHA`n9D(Jl;BS4*zP& zN?hUWY|{02x**TrPTbus&n#-w3T5K!3|LZcTZu0 6Y2@C7-MBulG5wc-@ zzmxTX$fMn2;b(+O8b3~;aPN}yd3@JzPdAgrvXt7HrHooLT0e!Of1%9krv1CZC}L+L zRVo?6m16V?>|`MqS6F3SDy8KA+SZuca%!O}O|b-G3$1z}Q1a$_Sp4*z4UQ(Z^w|fc z*qKYzj6*};c27l{9(lz`z0anoPR%Dw;H7G51I}G$z1PO5Lv)SYwTG%$pLbpC7BudE z5^P%5c3e`{b`M$uuHoddfny3D(@Dv15;D?PD+$WVBV7YD>Qez<|Go3vyx+ndP%@Bg zk}_~_Yg!uoN6Yh{JNe(aKD=UmBlku$L6{K~0e6hYH%dFa=bw9R2 8U+_|m zQwzQM%df)wnD_Nzg7wNUTiqYt(jJp`OHHoaKLH}Un~k2eUge&PP3=Kf67PFI8GlbZ z=g *&rGua^46O5Up8BGwRGCHzsI6DXCEmj>(lv<+lIDZ1Q9V1fUMo#GOTWaxFi zTdYxR-R?K@;`rHn%JJI24Wxs6HeQEopbj(XD4+!E2(zpOoWCc<;Pn@I0C3szaD9S0 zi;#jl5CpefprnwP`%WYhn2bh)hXeH4fcaJr#Nfd0Nwb_J8alje*9ZeQoG_l~(XX80 zPgV*n+W&fIdr)?f5VzFUeSEQNN%ZQg-T1q)e&3il<`|2D)%=3BOQ-oOq4SUJ^`=9Z z90s+e!^cC_%EDI@d%_DJA0FHPvd;fbt>e`F(2sV0 V98P#_@FFwg z=$?O=&CClq-pd$8o8o)U*4Z@xSyPBY+z0kA?`fym_7nm4Cc`-EHco!^iSuTZ^B++S zJrd9doZ`@Fe4*ehw+I+)c|dd&Xy5Sw4OLjx69FNh?FmHu{(fHqJS=V#{}V=ZEWB)> z7HVN_4be|%y^yFnrFy7R8 -rfn2W)P5Yn*7Q-F(E3Eo6ivy zv?v^LmVf>}S)o18a6?xT{m8=VmAX6@yLlyVYy>I! B&T7)@#)^)>1pee`E_ ztbFmKIxX8Cji~ligu%DzHk-2yEQEQM_;=FZ<)%H~7%gc7HvN})&r{}yD|7;=e}77C zGyF2UqWrxrnfOPic6waE&t47Jqqo5h`YBtFBFwr)_@kn&i6qH2o&8YdbhR5z#(e`6 zd;S2L5-lJ|?uH&-rnRJ%?iIjyY*u_M XXAGqNH9cVrQ+%=yu{$(zHl&N=?-8NbtP2GIROzZ2C7Er0#VV!90w zPH1zP^WDP-3v3P~N>D%~-2P7O ^B4LKGb zOK$34F+Mn4_$2GJ5GapruU!*)U#ITfcau!jk;LD`tC-pziv>*zntGN?Z{ZHcmflXR z{1&C%*%K~(-KRTaSN)NXBlWqxQS0xqkIKh4x8(iZxnN|B-Qr?>-R2w6`RaC2z|_*P zw})|2<+;^}p09zz?jeUAk29+{ *Gt zAQcgRB3;kMv{n5P 5oh<5 zP_@dCx0=m)3s)@4FI2l5we?)ZWw9bFDuT50rI(^Cug `w@a}mo>0H)SRBY25Z!7-M<8261Yb| {bAJJWLDR(gr;!Kze)qK%kiWx-s%CZe!Bo#eagf=V(ZRSe*IxbhI)P? zN&WXt{sb}B8S?V}6OWzqelXRVbM|uSXKM7G@ >)75EKx;hpK&`0vp zA#6CZl=X6ajhn=)b3Ev{Y_q&|FgXq3t@8Z$mF8VALqipydb&JazsD47@QrUL%tZgO zVlZbN6772|UCYi%M+C7j&=;?jT<7vXYMA3OMFcu{t2)QR0YUB;$OZ28!zlT4DXmE| zTXR!m9Y=Po$ufIfMDNwAj@{~)C{|hfD}cU -6uXPu=iU66dgz&P}TNPF=piC%yvQi6m2PmD?WBENB| zbRv1NhMRHcv0NV@qKo~{2GlLKDy;fgL`(%EIa8Frhew?K9Q9unwe@ew3_fc}oW(F! zdf4L~@W`auw-*~qo!>g>d6WcPT>@S{NZzKWJKQ?}Bfp{3)zeKqVeEfcfX(UDV(pSI zK*1eF;(WXP-qX_(Xt98@?L83%ASNmt6jNS(;P_AH`{PVdw_SIsF6?}iTKhh}e&ecC zxtv{(^2(1N)e(ymQy#?=wFJG3q|;0+F11H9H8lg*@V5Q<>w?mN=RmX6a >%Zok87)8FM^`Ttz+lfz5fICSE(Hh!nJ_AF*R%f>Te;im8H-Nv7< zk|b|E$}hHPY{@zQ9B8-m 8MIoe;WKpT6p&*{i6>A6?BA{c2M~W4xj=-lisG>pE>`_!js~0YVV )M?QHMxJ6F5J#EHr(aSv-aa+J|fCOu}4 zT*(f~w;4K~kQ$&PnQErFDdiepyn6Ps=j*c=vO#w$t=k-HwafTkxr8L;v7nZ!q?WfY zSU3>Wds9l+#ww@@QS|$$k5rR!e1P`>E5H|j7x!TV(~7Qu68+Z~6J>ySdgu0f(4FCL z?rWh%3a(52GsSkpr6+5G^GvE4`WkV6-?!hAw|{l6wrR0O?mhI0gFq}Y@FM~n!6+5O zYpjV8JrU{Zuu_>v)ACL!chPYtl~EhL7o9T&*9ku~=lqKavo=!z`XT=CCOXp%yrdZK z& j0U?hQ5`?d5Tqlz%dtSXfT=e_<5;R3XPR?M~ z*S-Cc0m|;jJ%C3O-AtC0Zdy_0@|JsFxM1@&Lcw6+EU9#2Us>6vC3P?H;H567i8P~@ zHP^CO^*+<)9&@W`OHfWQRQt+d0~nTR(OnwT|C*^vA78k8oiZG^5C9B|9*R*HVn3^G zfDz~OGon=dDn*Ye2SEa$h*RdR3RHLnE-!$hFVM#!tT|2t@!RSA49a}WmGVRGM&D02 zv8J|+Z< DzdPH5)*6NYuvbI`4oe(<3|u+{%i+MTUwA1aR9s=R6DJw#BNC zO5$Q)6UAf3T~|$HC2!+tvDR3a0G{RY_oa3UdAsKdDNmK|;)}HXSM&0WZNqLk!d71~ zG?mIeWZJ>M9^b&I-Xi|umE=o(_R35XjN}%AWR;ME^051Fz%2y>RDG&k1iD8#8mgs% z>C}NK2!av;Kma>c(CN3G1;kY=HK-*B1gcfZKY#w*P$|{*_>`OfzdXUti3*d=fH z*Y+(TZz2mV#nJ#j$@3#vI%Dy)8KNafC+HNvgZf(I7;c>v#_fKe=6BBic)Up)&H& uf1KIx7I>7FP)EUs7CoGd) zrd{%nDm6NvrB6 PD_a0!GC~$w-+w4tc{y_H zc+UNo1so=4gv81IYt0(@maDaz )*~KYO@Bo!4ssg!t zxotL}c&JJ#@5>(esL8(oda23}u^|sLgY`_UW}@f0|17@bRV-R?UZ{Gil!l#wEwlpR zWR=Q);?*5Gdu{6#(jEuS!QBU)=%=qD*y*1tg6pvbD2qIT%1oafdL0u cbWVPF! +8suF_16F7L)GHj?s?l_kc}D^Wb&66rOl7ZdrMi5qtrh2zmPIxHHT z^?PzqS-%KAQG%*Md8;KIS96i!T}(RW jrhp{;1o)?S!xzlz zfJmx9!#{VrpOsa363ryZOCs|4qU&}}gy!oFe@>FpH?d(1qmp%Zz7)5Y7l5{W wPqP9HVrQ6fS7ch2a zm-Qt>3Nf6`({4ZIyjK aFOD0)jqtMw7uX?8bLfG? FEyP!5s5c;Q4f#=z32Nke14Ug6%rf=%`iIcPk$b8g6pV}ew_~sz YvF`bmM5S>8wo?X1 z)a+ZPWRmKpKp(W~e}Ezp{NLlB_tALOksJE4bfB4=JPO$~H~rxm_avST7Xp)gu{Y%# zWC6WhFaC3($j A`aTzx1T%d@rnbK%Wyvy7N)HeYWu_McCxldB?aEbE%i(k z_mb<1(ws_IOB0<*lJbxMgyXwAPU!{j000eysi{9h1Y5lx7R@=`OMW2$N}@6rC-c8# z01r(7E-TOo?VtsvB0N(b7$T9>m=5q+U!63(*K3aEqkBH{3Z5In(ykx5B6IF &va~?l9maK6NpTx+WvOI(}YV0}<_+ zNWzfO3|-(JiuLvAmtTc(_(w;9Ei^c(K{3kB`UIds&kzuvSd#=jP6KP3C11Cu9^H#+ zpAYSR6)w#I9^Yn$p2-n$;}GenFCAz~DkY;Ep;zM|ByU!cm6I&wYKkyZ0*6XVmBt{R z5P;j;=iapCyxdi^=>Xs`xl##kvTmH=0W7O Q zSox+}&?#Nuzzt}pDD+`^dv8d#Z2OS8ryoXv7`9{up=5G`JamwV_!ye$ReKaDCClxH z?}CVFfU}Q2%JeY1hNFRrW>0Kb^nPXYDRs&y=_pquI7f+Ah;FGz gKS zpSB{KlwzAi$iKw~4I~4I6$FF^qMU|Oz5##X66pTnQz%cE3OL zNP$z8)dU^%w>&Yrq;2QRyErw=duA;_KBV|HLdk w z(As6b4VrBE_kk@Y1Y@BjW7y82TBEAHi_z#a0vlZ%L$r3=I85+N_JuKY$}?~>hzgtV zrzx&mc8ZoIaGYAtuolm-3`807q-6fs8rj1I`cBtS8{UI|gop5T+5xOi(5@gTFLOyxwv&?|uVgN$Y|W0p2^ N2fS_Ir! =-_2w zaok|{^HhaD<1~uhBCyl(UY{R8{>Aw`C@!QeJOSjNNk%h{#k=()p5NuBIA(=EnJl~v za{hVyJ?SxDf5x-z);Cbv#>r|Q4&dvsAzviTf-1x^Q!L7T=1$>BWH|V7fBZ~RdhFMB zkSC4S34lrDk&NNjJlFTx9d+HEwVIxsZ*R*lvBx?_wC}FDu$0ZL@W=53zPE>qsiUf0!@ac^~&d z?`oCvc#a?BIc-U(Vz_*G!(5mW_}7i!yfSW6b+2-|uZ4+v16;wq#vv~%+Po!mihcn6 zK0|&Go+-&7uf`QM_k(jGTw4zg8XhXMAoT^nB9Lfd1t^yBG_+U@+xm`zminKS!1NN* zMEHV>(C3%Q^1Hx|N20;vvKZt{4 o$| zIUtq+PV&tdL5EhIiuimJ3@1hKi(56B5uMlxv}ao~%Ya^-N$1bW`UJA$7#fUe%EB^? zQ`EJ#*xYOY?U$uxF}ga2rT7ILzs_Ts#={6`IVI#4xQ08zYt(eG3_XR;3z)SAlxPgT z5S*$81_Z1&GZue_%p k1SG`6(Cs;ud!z1WawnZ!fZStJ< z@XDa*)nYighF_2CT@1L)C{`VphJkcr@7k6YWVyC>Qz)MZ0v*dh=ko&BJ2s>q>Si;> zLC!#yKVnOl=p1pl6{HTn^vl;Kyu%Y$8CLnb_|}BElV6IUeRUJrPM6v+LWcdfasuup zZGXDj^RW|Y&wO#*sPQZM@PR8}fL2bm8j}`pcoh92=pWby{ljL0$xGIcB#tB@>Ib32|A*YydH@|{K7m_xLI80q zM7`aWKyoLl)xTCMz2lyRS?6oMv=alfD2JrN;1X4UlZN|9lc5)&D$^^1^8&al_iCv@ z;#RiyKY;)F4ZuI|l^HPMq3I38gP_S!lT{_uN(ve;@^ybl8R6WQ;`&Zmc*?U;EGZ=L zkhcT$tSbuZ%TSKIlIJe&Wh2#SL&UdZC$wpEJbLgbq4|1?dr`lm;G-R|qb{-My#;}O zp9|LjPmP1TG)&j0^-JtST&6dFVc81VhcwPkH-6e7>$&i@Ggsa2;4!R$5kUMvD7j_< zY;Z#$S=6r>nfG^=5@Z&XT^|8hm{L!7-gY*&zUI| M=;87wTO65vj z@FL^?TT3-co?}@BuLX=kO-2`cOWKS>n&};BUwuy27-%tZbFiKLvTIN%@JK)_!?LH_ z%q6`+&)_Jf!+Vn`WfWhh{~bdTNhDK8IwRx1yH`xrH`Eijhg9u#UUIwC=^5TM@4bF+ zTAf9CBGpM+2%wBsPqs{1*hFAREKTMhBTo=@bk4kHOP2(IPAH$;-;B7@M=-uw&|Bzr zPTVJTR=in)jTECb#NNe6^|c{$E?;brN|aiH>sd_*IGV*$yn$VTWI?B8h$;|Nm`JR3 zET2tXX$;>V VfthZ6fHD5>b2e(9vvUcZ7zdbC=gaE%0kl#7{}E7e>TO^+{czAshZ% zQ|U^I^Gg&8ANt{nG@%+Mx_)m|M}I=xsGJ^V2h8j3x`%cyu3><>k39+kW;)ymTcicU z{YddT^na5r*G$lsuEyHDJ* +E;4nu)Pw)!@EO zQD?nUY2*6wj3Nbs_zjU=Z#o;+IrccaMgR&0r8kv>PW5-F)KqC_<~I?(?d`;(M+}bA z#3kzb-NG5PMxvXT`Y-o6+4K~?qXh03wA!qt($GJdVLMeIraA;e8-%b$`x8hNbovHy z1zbm8QS)OrKg?o5brANcjV15mjslpw(x>MgN9?TiMKGS7RHmqh*JfEH22hj!*dS{0 zl_m+*)Sz&B;ar{zKq(6Bdh3ysceC_iL*ChRJATRuGPavk;LmCoGrxI0uM$a;#p?&Z zLztjfX9ZS82&zK1o?p@K8K#TX3bNAJi$CTR`y3nxAwiJ @R;C_DW z_UyPmj|eh$Mi*>|JcGwgAIvcs{LM#piS@k^bESk6O`|91e903jE2ZHf@7_OtP$h{< z_h0@b3=))pEwq3wJmDaNA<5F N$@_Iws!DbuRDk z@;HVu?X7UWN8*P_>p@R?4ntypPHkJrzTv`Tbpje^5yuit{#Fk$`6Z~{rJ+E0XnoK2 z0^LcDXPu8}0Oiex!i)DNCc<-F@V!0}W;Cd;R37<9ZyD^)2XDI;4MF^j#6fqdBdLuM z;CQ9`yxZc;?+94$S^7Jz6m4SlIo@a!gE; z%F@UR2TOM&clVL%(h7%-A7;`dI; 3)J2QPfiqCH_BTnY2j)-e%w;}Ur#Hzs^QXfWL^$d- z`$?-Z&7y5tbAI<-XRN9TL04?pKr(|wa`Ck<>oda7xTkrBR>u^`!S>Pb5}P2x!38z` z3gx!3k}qvh&M@N_6GiX1=PBL8wWL7|ATYwU;)Y j z0;a5D4#+|Fy$LJ`x-eUn4I(F^Q(zp~d@i)S^{d($)mP#USreHGQxUxz6K_;rp(O%S zO1kYgbZ=D({eASt^Hiq9``1AuTAd5M;mHI0p4&|6#SGw)46DHZJm)!RMF>X3=E6m` zt%Q(a%g=@AB-XH%XYrZhweDWt+J9FRgH20tU9ZUNcsYkLD@pxss_MA%SJlS>A-%5> zJM~(OApd4S9n9?JfalbpSfe#>JcWI{L*pyB?&I#(bRSzn{9aN3(NhlAO<3SOVw2~f z<&Hi(P_9>mjSPQgie5#R{YD~rc%Zb*LnUF9aco%p3U~>)KmVONj!%c^+t~C|Xe?lK z?BL0Rmp+Pa;*!*tzp-`vX;nB`XTQ8H#in3`^ )^_wD!eVU !;bGm K0ZL3mRfq|hc^6x5%@rQ|E<9#01bQ&F=}R}(uMeL5E=iYByB~4A1~8>t z<>Dm9>*xo(Ik9C^xahN?*adP)|KLgp;3;jw9kI `CxW!zba&ZZ~i*y zi+a(v6DOJf!x6<<+O6pO82`&-)Acq;9|m4rnpuXtsCscF|LcHzJ66$o-fJ8=qczD7 z&Sl;`B}{qLKJ!&iv@Hg(st?NqX!Zp7MEJfn+xS~hmOtu+-t>1aqWM?;sqC7jt687a z0(9JQrKYgBo4GQEYK|*C7o{tBxQ~)MmSFi%uKHC|AMx_O$G@wfKz4to`h9Qb^@hQ0 zSvS86`{U!#?pa2dr4F_i&f8R*x&6scrd-hRES6ZcKs;t{n|t?`qgQ*Fu;t0&BT7lG z6#HTl=zw~xJVnl?Omaz?nA$D;Dde-|3;rV!=zXRzHs+5`cNCoA-uf55@b3;XAXmAl z1g6*^gpZ4Mb4G6gz0wgJV+l;E(YF#cJmgqS=tn9Zb3_iwz#qdR3}y3pV8eW-Pf_%> zl=!QVb%Y<)(w9%uR3?QONJr-gsd;SPnhofN^yL?)F)z+c;z)6|AKF{lx z^z3J`-7mX2Yl1{8*ZF#}@nJExQx=Z(hVJ=zxTIXtLfXGq!>2LVFFAt#9W|BbKsm?> z9H)Hk0_{9~nCsE<>2B=&@5c}3L~XSq_}^#~mebR)@y1AyQ=r)2VuNHx@({yH;axrm zBL!*OpUsSWW33V9^VM|0J)iQ38w4vDI^_<(**E*o+gZh=cb;~x^-QG5%74IHtu9q) zcs%8@ogGs2tm1n)Hf%`vmKUy2%TtHP&P?2-h15@25)GUDkU*Jq{?}*s5vPOvKl4?n zpy-=-d?=Nuc^EfQdY0wR=atjy)LD-pMZC?10Si~eRbjzMrp4PxM|5tr71Nin+V{Uv zo(-wcZBq@GPIJXAetfm299iNXHM%ou>9k`Sg-sbS;zj2BC6M2B?6b>+{OC`k_F#1~ z?#tpGvB7iH+0(3Az1r@WJoa4aCsuJJ{M2<6&dOhvvM*7c*U#S1-v8EotbKg$%hF8< zieuPz75d7D4<>$flGi|DV+`8r3N?X*17WgXBI$hgZ!cdlmAWXduKtvd$g9&oo{$Oi zp!u=?@psQmLc{N+MaLhOr<%Vhy}LEYE6B-oZ9o+kx3+O)_z+5yb2%^0s|OJ}ZRYFP?o|dBqXAZm@gs z1DFmB#70nH^sjkO?%jw;f_co `l{iE=CyXp;Tf(mIq6F1r0)ObWSA`e7heZCbe zg%->ro`(MOV?33shoK+n@_w*7#ft4_y-lU8j_dYk6qddYcnKu7pIRkj-<-t;?We?k zCwB~t?`lh#2zsIkUHRE+q2(Sb;)+ZDp!;cW@5`Ro$`MyRo-X5X+Cs_1Uo>mf*$@!$ zJ^0Qy`JeW@EgyJ|*L)rYN;1zetw|AbJe@WOlaQwn|B%%tRL1!-X!~^Kvq9Oi`NWCy z3AXd^C*AJ)tE-?qn)m8#e^XsqJf2}RX~f_d{QIATrxC;0bv&PHD1^wjAIUNPDrI(~ zyZtdmb=rCc`|%a63KJ_WE$U%Z(F|cDxfH}WQSA9QXtfPS$+;aZbcOlhTQ?K13ouJ0 zqXBjztlr+JC9%TfScKEuZ*M^m{Kd~{&RTg%Ktru5E#n~lKP gG#5x`>zX`OE_mpD*h+|mw<`uOKm9MO`i>p1$QElJlya4Sa<`5?5K>Wq z!*!qIPP>qRZl=X2IXZ(%O0@v|%nPixdDC6i&Fcm6ezex<*+{l?PrbE}FdEbL`!E;Q z^kpf0#hH2CQ`N2PKDmTAdQt!lNCL$iF$rRenr=nk`fsH@7X7!?Ovc$4_lg_Qj(Y=; zt2pmJkgEuECIT=1Z)o$U$IiV9C-C0R1XyOZ7;_l=n1+2-L^yBg&l1 @3 z>RbwfsH2~cp8M9#E$SOhO8haTrvZmg2dUDZCDBwV?3i=;5f(I}MG1mDc;N@M+`?Xi zt$AZ=vAuef?z}?BjT@y`g-UB^NJ5@!eFS4*ye4}bl!Bo>|3GduFolt|AIAS1g!V*j zc2hkS2jaL3rD--uc??z>#y_9038oH4(Ve}*-1nlqbaGj6Wp%t>9I6A`!TCl47s|El zAna$k#xZr#`G0p<26;Xm5^X;L5tQH~iO{ _MPenzM#DGIHbIL11irq3M;x*J!K z*v{(H?&J4S^(XValNZNR*3J`WpM?ce?AabeN2% 2u1T3t=~esU=tu~Cn5Ktt!G~H^D-{7PO=c_w-^kSUU%v6 z5a@s z3eX9?M=^`ehsjZK( zrWhisU*6>?PooZ;!KAsT=|foe7 1Gpb=o)rHpH=sw zN;L2m2VwN3v$LCDJI(PjMz_Zcer=)$Nd0U%m5T~QLdUh*idN6QEk0ca=9xfrd3aC* zQ>)xo+xHBRep~#g`54HsArs@xzw9li`^~uW!%FyMrCbzprQqR}Z#(|r7t7DD*$|sg z(ipqYPo`{NAZbjokmor{Ot}wejwF1&@Jh1|4E$zPj_b&2BvE;(Fv!%|D!(J55H3&r zSy2C?qQ5 B+NtjB)! z3VftU2?l+y)66|h1N;npuK+nlt;e_Do!wde8UwVBF@2}0UkPHwE3=iE2d10b?gjQ9 zm%WBk1w~O9GkT`@T}KHqUe~6=2|HvcAi14O<=89%bA)|i5lP1|9skVMpo@dZ3YzO0 zW^yPgAu1jb *9InC2L47miKNGzme7`i-qu!652S^| z7&1P=@TT~<6pn?^yT5pe%Zb&j?n~1tJJU1|66IVQH;7lLAHdR$&y=i1<%8O8W}E(Y zU3X!N2P_C&saV_3Ye_}Ob#9?+)&zw)I&4dqSuE+g1KD%mLqPE(n?wl)@(yw*Wl}zy zD{g>M8)w7`yUPz{g{Sr}mp{G)9R}tJxGX5;ayi?mIAA%;-rPR5jjM-%G7a+G=6k9t zm!3xVK|78{9^flZA?J-d`OYeyq !N28X0dNu*;~9!(u&lrBSg?BFhzXC*(jgdc9BD_w`@@VTsH{w(~(T3X$c1dn2} zZKBRG>_!y5v~50UZP*$%AI-P>5Au{8S1L3IUOKg x_$?{UX(`hjFNnOk5G z2&HBVWlF+Llr0Vf%8X*SjK%T4*vipO!LgJ5P-=Z~UjrfcTc8ZV%EI_T6;_z`lMS_w zT8QnFfWLuJ;&`Ut{O9>667HM}z0{_Mxh;Ml8fdM~F=r)E{QYw+%(?vU%{tOivU|!l z5-GRXU^G76Z&>m*MfuG69uic67YDbewTD*C56*xp#VY&qnMmn0sLhN-LtiLk1AQS= zmC{hedRC)>%7s&46o>Y!vVo9tb !9ppyDJuXs(znY^8HKgRIqGHU%&K&6CY!hh+;^XL8N)MRr8Il zvav5NzgotIG@vX?zBT= zNUY{Vn&hD5Th8`VUXhd!NbRo<7Xek;g_ %T2HpnNkbbXZv5AhRS?|Ne=z~t?btXko;H#G~J(6JxKEN zv}U2zoG68dJxQbIH(Mn~bp@r%e|P)C2TofT-?SPA?6q|tw5w_A(1_jo8e1fe*GT%m zAN6LNb|(>YK^s )Aj*F9qG5&g5)DZdv3 zz)eo09q%za_bI&pkWETm3^ICB78-)Rar4;3lXLKSiK{1ofb O(7_>ioL2j!L z+C;nzI?Z&Pb3$YjF&xe1{`Nr1q^;?FWCzex22&`8KC(hLktUED=UTNERUihaiLy!} zKR<&70WzvMG@uJ2M5OST>wSHB7tFwAq#@Ya-Wk?ZM|~d`*Gg%f@od4)VYV?f2pt;? z>LaESbToW62haNwc?4O5JqUwdXhJNXF44F-K!{^C<97B|*)T^2{1;7EZ4+>~ve0zh z+5GLl<3h#NGvS^3VifRw%fA%p{()g2FLwX->~BmZCp|KN$Hi6tc7=vzp?Dvx%7tLz zEBTf|gLdiskApy3^bSB16WD9>aPMqEyE mxk9pW@MB(jVBoD`R+}Bx8CPTW`{IZB|7&K Z zHHpilA8-gzm*-jnA}aX(&%H8zcNNR)7I2~IZ@m8!wSw4ep`avCf?;ZctWSAPFi5Tk zT|_Wq0^^>vH1uO*q1fG2fs5Eg9q7DjxxSXu84VD&_hq&HqeCoCn|{%j0Vn7wM3s7M zg}1V@(%`=<0JxS9B_*?d{!~#DKNu$Z0GM)YoZpt|!EBALrlVPd(K A&!e^*b&;zr7#zy0qkN;I#`)@Q8VMmb5<(Vqc{z z@~_MG@6%l)^BJAG !BvQGp2EX}L#2c(qhFn#TP=)}3{D2i L<{$t6C?1MUlUILH- F_tt|Yrj_G>sJ7J;{;gXHFsg+%1x4xB4 zeTX4C9WaxjE*ZUKwvooxcryRR05DS70C{P8#q~BWE(O3b7ZnwWU7hdc XaMm7rQR@$83r%E-u33-!`mkGu7AE1G=-EU)hjy(;6p?_~h!f8o`O@jND~AA@gRM z;sOhDG=aoX^=zY}npCPK7;Uz<7YtOB)8;TSkdmgQl(r7+o|9(Xw9-sum|0t6czQ2G zX?1XT&elZsvijuj)#Ix%*bjErynpsfk6sf%qX=8;F9V8^j5BM>#WKErilkj*$;D+& zw(aRH%nsemdC?|!{MP&ESW~LP8Vh`6(od(vn+g+Z{qH|2INoCTn1N>N-x!MDWPq~c z 6`&ceI&O_-nO+Mxjx865uVN~}DgfsE zoq{KkwZO%XmPIwk@IUIKBhQcfW`Xl4%ZGD*O!f7lei9zl6aOkJoEDEkEVQeh9}Bt9 ztNqLTlHhG%0^|0Wi9Zgf-reS!Kxf*r;C>Vi{cjjDBkOa1q{-106@&Z_()@;^qbFLb zu{E=vT8=y@86PsgjiUds>giOg!EQ#JaH)`ooXi&`(fH^JuA<`Y14eByc(M4<(N6th zl>g=SUwaujooS`ii`zC$U6s4 k2&>Ti4~S_(hukDia0@#;+H z-+Jz2dYO)}J^w!Kx9xUu+GvmmZblJA<&^(N)^~tY-M{~zNM$!D$*61!k!%{ovA669 zWpCM|l2GK>dmUtFWsfJxPIgxI7P7bh{YlUB{ax4JmFs$*I_G@e=l#Cl_jui}`@W5* z=-603Ty{UL7P1iYzWhem_uaEmM-gRpYuuu3^hF{n9k&qEpeoLCtyia%l x@M!gWYN-HHqGGKrz<5d2sA^^Vf&y^UT_g3vao Q0r$t?+nHNk+D^-5h54#azzO zJ%q7!>)SQ-iN;~x2%eH`zs%G_j8w=q*$*2YH}CTcTE2Q^d%rvSaSAe}L#f|_pDQ4h zt~{jh`S1r9W+LJv9^Y(H`N1U*x?)ClrqGIsR4--Qy4#VVRBTRPUM5iDEkbGKbj{HL z$HxVu5@dKeGL!KY{skPJPxGrS95dO4-&lM2p_FB+s7r2dV<9{HMl`P#&GIw =SFZ800kHDkX yDkm6VrfqNBU~X{{%aOh^6uk#6e8XXj3SV5T6LB?iY&Wp*&*6841{S+*L)O=qbcdh;7F{{*2{t6FatlRth zU&Dz$swaCfY`|BV{HqvL#2%g^5 Gv#`zv)Iopi`h^!> W?S)nDE6Q1rvF~O$#eR#dp4x&r1fA>CO3Zg28RfX0+R)oh^fElwtJk zd663Ye;i*Tvd@riO`-O*u79tN#$imJwr(J&hI%BF@KT_!v|#N|;%iSES}e&4rY IQ=%b$e}Cqj J;PUH8(r+dk?;ac+;J8rtG9)pxufkFXvL-%SP|V8-X! zM&A=qY!z4pVYbinmEv$Asl?17
qqmlZpKn(}N0yUm7!~6tE^xfTLoziN9qo@CP)p=caQJj3B=oi} zu>h(m_#Se*R-K>fe#ak;qkVo5>&2Hsf7hqQGR~n_ 95*CqBI*&qacN;-B7I6X9I&*j}Q2Uz0kX7o$lyFmh&3kI>}j?L>l)(X+C_FIH~` z-+1?u1Ob#-OtSlNM)L3l@LF{*G<7oXcyMez9PlFh#%R)&MyyleNX+*RYl}uAv)9Bg z>jPfOo%=xa_;#>xU_d$kHvO2%NwH}1)5AFK#&x Op%7W~1+O(*xIZz;$IdFh7eAD-D>J=LhIyP0pgL_)pn-8*xyv8hn% z<3O!)ZBuQ1tv^Av?!^_N@98h{ko;K2YE~S{7A+xD(F@4KG!y6&RG2Ud*;B2X>*V+O z;fe~MxeKTpD83H3a9&-KQkw55|MA!p?-Mz4+iO?#J0PE>R*sQ0yv&YwBNPXCGs@Go zCp^7FmA=JGHF@D$zKI=~c8j4W=w+$p9X!ltPPeRhEqfjwj85&y;@N+SS~pd->Ep8* z jvy6FE?5!{6@yw{+MjLrhk3^T|%IBt)(R>BAKxu;> zsi3#~ _Evr;0WLvycft8EB@#tgX{jXtUUOz4~tj*M| zPJJA-{AV)bemM^533alJoYUV 0wHuGMa%msF5^w zbyxJUhys834nmtzxqRc%Y31;6&)6pEvGk3P>OxEBrL!kvY)`mBjbW_K*UO7geF-z& zg^^}T)_mI8{7Tzz$Vq&mH5G%r@CKO#t@~{WDw~rqA5n6$1g4n;M-%8&JnYl )38&P)z(yslgMjV=@9Nsy ziMF}9EG#B6r>4K!RML8}+%4e?M22f+xI|Y|P3HxSIIZ>mbEze1ZRz(F?h}}C RMrB#G(Mz!7LC=y~Uhj7PlQVZ~EIzg1sgQL4c?rWkFNuI|kCW^tb*~l3M9_z! z0b*S&{MAk?#g_)i8f@g0YG*&a#k|B}ton Ew_V>zV*2-U&M<*3enjoq?LS{n_qmgNHJSd zR=T#7zC9C|XOShX6g7$B2pe^dIKll%_*BH`4u{1REksV5S(#{cV+t2$bYRX|x9BQg z%|UL$(Ew?1K3nkJD+~#4tN536ovuNP7a lRFZ;a@Jm zLf+bV0LSW=3-T-56G7^;8}uyfL+SL_xV$> 2!Syr?WQS!?t1aK-bdFgRD+ zWiGYG@+t=!%>u&8Z})g({&9f{uCVtHo$T;){fojJfPASM6Ms_9A||3M_%!m(_?_X2 zJlrE3Q;Qj=1KV^MPmfWF>&a8BRAZxt=35VAPs)~T1xSkBOQFnmN+is(6nJAj?fB__ zUP;JhCN%T=hfPH$UE9zShC;yp+1ZF7TbTZgOe;l(!6v3ib_P1kqN1WYikm`SHYv#t z$zb)Bx;?$La2l^?oOg|GEYS3+p|i)WKFQALGCvUb%1ioFoN}q3(y8F7viLx=Ka8WE zwg(O3;XTbidKqUcuec47elsIwh#ERekpFwVs?q(ZwXy8%<%Pp1*Pp0gA2iuesRU#S z#^AOQj09n^mSs~H8TY(Xu!iCBBs%4_=?RBwd;4~LbJ$TXRhx`j$;1mEKS& Gf-B4+yLf2NV3%p`QO hu#*V zNBi7t>bdmX+#yKs!r|v5!n2PsWTN@R!%ZRAL}`_jUp6Vr+T+rk%w<*5I=zl}NZ3tu z9bu5cpK->IZ9@}AF#dFXu|EW+Zx=!@0_3PVGnAP$i=N#>R1lZp8Ny5KL;`8_VR|K& z9eP$jU@|#gNNRN1i^hjb;%%thV_qxrd0Cxzq&yCHo|ZfQYWBIL+Xzu>V_O>_vJ%1o zj($ZVyL+dpzp&+1p0_tdvnEWp>9-4~n6cM{oxS#$;-jaGJH?9I_@55U;L--N8l@OQ zpCDv$b6x3217!X2pPv9+4n0v$xM|v3c%n1k8bplj?yo(zRe9imR1`+;8rAk4(|h3B z@MVO)!yuRp^nL39#lKX&XUQlR+n6jK@T1g*Zf9r5yuZL_swILO%mt0dw!VP<>|IMs zcIZ>qlY2S>Yv}kxze7(jg+7VoD#8jjAC&=~1`^sJE+4)*_ZHZXPMGh_6$cHD+HE`0 zOuy%|@-Xr7x{FQ_Xgq`VPtam675eIFJ5PmaJN6q1K@5O^wg8D%RQ_gQp~&Z!s@@~% z&Gq3r6jGgw!*x3)q=>z9sq_qmv|-erWHewMG~R8{V>ei$bo2$`qmo?vtx?ON(qLG) z9aNiJm7oiRlN8=uu`Knr=4 >i6#^EJ>x8R_xOU;z4|=$?NL8&bO7DcxUc^Th9)FnsaL zB5r(Du3OW^eY#Kj3ycQce}XHp4a&J} dl+)1}!Vzp+gvhqoSH%cN=*6v>!M+ZaOCDrOQz- zRj$c-?EjW9ZjWyRk!gS^+X)(hZiA(LRPDwO-chRa;%R@3N|ew2`ln$KhN&n&CVGES zS(G&LZ+;K_H6N^LC>hAw1*D&t=iyp{Gj!LR`;kwVuxwB`?!MXYdqIxR`|x1T4z5%O zNU4$%W_2(GyBaW@{)KoL_c@=nr;NqT@0WgfROlV=QqxrvL43$X>`%}hjTW|x(2)`R zt{6E8g!mvnHa0df1+BDVaD{>U>F3wP{}^`U<(~Q$nBjgx`@(Uu43gh6puGqjehq{n z0A^NRbu_e!d;frh{}qJLc+}FE7d>U%SaOZoj6_tL95H(k>dXmw+`am4UmO@c^Y;!& zU7Z67;W6z7Z-izPAo*)dOulr1d@pJaH}WQ@r%zGKVqOGCflu}jIR=()ystRL2J
;XY45HWRWlqO;F1p^pX!zY9Z2M1cS0 zGujuGW3CYVj$o8ssX6`xrPUAi?=bfpXk2d~?$rxI_R(d}BSAnAj3C!`uK|Po;%5<> zt% RdFeBZ@ {tjvs*qRUd3>AyEL# zmT!eCQr$HptrT{afILAJtS&m8eC58(O%Ag0<}_K2b9ZTucVC>aQgIb7XB-K&0H9v- zg)SSWpU14bCnEGb#*nV3kj4asW8gc1L={L*kN2n3OXxP(0Y(!%9+A(veH ?^1h?VK4dNXeDS{F_ z3{o- ? z`);p^E*G@qgL!R)JB{R(keC%ho@v;*+*vCa1ePa#Ns?tXMM#u3O`eoJ$dQ@c=^97S z@ak$ZR2fVh=M3TTXFe*f!bV^c651h-YyfNj+3N%@->4Vv2lYG}$O~c9)4M+EKM-(S zY=n6D8@P%{paagbj^EQaNDS(>_p2n K#+%fA&2I=t7?O4D&IgMK>pf6Z` zYZUhmDBC|aGU7_PI;+kn%c<9T9)6iQCw6hP{{0#%Rd~J3CjA8r3w?P{p>HOG$PDO& z>tqB-7d9omJZMXXEOW7B#3NM%% zB3C!$md zpElQ#a@xei1o3B(j&=ZaQj0vFY7QHMKtbESL%hhe#~<+vWcr4n!!y#ztC>;*gHc|5 zi!o|>JofoLX__tpGs3@rUV_k%SUmMhn^eyz19>D7#KWr&dw`8xmKf&)ob 9xaAa }yXmk?ze~6-h4Q8Evg9#ln;I%&*Cv5!o zI-2KYQ;L%F$w(46@VY2xNwmo!4m(~D9SbFc52UXpDja{k2)u?4lkdw7W+)}#J>A~s zbD7(pS0Oai6z7SzT NCHM`nQZiR `EaSCzJl6+~db8~Zl zq{5J0%HIpVp?OmDh)U*Smtw4;A(9QI`}vT~X<^q*LjWZ3YYt c*UsH4W~p@$k=SRUDCCPx1PTU%vW eL@B{GY}CnjS{k0!5`JY9gT%+A7#j z__NZ6EV%;rULEgt=5?Hr6nZrm7Xfu$X9fiS1&5#6w?4asmcYlueKGsg_iA@n!~}!O z{{^ry%MdZ8jk6W|;h-?^FX4E;$!No2KjG+6;dQ)yj*J<`p=7Fs#j|DcHB^T3k}B>()}N^=Eu4YcE1LsMjQdM6XGYewl&%anazV z;p$z?s5)tXI`_< 5H zpe1mhpQgV5=X{Z7fbbC2MG*#AVYcXn{!ty|9}W|$_DF&<2X^@mW9TnjrSCo~a0<)J zfMY6oBhicOTxfD)r@4B*7kL>0fi7XCwm(_b?GyLJZauoIs5p1l-|LLz)gsjW`^?wQ zO2(`mdSB+kXD~AUX1IE=GFjH|`t9e_cSGKsW}BKQul+S{K@`d>Kuk>1Zbp}~>wA?X ze|-DG5t~UC_NCkpwhAeqM}#QkM}h1;^9htySfPAVyl|)A1*Llb=`Szc@NLF*-x1{Z zT5FR1c^N9+uTu*(n)CTHRw aQA`C<6& zrjb6NQc_aQ8$ZB*vmdl5F#!#esa2AT-*MvZIb^M`iIt4gCKt@)gc=K9;p7VD4hf?j z-=r-be~$Y2IX?_Iiu2$thw5vW87+d}Kz8n25+t$3L3uemu}3Mqnvw~nXOi|jVBoPd zhtJ`D%6NyB-&yqdBdiQuf-pdJyJuDT`!!MB`+9@2`M#zQrk)fDQoyjkEq*+a`0RtG zYWb2t1AnvCiQ{)UrZGyH--!XrBQv_-5mfWkaT-#*mI`G~VpYv-G%X&Op*J}?Jct%> z$TYcydp9^_O$DEL`0twql`k-WSJPANzGs;K2;PT-i_2s1 FW}rkpOHaEHzi#q44m&%Cq1;V1gw?{d(LOi~c?v!YkG zw$xQrLV=X$P;YkgVgNXxSg?s2uk~kZy>Tu5&!hZHjoYy28K`FNm~%2+JYGm`U1T&f zztc+Mjf(*gASIt7rqo_@p{1p*+FxzKeDOPvYGm{D%y72*Kih|qkqf0~WR$`Hc=djU zXKZYYi|E1O;h}T62Yi{$*S}E;<{jUuj~`Ha1NLjCJpl%@=IIKzn`NtIfpf643NIe~ zWDzaoY p@>wDJ3UBl!Qtf06Jzax3gEAe?pU+t_r%`lS0Ov^wQjg^4&tLcSJi5Oe z5g(sB(GbMO$|?m&s{Q>}s8KwrFibR$olIc17E`gMg|5u;I=q@>ohUER=wao z9>3>C_|Q~IZw~i=VvQTA>(bKWaj>Bd*v?a9-xH{Kx~DrgDaHtRRtMZC(tmsTn=p z7W34R0yV0E+^Y#v7KZxRN5^YKg*aOzPXe+y-(Q$MK0e+`f`<} OY-H;9jDDt_nFD@!R-QI-dMypNWs@CxfnbY=LNoqCV({7t| z(ziw4dI0x2T%W?&_arKwjSFTMZgfVzUi$aN{`-CyfLya6d@euSUEqOuGETrj>a~8O zK|cJ6q^3bRrM2+bGyOyK=Ph0aA0*?M%dE# 7T#gpT^-$BB@m zOowzv;r&ynb~qE2{ABy_FR5j-&(8l zt%4k0G@nf}xX_Gqt5e0GrC?%7CU6=uVU$AIF6NbwkF&+)+_jl@Ga%hU>=Xe#{!<9Z zSwBEx)Bnwz_X!CNhrKu}Wc(KxZrh*!vrTtzP1-D{(em4hLF%^`PS|1m3%>89 g|o6u9s%K*a%2#9=%|bb}27%E_D8Vye1SQ=SJzh;|r3GND|=47 yud@O7LetBwQtz!9qo-A(WAk3&G+WS)Oo;&iL!8ZolGsu zGI4OjJD`d8I)G90$m#CytU0WV-h*LXPoR-uo^B5Q1;)}}{B;N691+oX9Aq$t8s+Qb zPc)`Vy|k~>Q8ygX8yqVxukp`CV(9z#UtmH)>^83EKe~a;XM#~7sX!Gs1>Sb1ZdJL4 z{>5fs(Qh=;1w8{w(|kvYF9_N-Q0G~>I{ X;x9nW{lN#lO-t$d`;xX|8m!P251nh ztgRjU@GV7Ba~Rv8yoySWrYd+$YG9P778cCZoO~``xsnBZmuJ1%8U$y~G ES4jo9Tk7$+P(Sj_bBh& zuxcWW`DMV8OG3?_i??XYC`CeBz5UnVkzGi;V@FCt(hISmJ!~-?s&rcnZy$&}q*bnh z-=NbjdQ|DSG-P7@22ZWr-sI+^k5~1o?j By3(ga!=R+dWpN;NZb%#z41*_Mr+$}rdXpF5LCaf?S0Q*T %)PiXs<>+P|M}P}(a8#1T{DhVx zggXq1HP_;byq`8%9e-1*N%L8`guf04868aobJKZHB%l}PKs!(hI%eO0@W5evMIW+L zGH`H8fB+Y 12wc{ZGteFOD#=9@QV*QVQ) zL8lt!KSJ1&Y`IWD;N2X-vHbN7A!F8}S_Hd}N`Yb1{pBs7T>PkM@6S6a{<2W&&&Iva zT30j84E@!9_E?r{V|Jpb@9JvYxCm(!Rmd6i^yX;s02bj6x>rhCx(iM%7YS7WBya(? z2z4*G>Ct31KMw%3L}DInOT;ki8vxVM804T~&W?al`we`2d;utAsqUTJcLx@*I%UG6 zn&ej}Gdw*-4|cO$ZKE_&OT%v#n)GH9g>fY0zI{uyHvyR-OFvvj79GvrQ^baTe);l7 z*_sT4vb<3gq0gn{XNvJk3Gz5<9h}@x