From dbb08338b650b4ee8163a9501338a51c9ad4fb25 Mon Sep 17 00:00:00 2001
From: Romain Guesdon <r.guesdon@hotmail.fr>
Date: Tue, 4 Jan 2022 15:34:23 +0100
Subject: [PATCH] Initial commit

---
 .gitignore                                    | 115 +++++
 LICENCE                                       |  19 +
 README.md                                     | 112 ++---
 assets/logo_liris.png                         | Bin 0 -> 6061 bytes
 assets/logo_ra.png                            | Bin 0 -> 30557 bytes
 assets/metamodel.png                          | Bin 0 -> 259304 bytes
 .../resnet50/256x192_d256x3_adam_lr1e-3.yaml  |  76 ++++
 .../coco/resnet50/256x192_vis_freeze.yaml     |  88 ++++
 .../256x192_vis_2_raise_soft_fine.yaml        |  80 ++++
 lib/Makefile                                  |   4 +
 lib/core/config.py                            | 267 +++++++++++
 lib/core/evaluate.py                          | 117 +++++
 lib/core/function.py                          | 393 +++++++++++++++++
 lib/core/inference.py                         |  74 ++++
 lib/core/loss.py                              | 110 +++++
 lib/dataset/JointsDataset.py                  | 231 ++++++++++
 lib/dataset/__init__.py                       |  14 +
 lib/dataset/coco.py                           | 412 +++++++++++++++++
 lib/dataset/demo_loader.py                    | 188 ++++++++
 lib/dataset/dripe.py                          | 417 ++++++++++++++++++
 lib/dataset/mpii.py                           | 176 ++++++++
 lib/models/__init__.py                        |  12 +
 lib/models/modules.py                         | 196 ++++++++
 lib/models/pose_resnet.py                     |  80 ++++
 lib/models/pose_vis.py                        |  39 ++
 lib/models/resnet.py                          | 145 ++++++
 lib/nms/__init__.py                           |   0
 lib/nms/cpu_nms.pyx                           |  67 +++
 lib/nms/gpu_nms.hpp                           |   2 +
 lib/nms/gpu_nms.pyx                           |  30 ++
 lib/nms/nms.py                                | 123 ++++++
 lib/nms/nms_kernel.cu                         | 143 ++++++
 lib/nms/setup.py                              | 140 ++++++
 lib/utils/__init__.py                         |   0
 lib/utils/debug.py                            |  84 ++++
 lib/utils/tabs.py                             | 103 +++++
 lib/utils/transforms.py                       | 123 ++++++
 lib/utils/utils.py                            | 129 ++++++
 lib/utils/vis.py                              | 141 ++++++
 lib/utils/zipreader.py                        |  70 +++
 pose_estimation/_init_paths.py                |  23 +
 pose_estimation/train.py                      | 272 ++++++++++++
 pose_estimation/valid.py                      | 189 ++++++++
 requirements.txt                              |  13 +
 44 files changed, 4942 insertions(+), 75 deletions(-)
 create mode 100644 .gitignore
 create mode 100644 LICENCE
 create mode 100644 assets/logo_liris.png
 create mode 100644 assets/logo_ra.png
 create mode 100644 assets/metamodel.png
 create mode 100644 experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml
 create mode 100644 experiments/coco/resnet50/256x192_vis_freeze.yaml
 create mode 100644 experiments/dripe/resnet50/256x192_vis_2_raise_soft_fine.yaml
 create mode 100644 lib/Makefile
 create mode 100644 lib/core/config.py
 create mode 100644 lib/core/evaluate.py
 create mode 100644 lib/core/function.py
 create mode 100644 lib/core/inference.py
 create mode 100644 lib/core/loss.py
 create mode 100644 lib/dataset/JointsDataset.py
 create mode 100644 lib/dataset/__init__.py
 create mode 100644 lib/dataset/coco.py
 create mode 100644 lib/dataset/demo_loader.py
 create mode 100644 lib/dataset/dripe.py
 create mode 100644 lib/dataset/mpii.py
 create mode 100644 lib/models/__init__.py
 create mode 100644 lib/models/modules.py
 create mode 100644 lib/models/pose_resnet.py
 create mode 100644 lib/models/pose_vis.py
 create mode 100644 lib/models/resnet.py
 create mode 100644 lib/nms/__init__.py
 create mode 100644 lib/nms/cpu_nms.pyx
 create mode 100644 lib/nms/gpu_nms.hpp
 create mode 100644 lib/nms/gpu_nms.pyx
 create mode 100644 lib/nms/nms.py
 create mode 100644 lib/nms/nms_kernel.cu
 create mode 100644 lib/nms/setup.py
 create mode 100644 lib/utils/__init__.py
 create mode 100644 lib/utils/debug.py
 create mode 100644 lib/utils/tabs.py
 create mode 100644 lib/utils/transforms.py
 create mode 100644 lib/utils/utils.py
 create mode 100644 lib/utils/vis.py
 create mode 100644 lib/utils/zipreader.py
 create mode 100644 pose_estimation/_init_paths.py
 create mode 100644 pose_estimation/train.py
 create mode 100644 pose_estimation/valid.py
 create mode 100644 requirements.txt

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6c04bd5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,115 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+parts/
+sdist/
+var/
+wheels/
+*.egg-info/
+.installed.cfg
+*.egg
+MANIFEST
+
+# PyInstaller
+#  Usually these files are written by a python script from a template
+#  before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*.cover
+.hypothesis/
+.pytest_cache/
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+local_settings.py
+db.sqlite3
+
+# Flask stuff:
+instance/
+.webassets-cache
+
+# Scrapy stuff:
+.scrapy
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+# Jupyter Notebook
+.ipynb_checkpoints
+
+# pyenv
+.python-version
+
+# celery beat schedule file
+celerybeat-schedule
+
+# SageMath parsed files
+*.sage.py
+
+# Environments
+.env
+.venv
+env/
+venv/
+ENV/
+env.bak/
+venv.bak/
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
+/data
+/output
+/models
+/log
+/lib/dataset/cocoapi
+/lib/nms/build
+*.pyd
+*.obj
+/.idea
+
+*.npz
+
diff --git a/LICENCE b/LICENCE
new file mode 100644
index 0000000..d1a6609
--- /dev/null
+++ b/LICENCE
@@ -0,0 +1,19 @@
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE
\ No newline at end of file
diff --git a/README.md b/README.md
index 0df49b0..3678f80 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 <h1 style="text-align:center">
-DriPE: A Dataset for Human Pose Estimation in Real-World Driving Settings
+Multitask Metamodel for Keypoint Visibility Prediction in Human Pose Estimation
 </h1>
 <div style="text-align:center">
 <h3>
@@ -8,106 +8,68 @@ DriPE: A Dataset for Human Pose Estimation in Real-World Driving Settings
 <a href="https://liris.cnrs.fr/page-membre/laure-tougne">Laure Tougne</a>
 <br>
 <br>
-ICCV: International Conference on Computer Vision 2021
-<br>
-Workshop AVVision : Autonomous Vehicle Vision
+International Joint Conference on Computer Vision, Imaging and Computer Graphics Theory and Applications (VISAPP) 
 </h3>
 </div>
 
 # Table of content
 - [Overview](#overview)
-- [Dataset](#dataset)
-- [Networks](#networks)
-- [Evaluation](#evaluation)
+- [Installation](#installation)
+- [Testing](#valid-visibility-module)
+- [Training](#training-visibility-module)
 - [Citation](#citation)
 - [Acknowledgements](#acknowledgements)
 
 # Overview
 This repository contains the materials presented in the paper
-[DriPE: A Dataset for Human Pose Estimation in Real-World Driving Settings](https://openaccess.thecvf.com/content/ICCV2021W/AVVision/papers/Guesdon_DriPE_A_Dataset_for_Human_Pose_Estimation_in_Real-World_Driving_ICCVW_2021_paper.pdf).
-
-We provide the link to download the DriPE [dataset](#dataset),
-along with trained weights for the three [networks](#networks) presented in this paper: 
-SBl, MSPN and RSN.
-Furthermore, we provide the code to evaluate HPE networks with [mAPK metric](#evaluation), our keypoint-centered metric.
-
-# Dataset
-DriPE dataset can be download [here](http://dionysos.univ-lyon2.fr/~ccrispim/DriPE/DriPE.zip). We provide 10k images, 
-along with keypoint annotations, split as:
-* 6.4k for training
-* 1.3k for validation
-* 1.3k for testing
+[Multitask Metamodel for Keypoint Visibility Prediction in Human Pose Estimation]().
 
-The annotation files follow the COCO annotation style, with 17 keypoints. 
-More information can be found [here](https://cocodataset.org/#format-data).
+![Metamodel](assets/metamodel.png)
 
-##### **DriPE image samples**
-![DriPE image samples](assets/dripe_sample.png)
+Our code is based on the [Simple Baseline](https://github.com/microsoft/human-pose-estimation.pytorch) pytorch implementation.
+However, several modifications have been made from the original code to allow the implementation of our metamodel.
 
-# Networks
-We used in our study three architectures:
-* __SBl__: Simple Baselines for Human Pose Estimation and Tracking (Xiao 2018) [GitHub](https://github.com/microsoft/human-pose-estimation.pytorch)
-* __MSPN__: Rethinking on Multi-Stage Networks for Human Pose Estimation (Li 2019) [GitHub](https://github.com/megvii-detection/MSPN)
-* __RSN__: Learning Delicate Local Representations for Multi-Person Pose Estimation (Cai 2020) [GitHub](https://github.com/caiyuanhao1998/RSN)
-
-We used for training and for inference the code provided by the authors in the three linked repositories.
-Weights of the trained model evaluated in our study can be found [here](http://dionysos.univ-lyon2.fr/~ccrispim/DriPE/models).
-More details about the training can be found in our [paper](https://openaccess.thecvf.com/content/ICCV2021W/AVVision/papers/Guesdon_DriPE_A_Dataset_for_Human_Pose_Estimation_in_Real-World_Driving_ICCVW_2021_paper.pdf).
-
-##### **HPE on the COCO 2017 validation set.**
-AP OKS (\%) | AP | AP<sup>50</sup> | AP<sup>75</sup>  | AP<sup>L</sup> | AR | AR<sup>50</sup> | AR<sup>75</sup> | AR<sup>L</sup>
-:---- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 
-SBl | 72 | 92 | 80 | 77 | 76 | 93 | 82 | 80
-MSPN | __77__ | 94 | 85 | 82 | __80__ | 95 | 87 | 85
-RSN | 76 | 94 | 84 | 81 | 79 | 94 | 85 | 84
+# Installation
+- Clone this repository
+- Follow the instructions on the [Simple Baseline repository](https://github.com/microsoft/human-pose-estimation.pytorch).
+- Download the DriPE dataset [here](https://gitlab.liris.cnrs.fr/aura_autobehave/dripe) and place it in the `data/` directory.
 
-##### **HPE on the DriPE test set.**
-AP OKS (\%) | AP | AP<sup>50</sup> | AP<sup>75</sup> | AP<sup>L</sup> | AR | AR<sup>50</sup> | AR<sup>75</sup> | AR<sup>L</sup>
-:---- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | 
-SBl | 75 | 99 | 91 | 75 | 81 | 99 | 94 | 81
-MSPN | 81 | 99 | 97 | __81__ | 85 | 99 | 97 | __85__
-RSN | 75 | 99 | 93 | 75 | 79 | 99 | 95 | 79
 
-# Evaluation
-Evaluation is performed using two metrics:
-* __AP OKS__, the original metric from COCO dataset, which is already implemented in the [cocoapi](https://github.com/cocodataset/cocoapi)
-and in the three network repositories
-* __mAPK__, our new keypoint-centered metric. We provide script for evaluate the network predictions in this repository.
-
-Evaluation with mAPK can be used by running the eval_mpk.py script.
-```Script to evaluate prediction in COCO format using the mAPK metric.
-Usage: python eval_mapk.py [json_prediction_path] [json_annotation_path]
-Paths can be absolute, relative to the script or relative to the respective json/gts or json/preds directory.
-    -h, --help\tdisplay this help message and exit
+# Valid visibility module
+You can download pretrained weights [here](http://dionysos.univ-lyon2.fr/~ccrispimVisPred/models).
+For example, execute:
+```
+python pose_estimation/valid.py \
+    --cfg experiments/coco/resnet50/256x192_vis_freeze.yaml \
+    --flip-test \
+    --model-file models/pytorch/pose_coco/coco_vis2_raise_soft.pth.tar
 ```
 
-We provide in this repo one annotation and one prediction file. To evaluate these predictions, run:
+# Training visibility module
+You can download pretrained weight on the base model [here](http://dionysos.univ-lyon2.fr/~ccrispimVisPred/models/coco_vis2_0_no_linear.pth.tar).
+Place this file in `models/pytorch/resnet50_vis`.
+Then, execute:
 ```
-python eval_mapk.py keypoints_out_SBL_autob_test-repo.json autob_coco_test.json
+python pose_estimation/train.py \
+    --cfg experiments/coco/resnet50/256x192_vis_freeze.yaml
 ```
 
-Expected results are :
-	F1 score: 0.733
 
-Metric |  Head  |  Should.  |  Elbow  |  Wrist  |  Hip  |  Knee  |  Ankle  |  All  |  Mean  |  Std
-:--- | :---: | :----: | :----: | :---: | :----: | :----: | :----: | :----: | :----: | :-----:
-AP  | 0.30 |  0.86 |  0.78 |  0.92 | 0.91 | 0.76 |  0.13 | 0.68 | 0.67 | 0.29
-AR  | 0.87 |  0.92 |  0.93 |  0.96 | 0.88 | 0.61 |  0.05 | 0.80 | 0.75 | 0.31
+##### **HPE on the COCO 2017 validation set.**
+AP OKS (\%) | AP | AP<sup>50</sup> | AP<sup>75</sup> | AP<sup>M</sup> | AP<sup>L</sup> | AR | AR<sup>50</sup> | AR<sup>75</sup> | AR<sup>M</sup> | AR<sup>L</sup>
+:--- | :---: | :---: | :---: | :---: | :---: | :---: |:---: | :---: | :---: | :---: | 
+SBl | 72 | 92 | 79 | 69 | 76 | 75 | 93 | 82 | 72 | 80
 
-# Citation
-If you use this dataset or code in your research, please send us an email with the following details and we will update our webpage with your results.
-* Performance (%)
-* Experimental Setup
-* Paper details
 
-The DRIPE dataset is only to be used for scientific purposes. It must not be republished other than by the original authors. The scientific use includes processing the data and showing it in publications and presentations. If you use it, please cite:
+# Citation
+If you use it, please cite:
 ```
-@InProceedings{Guesdon_2021_ICCV,
+@InProceedings{Guesdon_2022_Visapp,
     author    = {Guesdon, Romain and Crispim-Junior, Carlos and Tougne, Laure},
-    title     = {DriPE: A Dataset for Human Pose Estimation in Real-World Driving Settings},
+    title     = {Multitask Metamodel for Keypoint Visibility Prediction in Human Pose Estimation},
     booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV) Workshops},
-    month     = {October},
-    year      = {2021},
+    month     = {February},
+    year      = {2022},
     pages     = {2865-2874}
 }
 ```
diff --git a/assets/logo_liris.png b/assets/logo_liris.png
new file mode 100644
index 0000000000000000000000000000000000000000..37143f9d88e379ff7c6314eaa23b069f7ce997ef
GIT binary patch
literal 6061
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

literal 0
HcmV?d00001

diff --git a/assets/logo_ra.png b/assets/logo_ra.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ceef305fd77646ce549c8eabbc6b34c0f048c7a
GIT binary patch
literal 30557
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

literal 0
HcmV?d00001

diff --git a/assets/metamodel.png b/assets/metamodel.png
new file mode 100644
index 0000000000000000000000000000000000000000..51ae6c24c47159243eea5928c435ec646295846e
GIT binary patch
literal 259304
zcmeFYWl)??7d=Q4G(cd`0KtP>aEA~qKn8brm*6hJ9fHH)65QQ`ySrO(_rd=|UisNu
zTeVgDVQXu<3Z{Cdr=RZAx9`1u`b?0tq$u)h+}BW0P{?ARg=C?iU>%^KUY^6hguIg#
zRU!&`d0{In`U$FJ_}wm~0&OG!6o7&%k3hWFfq~Q!zJ6A*g@Qt}d;WW|Y)I$?1@)98
zCL|#5q<OFeqmE&=0JoYkm(wWsQAS!w02LiZ0Hd+7v3yR0D~B6NT3+bj=*aRt%x=k?
zue*_hl5mkQ@3vouyZd!d<KQqeGxvbN)syQ>=X(;kLW-5*c&)wN5$bEv%Y(+tJqh0J
zR!z@*Y%S`DG?yFf{h`{+wFQ^U+WpIgVFjysrOnz#mzm{#x~Eu~pPtQk%`Q)X!q8UD
z#FgSt9(xa3rA5c`TO$Q|$gvLr3X265kJ&ch;)9jK#i(#iPR|VSr?&n(#Mp(g{f?*d
zepLkmjOQZHU4nA6DJ|_O52Ho>WTfy-p>6vXTu5DXuTH2Y9}qsPDr&-CFwHn;rL_Mw
zOs)8wwMZ34-&3;~E$_+A9o^=^b06fp|D?Ghq<UDax^2u~VD+ggO=<ribi_OGkoyuC
zeidzspIDu*x^1RhEjctVzasS9;T%rdB~W*&d=FH1aJ>goKVX<<cUDm=v{#=36xttL
zT44#9OFtL<eAON@X=#h%mB3lm9Fvt|Hc@lBv+7oy^6K81dDQ3sTsoc8)E;|Cm%!f3
zr(!F#k|$Spbd%~@Q~aEVycUEp56$9AX1@KEkbh6+#a!A9e|)LV6c?+RT=nownQ2N=
zb$(0Gc#B%G52PWev!G*&U1!c}l09Q~rPzw3vPN;gu7Ff=e|BH1aQX&Uv6!##qrh{i
zE;PlD|0n>N-Y+vxW?i%IrS25EX80x6`>kl@)!}`Q*{T6%i?>G4uyskLWV9gEKek>1
z+b=y!tw@R;6pC%D(k9u7=SK?d9lE8g&#IrCI<J5&{!{Gbssp#=LU+!;G5ZaBuAxPN
z)p*sh;xo9n<mG!`FM*m@c$YxRE606MZ&C3SSIJ)B6xYq|Oo4rize1rD({BW&4+~T&
z$RQ9Gc=GEG3{pLMY<lDur78496ilr=H1*#V*nkU*7Bg!TVHj3^LGbio*6rZS(M!8+
zxyd@WQe0kvm`KiCeb+1;Sdnwmv${pB?oqYbJw7c_ApxZ1y(HU$cvt=SRDxnKH`jH{
z#P_Jvd36);Bq%V)uX<yVr`S5vA~*YjlmE%@c^wc%f;@8nwJLIzY*Si8GiA5rz&p$8
z{$U%N@~6Fl*CEs)!G#`*WQRq;g=hSV+D}6@kMS2hm-fn6uFtc@-Ul@uuou{?Ulz7M
za`il-wObmBnb^Y>tdH+S2*=Jc{2cMrxDUIfR^Lz@h+zCT2*nT(S_|&IgWE|C2p^Kh
zE8ZyNu+FYf&uY;YYf7piYI^L)Ydz-ldni^fQg2sM?|I07mN8+)gZPC1l#@mx-B<sq
zKtZiW5RGVVpAtN~mj9IbH_m4y0oSPisY6~z9Z<_({82v<{aYs=J7NF$^e5rBK;%EF
zUi>cse;$D+Gzr@upF%yt3z`3^dJhPk{Zkc8`u{)puj}=H4YfCqGs0icZbkVg+ErS9
zetwDnMtPLcz`$T?a`J?48R|p}4)Wzgc{w>bef?kUeu&s~s=n^eAq7&r-ay|GRhrLL
z6e^XT@vZ&2vAjIS)yQ}hnZ)$JnnHc-DL0)e=nBDR&}zA#uQqFv;()rJ5$J^d$lVn-
zi$$wkW-{?3S1OI~-|fA^SJyfMwue*H8tkZq%+uu{7UboyXWO~8yBp*#@o$6m3ip!C
z#m2;>Q>#HDVH?edK=H5s=+$@D*4lK-asO?j>7*ZJs?yV;AdTjJH-h;OCh4T!fyj1}
z5ThEEgbe3jkKYM|m~#p`#15<E{%dYrB!ROZx1pc$!1#}adWFM7y5#&lkN?+qNi0RI
z`zl=nGT(pAaufg=Hx~tDdl~2ccl+82p_YFeMu6DJJk@_U9zFoF1h$YbdO5uQkM(>M
zg+Q^B4EbVu%KyDCSGBxlP56a{WtLOZA3pLoTTHfI9Hmc6!QHEgLPL2CBmNcAdx^b*
z0gue8qK5BtlY^FqW5muT?9x>&H5HlfJbn6U%<yoXKu;e91uYbuO{lIsl;o$T+1p(q
zlk|M~x1P>NyXVig`|x@q(mw3={1{THnd9E;JzTscCr8eVckt>q?{7q{w|wlh-st{f
z4IC)Wd#DWer$jF9ZNP7}39UR&pfbBh;iEEQ%xl_)fOrr4SCcr25FBebI{-7H^)dwY
z?p(ZU`EarrAhI)X<tb`VzAtHoQ$Xh5%6ukwWf(v6B-80X{+6{~>6Iw_Mo)A_GUi!i
zx8bK}8}xiO)IV9({e*N?`QFCnroU4~J9eTavo68RnA1?(6I{P`WhylAfXb(pER*yT
zLG0w?n4L3a?6NZ0bmSfWy_2p;wEM6^IcOCK3+2WC;;$?AXhNx~b>`LsMa-iLh?K8R
z__e+!V)LMTS5u5PL!ZXotr|c?;&tpxv<`b7j+HUmvHKLXJUGl*HY)CO9%r{=N0$5g
zA?vhJ9=DihWBx}=GP|<g&+b>pbLOxY3Xqlj=ktsOftLM9&XQFm`P{P)vdGmf1r>h5
zXBFe??I@fK;pX@yB=muY<dm6Q48@^ua2B3Ws)ID_r}dPvUq04QNzFg~$V<JYIEE9?
zn%U$H$D#5gl$tgdzi`I|As|3P%5$vv^A<gcD5PsW&<&=b2@DijG3Y6rHRq~k#SQD$
zW~3gWW&PgO*oXjtyW`PuE1kg*&l$t{LXLR%u(Y@s>TXb;@C7#I_Ph!<N48wCNyM$T
zePL`D39A;r7Sl)a&Y+O+Cj<WVE)=DM-I1`4sHHBWD*oFAeAl=;mYP@5kLQy5i+CMN
zgssX))n|-V=w0(VPcPSpPA0xGyfUaryzVdp^{!cgcC;gUZWJc1G}%4G4~n(dwl|W`
zC>#UCt!Q0iTjb-<^|W`&F3mZS&|x5GLLAJ$_gg!k%x|y%ly|!~NW?8^L@A&$vCB9&
z1hiXbE|$g#Em{RoXTDqvJT%!4M9yI}VXeQ85Undo;4)1J^HV8JHFUS|4@+sDH=4;A
zq@G7Pdmq!C8P`(ZG@-Zo>$?w~>-FB;MAOR0JB0ITxP#_Yxx0>^q2hYug%zd8DDxj2
z4?cie40&Bu-c+SE#k})8vd0Wto>u7_^`Ea`S3)_OtEAXn%`apK-lfH=CfVpG7|%Qv
zyi2^UdArl}lk~wv2EV`gU5t2fUrX$Iy<0(t_CBAXJ6w43F0LnAmUlPUlGabwBrIn{
zvirNz7e`!Oi{(Nks{sL03cAeq$u2UJz4z8u9}if<Sm%@+>*<oTjSQ9xYr7(?LzZMM
zn@WG^J$*8yD1Db1+-ebc+OIcf0B+GrpIs`UadIPZ8)!!$h1GWKDT;_)s&iJ$l5C+Z
z$ngMa=qf44dM;T&Z99p-!lKY;>G&W61qFt9|35p!)igypJAGL8g71?y7xe?TGF9H=
ziO4h4mr>{<s4rxu>H}2YU<l_Uncg&pys#}|%@OkT^@DbfuF-*p_VX3)3JmTZPR(V)
zQ#0VE44YH_O6HOn`@=UfU3*_~9nI9;P-uzX62DT%C`*ZtdyjccT|-trudA<2kwh0w
zygBz)>+Z8fM`kW1W-)c0WDVdGG^%&aVUmw?wbgZf=x8h|2I^0^Zrw6bl763N`d^bQ
z(s;pyo%Bbg;usxTJKNESG|0+m&ZRMZw_MJh;SZ;Zi<ts0<Is%Xu^dI9T$?|w_cxQ@
zq`AorX}d8Pnt{KPnTu#)TFZQw8agQ@dCj{Gt3^lGc(k<$#8{zZr#cdlS&9ewW+E#%
zvkPL+8h;LkujR?|ij0g5RF61)VZ=<0+tQFv8LO&vLGIA>vL#J^rtig!i8<EOH3}5e
zPshK;9xqST8+=(Q$?*3j^R5$#E^Hye?(e~GaBulcB(bS<%%vDp5(8Rk9lgfi8jp26
z6v9$(h_0bR3I^JGwqY76<qJkXK0Haxs<%>NdKJ`1N9s!v+$f8=idw9ne6x|0v(i{U
z@Yl8vPbWCiYsUp0#FK8AC=3KjM&?;b)oV&VS$@5w!^oMAYYO=q*S*mHR%#Y4zG*6s
z85+Iu{qUw6*N3+L%jv=iHMo3u+uAA@)tZ%gjqCj+l{6`d99F~Zl5%ORJGbIRa=LjU
zZ`=+I6y8G9l!~clpoRf?$cjZtX%ZFkQkC_bvY925>8|wy@3M8o1d>G&jdP2q48!oJ
ztar+I2V1LRzqaM5=WaCIR&1Q151MHQTIw?K9<u{$hPFuk4h-LtLnr{x*LOYWknn);
zN78ZMfm@*~0ys4mmR>d<KT^l7F8PtOSJ2-d92~svh)sf(M6)jQ-79Zz=Y--ijg*0_
znf^|7RfzZg?W~Ni&}J3TqGw2Bx58k53z=pM_;&Kuv01mXth@o#4Is7;*(xve$8Ef*
zy1%s#r$DA@L<ag+>0Fh;`K`ivHwvp_EZU|65qi`Co4XNTbP$C!Wmq3&GiGfO3cCOr
z23D;6p(V5FRfRpM)?B^$>$tWaCW0licR}&~W)gYJC$^Y*<y1!pYivnwO#DjXj)p*@
zz`#(45dn1UVtW-%d#`UiH7_XAE#@^erBMN>#Qg=AZ~2_tk}l1#L#xMsAyo;ZCbpS5
z@S5q{mQ;Ti&&AdvU&uR474$`@*jow!YSy_tbXSLvqp-?QygvQJkoai!hPOof%o6E}
zI=@S4sR+~QCh3Dr+s}UIHeBp@*7KA*yuJ-mdzhT;_XyCE6l@R9qM8_)P4s@o_RER(
zTT#glFTHhTsc+ri{h-qfSeeR+wiv3?7p@lob!uPZIV&{jlsZw=%zO86!&*z`>9et}
zk%5L*c_8WPDhkA7|0&t>@>CS;8WUc$`y!-h1%7SCfKn^9xI|g9z*eNnVR7-(l3Iwz
z1Asx?Z;Y~HcOdwxlr>jMWo^jUFWKp}Kqsq(Qs*L7o)H@(PIAtx9Xs+$#;1#EVjHJk
za-w`TCN@yt?xr6TD4!w12}!PfK`dcNqDfB3%yhlF9d}bBo5R>Tij&y+fvQg!NJ}kl
zG>&N1IkHDKJV&c{P({CM>A_pWUW((R8SkFVBm1gVk=S5D<qk0koLHF_JdMS7TDjis
z#i7Hw0ibWR{58W^Hq)kGSvcG<?<PL>A=5@AtM)xFt&qwWE}ywY`Ac$pTTjM&9DxZH
zftipw+JkKQ168TwD(SUO?Z9;3=}1g#6!Cmz^!raLw5m4)F?8Xoi@AW5#5HVwY0ycD
zF=dLPwSf=Jwm<R9^?rA(uBGCimXy=MbAtsV+=u+dG)7BO^f<ZrD7I#G?ytrgysOBT
zIFMm-?BQq;_|r57+SS$*hK9maj2?O%;<xo98wSE#ij7wd%_*x})(=}$l54$3?S1#F
zMXusgA*>jb2lii6T`)yPnEgoagA?OODLl=^TcD(?!T^|Q07pD0gUm|GDU^MBMp5C2
z$xY#)qu<bBKxMQn0$ZM(m%#>J22}w1{p0~D)7xaQf4^x-1E{Hlfgm2?O7op-X;ppV
zlrDisjN%j5q=2YIZb<piY<0de4Q#Z^rS5Szaq?+$h2j8uYFy>4xu#cVhxRz0jjqUs
zpp>w@YYC5hzvZogqOa_JAyZVYwWvQyV5IEvu1u|X(g~n4dD~>@Ao<tskN!nT`<Jpy
z*yOF|+U}|cFLGEJUt1m|XZi3`ExKCn6f?1fh#0WVXpqen+TOyE=q6<~mBdW6suI4;
zVP_6G78zvTTz;UR=&;%zORzhzWaWGFRT`s*8-yT^JM_gZh^@A6ZMI9EH&|7_kM~2j
z?nK}9rd<;{o;Y2j7!$>+`=Wkm^1YQ}+1yZ?w<JCJ70Uj^$?lT=segCj$S)<`W0YxB
ziz4c#s&a}Jh0k4vb1e}czF<H>J^oIreScxbJhKq<=+CE+)ihr=j01<QtN2?o0T||O
zh3^!ETZ%OaorpfNyFha+)$f;A8V)k7(MzEZ4c#8D8%ZE#J5zUi;iLSiC5{ff9Qz+f
z40?>GTa;Ni?(Ur(;mnfqAFH3vRyQJ;Ld;}fquW3w#Tgkpms#<I1;$SDLKfNO#)Kt3
zBOf}iDK3%#9=8Sp0+xz~G%6}qTFDN(KF9BKwhugyXAt!=jrD-Lo5<u&=+FSga`pOa
zIv@6F^Z=&0Q0~W$hOe&SK^OC1f5f1FIhEcmN^+#&J$Qd&gn7tz=nB+h-UR|-;I<PB
zZH|h*&N$!Ms4-l4WmL@Cqg*v8Tl?Dws}^&g79|HQHTGAA05>@W*@Te{-*4KCS7MbZ
zhFv?B)T}~>!Dq4>jXboAz#2U^c{fM1mN(K8{ov4FNL-9?URg{YEJ6`hftyw{UgJH3
zf0J=6VRq_3sj7D60OzQnqS8S{95GjxL<z~Ak-?>g&*`%dM!e$rZ{!bN;XWU9PoxC$
zW4D#|Lss#BK*B{>k^dWfCa{?g?7XsCLgHKF-r%nkZ_vk6c5IIXmy{5Y#P!OOlqct-
zl50l@mmBRjZl?y~=`}e#uLgI~1Fp&Zof-xYO8ZoTKMIu}$2B66r%b#~3prd;QKHbe
zFXJ%DYOCaROs%^lsYNrWNU)=Z<mJ0fu?#XU=t+)Lx(%=`xsl#2b3_3$;iN4cZ64sC
zN5NoCq2jgdfgy9r^lNlVRi)H6!~|3^J)<<ZFs<SrVpfJm$C{&pK@&m1Y2rtF1Hlkq
zNK%|nc+@kv+VuMS(Rn+4Y$YghXlSkx+rv~B`#iJ2fbtrrIVi=G&zy&XMJN>eUBgp(
z&=9?Zn(q6Mk$Z9?i`~1t5`&13^dijM`+2#%xijxRRUtQBmH3PGC}s7EeU<NQ>_iBn
zPI`0qIE1stF+SE%*aS_{R(a~CramM#i%WeLJ|x>y3#huY;#YdrA@l-jwbbjGiTErd
zhIvd3mCpN{GkfHujJ<7ljC@M~jnKCvB~h$hsS+BOV5h2QA>4MCtMo>+#F{B?&DT0G
zaJT#XCXLG=g9R74xZl%>i&Ojj<#q-ZZ-a3@b)OiTFh6i}#Tzwa;2=hPYkM-VUth76
z50j%yzNJfA0fBcP0o49R)8jTHu20vE6FEB0liv`FJ$yaF_X_@czcqCBL?(*R`2{+O
z84KN+!Gsd2Mn0{>VLq^fh10f}Dl}rGD9;QhUIr(0e4AqCVy#J)&NU+I7&HqUI*58j
zV=m7r5O>z8F^74%A~Aasc({?%+XqSXKVQQH9ATHwO-7sD+E@j6>*-@z^_03{mS3t{
zud6Wfy^QUqoMl!>to;P71r2xCLYLo$Uen!>+4xH{*`mMM@V%#(PA0@c9e)ScgpmIb
z6yTn8%4+=){b6m97mSx{9#$X~J09yB+*t7}X3(s;;&4kMc@rmiiu{<yv{R6j8o8Lk
z!y%F-CzqPS`<9+j>?MU2I%>2nymN<XeJ_Q$mF{FyYlG_mlA4}@<q9>ub@Pjf&q3SE
z3gh*HSouhXbLSKLv^RJY{bUOUHl4O?par9&fYI*T3Rit*Ng?tD1AQ>!){Jc*<LqG1
ziwz*>22&S)M{3+m&AYRp@kD!^nNK2LA)a2fZd->GG}URic=dI!8;6UUkLg|oXZja6
z0MBEmR<v34>p1Us4>KvALfuNOyRgyC!Af#V!n208^9nSr)eXfo^7;#<pN``R@2nYW
zzY7TFBVF9%qMz0*64WD{&KcN);U{kQYRiX{qs4JKUHJ9eexGr;%e2ZN#~eurll5=T
zXO&PeXIe{ZDJ3vKf<)F`oj#+ebW8aTw_jH&caSOOmoG==(#&#!V7|Pmp8c}QG2?t1
zcTo_k{?tXN>s5IL4$q>_1(>Q5t7LwCtvbDwh3`y8sG=usA9=9U^)oArY~ql)>doDL
zKs(zA-jt}CEO=rJ8Xk7zv#2fJNoUA#_U6(YcNp_KxzAJP2f9l9gbW91{)E<!j^~R2
z_jNJnkZPP36pK7pLT-Qb0Dv8wMXT@wmv$z5CI35R?Tq1iO53yId)zAFPJh|N$;>-f
zY@5=;p7$dI1_$H^moe`&bh3uTkQy!P667vZf@VKdZT(meS+i}lc~i{QeQb&qJ=9Rv
z{{{KDlRUk4>yyeWik^Gil%@OA>=AwUrtdq_{e6xKU=jd}h{?T^LQ{N3dfxC!?DDc^
zD*xu12m=3OMHAK&ct%>yK^MVDK}E)3pS4Fj;n~5`{rxcMJwE1`A*jz;=?Gxm&W<Vb
zh!e>`a_Gpo5s^(^{M@wPUsx^ARa~+v(=MdohDbtLY{qL~Cf)umE0;l|@nQA!oc-9A
zFHSLQ=wK@#J2i>~p5)_XvO`{IHzz{yb*Ndl#}GR+PE|Lo8youpw~O#_^Mn{*VfXbT
z%estE!HmD0-xu82Ve`Qz0&WqQ6-rY!qnQVhBYt%LsX<-o)(MoN*oJ;N3C?e^fo{iL
za5SxN67pyrhJ;ZT=#%+0Rc#{-;@PCtc%*WeshK1#4kP$O^5z>4Tvs{`Kg=E!{hGsC
zyc?g{(D6XNgxD`+3t=t2PFzZfE(>}y>$ED&3es?QN-bydh=BQ0yF!0=wJzggD|gD;
zy1T?FV>GkrdW<oV$Py!-YXmn(vkm~2{rb3~)P#3p3$(LbX=vy-I#NtlmMR&z0Mk04
z|K>+pU;T|V6Fdo*%D0{BJf)RT_xQY{<}v_CF3zBJc(BJd!#v71k*(pbkj8B;0m}?>
z47((>n_^Y!9><TKtSk-zfwbh&ecGcYEV$7c?hdgy0F*Fa4D(mar&EZd-3<la?2aQp
zD1^JoQ|i-vQ0#uC`idBp&xIBwH;UeOzx~=Ug8;ZNI$-E})1AGwIM4dMa`uJp2g9B@
zl!L9~P$=R2i-xl(t^>+hgAb!x+h$>5m#hrDw;>w=vE%RXuD15Q5Ddyd1fs)?u{~+=
zU*SCzzzXXA8ec7rI#7)`CC@bxNv+r`ROGopDb<eQez+|F#$_k6(guSbb^_|c{L=>$
zemF~1ibdC@W!Fuhxr4&({n26|&~dZg%C%fZ#r)#Ix)iW@m;MXGnllR^B_hL>^}!~F
ziJ%-I=vvt}6_V>rGL#is<P{WIW;2y9_(ULVS(M&JvM6Hlr~3W~+qS^{7vL~|2RsjH
zK8()2ZY|z!<dPkChyS3-*NAB+dIv{je6hYosF;_KP1<BKxCxOyS>+5yKA=R5O1oB7
zCH)18Z>lKQu1!0WK)EI!J?pw2?yfz|NVMX-aegm4hRX;_i}LB^#Vuv**yQ3#uO8|P
zsV5<fVs*l?)7}zrU-@QoCGmQ5T+dR$qoJ$^gv;8>F15xr-Dc5w<cfHOQrJ>dbRuZH
z)Dv@h28KbCzcp_hpIvlGFmC(CDmcaIzBkCO)mwUBAcz|lj@80b<5dak6Zy?&CZFU!
zGY@#sFJ}h3x9+0{IMv}MP?**utZ)KyNaIFNC3rGxM**(=#V@r|ZtJ4@Oih1isG1Gq
zPzJLic}!62WK|@MdE-6Gg>s6DbQaCvdnyihM$5!>=keF{MpoMRm92jqi669T$Q(<W
z+iCPUIv0IYjmK`^a@R)DH8pF*e}IH+fIVa5a*99$qURVdz$S!Ty6{8&mj?VzyFcQ{
zbCFV*XD8)B@wvt?H&wwNDA8ZJUYP-hz}k`y7FT{J25hQmi*2Bn)Ou0NQ__r>&e${8
zzs#eL*%`Kw?<98oo>OQx*8R>cz-@9i5&$(0Cr$ZhdM0JqHxDON?$}1(+`QBGD|k7|
z0}MKEgU40O_m&RbIlq0+8`mz4M}kcm&fZ!IO6b-Qm6LW1UGU?fZrqi-W~WY>8~ou}
z_mRNjr;3Asw4$T=C)h)y=z-I81tqq(>lA2F?8zSKRrQx2#v06y^juI+^a_SJPco~%
zEmxr9rD(=l4-F)pzf^#uUA|7Ll!X#EVsDK|H5uN$^$)~j;ES8+H7yUP&dN{JJaxM+
z5LhG=1qiuDjRf&j1xe<VC)u|5*nRIr=NFpS9T*bFI-iipu1rdtvO+PhklThehab0h
z7+i9Lb%Z-8+3Jpn?pcu(Qtr098FOR1lapdQ0twtXF*=3klU&E(Ryy)h7UZs#=43q9
zKcU`7zKpuf5@bsHmse-~n^!0NHlE1Zv+el3-Bku52sHRwjMqu~NlEsK>@XPldZoqG
z-^U&W*+j<DlLlIb0Pit96JQ~fUp1c@Afw0eN*KU6#drRR{@0W(2`5`)%W7XxAhI59
zRZw!Z5Tmy)tQq~}XueZjPf;JwK5ufg8gXD<!=+t+2HXuY_(b?!Gt-9oEQy4|@G1}x
z)IzU>o4|r`oT>Pg)sWsu)uX8}uFGy@!m99XGI<zb8bR1s9J36%zOZxn{x{1rG`p=w
z9n*nqO$Y?Toah1r!`GP6mkOR-u#LN2C39H);PZ7spX1HxQB_|DaNcBlz-e@S)@N7X
z)dmuJS6VuIC6fdFPDXD%u8{hOgUaIOwSBVdL}#9pJ)7ZBUaEL<rEb+BJAu2}K<6vQ
znCVWZz2o#j6}K0Fs6*bRV|7EiT%6`#yD}pxY<tNB-`?3sF846uf}9x8axw_7!nPf}
z1by|9@M{R2<cI5XfW}>gA>6fJ2(w2L9Z|9lcC0xo(KaQiXQXQ!sf~iUt-BsU3==I!
zU2u@IqtxG-7w9ly*VSdw)QL?*07h&~^pk&ba#3hic3p37BoYPh&&|=sGg!&jKI6vr
z&M5229O&PP10xf%qe`r;_P_buUhkS@XO$3<Q3qCI5Tin$yn+WnLRiV#Rb3|YUS)|$
z_=Y5<e_ASKZst;P?dHdY44<N*utsAlv9-!z;y|yu2DwEL7f(Wmt0!ZDCjJV`m!JuF
z0BWrC=)rVPKP-1jMu~rB)!S{J*~CEJ?PC{(FdMapcfpGINkb}h^71t!^AnR&-!QS8
z6H`1VrxfF(>63~Y5@f`4syQfQ{o@P>)TVrFWi5K>0ucEfH?o*iSRHvq9oDuYW~=)P
zjByfGbgsMGvqKs(tH8NGW#{$PNBxpTx^taR^1i4JFZaPREpEg3lEvCLBrYITl(S4J
z#Z$Z{{UkenCf*NTM{IANIcioLz8&9xlcTtN@pka=MF2c}@PNtNL{+4+a;E(sr6uo4
zhnutDKkaZ*JSq~@!r@KlWo%71964Q((`K>r=Umv%utS&@&o|HEgBVA}uPFe^>*}`%
z08AmB2;{VmmJeFARCEJK@9;7ls4JQ*#ea{2u-=1whr2%!=URv}_YYj(J7uyFyhR8$
zW#CsB3Te(`adCgV+!1chc5?NIPq!;&%`Y_@9mzn6l`I|NK>skkBL`Pz1rJaCM!oS`
z*m>!C`s5xfczSuo+#gQyQ`FvsgQxi|wRUF3Y}ky$;6YnopL}j7{}Y%hVf~{?RRKyw
zGn{R=1@)C?@<~yBm-vg>>glF0D#jTXCd%8jz6yi60UG@UIqvrI)Xi(avrl?r%S7X)
zy>=;Oy#|NAC1AZJ1ey2>94!NHWB0k}ynKItKGIC{X3A4Twq@*ynNZbhzV^5YX30-W
zY+#sI{y{IHero-`UyUqE)?F5a`sn&wGjab)+C^?72$MI*1FicjJp60)O_tDN5qcYm
zhSMWGg?*DdJQ?chmJ49RHpi=@+3pc|RUd3WO*f_SUZ+iFc^LkP$j%clrAes`+VWR2
zc>T-j;>so~z^jD;)EFk*7TxWk#l727qx&A!vAr|PV_TfLu$i%aL>bnQpre4axM^*R
zmX>}(0TX1xb$tDk4<YH3E8C3K5D&gp+o<?v4GA3+ch8xuc5h-l_no||`&wZPRWg|X
zSp(;-M)8wN4pdBVCM)MmM?A{JTDaE3r^xhi+wrR<N1MX(yOW`=Ok=^z^9Q^D<5T}}
z8+h^E1xrciB>ShIOo&YriHoDa9?eP56a-x$o|(kTJL@!k>XqB0Kq{PwxrRGSHa@<K
z0UQ}qm0LGVH!VO{Y9T#q#lJkX@NB6QgxH|?<LdqdCBL*Ve@hSuw70OZ&~ShCDDZ8j
z3KPR3kJ`zejx46aa;kr7zxJjJzd2q-eaXuvt7K$5Ki_PX4J<Awyc}W%m-X<OzA&Ca
zqsC?l>$of%apb(flq2`o;p9srbXBFR$D=;zr$aL(TCMVKzh8u&7t@X7d-H@<H|72#
zN&&SGB7*J~hf=BCY1=iWH;?DWdV+%P?#|QAq(R?G@D%B^YHT_jj_axlOZlgDM^<aY
zYxQW98*k^^<Bc5Q%r#m~H(|w%$Lr(ClIzO9UAIhWJD$55bzbL}7E?NTSW2OqbQBm2
zC_(Ntf+U;osarEsYkOw)oEgd*t{SZ%moHu`5LL&YukN`}n<NxLXeA>YboEYZ;Gbq*
zYZk^cPVw{IArC2RX(#i#PS1j!`@%A<pMO0nLf(af`hQj)@c)4>7d&CF%45a=EbQ#(
zCE%xL&BUM86fzW{vsVXmS%rl(WMpIunqm?X*Lzci6%|pAUH6=B;4*)I*lEQd&Fv+~
zji0zuh8x$PX#TF!Nco@}5*8L49W96|ln!YL)Y58gYD#|Y!09Bts>-g>U1QcyCp$a)
zS=w=r^oL?44_(CE+S+<C&|+&ak)ED@e?G0+Y{tdenU#g*q$GiVB#qzE(Q&20e!u1_
zK!~KTxA*z38O-{J8boG0bXMQM008ZLb4F%`4&JV>uSa<O`dPXFhWVozL^QIxB0%!}
z_W*t~iO);>TQYNU4B@(<eq#TvF+`sL<;Cz9#m&#>V;vNf)?WoGo^a3eX?Y&l@A6x)
z^YrGqJGcL8&3@}!9`T>M1OHcX_N@0QK1{HB1NXhwGNfK{esJMzWd^(_pS|5}VLc<U
zm)Hcfc=i;38^?U`DUWH<ci;5E(G#QUCSZ!dY5o+OsrNd$S-2rP+i6WT!as*(2Ko_C
zyb;<7AU+2w6?oE^?A0wFC$9iu0Y@zd@*W*lO?Lkr@-#V4P-SQ~s*wBqnw#l14q1PP
z(<<91B_zOJ<;^G7=Alx8e<D&X(AAd{XX+go8MfU#zmojDNRLKbWf3R|_5IzutIQ$%
zxn}@RASbqe0rp$H^F(m;wvZu+sAAZ)a-VCCXiREnhW$bgTL87$Zx?g0#$Mm&pR06V
zz}Yx2q6RO(vPD3BJLy-LD9qqty?K#XX*8nV^zi<Udw_7#-N|laob%wuwwB3M`DtfX
zR%9)t5PKwz*YWY}e4X&USJik??#ys1kNuja;^r}(>Q9eVlS0~XqNtkh$N5db`{zac
zn|ZkPOQ{%^gtCq+yV2I3+R9IVq2Xw)rvNO_6D>`RZQHO~aZ4TE9KLCg^`5OP2q!MZ
zo#&~GiS^XpE&Db-{mMUL>1$C;?P<WW|GcSq2t0zswN3rq5=P;p=FTD?^norgp1@hA
zZ(&w(<iSF|Ob=cql90&>^xJa&W((kRo$Z%qFhyZ!lT`<$acCBnlsx5a>d>yQi4#Jv
zo8~ep)OL3*eC#?;jpRisS_*Vd*=k?V=mo^SO&t|02n&4pxd7Iy*9phXd>NQtx8`p~
zX{Cm!z@C}w&=c;TP`vo`L*eZ#EJ}?EwO*;xqTPm1jlRJ@tvHMU#w6snP!AYL+QCGv
zN+DzqgUzP8$~%WDwvpJzzE`h?C{=`C;3I0~&1HMlVhIlO3L7#s5S}mWlaLrNu}iDt
zPOCkoc<lg`$HEqZ77B|`dm!&AsC&mX0M$tF;yi43#2NdBTRAr#PXeCw<+|a~$oyyo
z@;`0wH0u`0Ah6`aboO-|O;=b`7#+)2a+b1~&Il<}vr#vHX2l!~-1J-lq7I(Wmw5ca
z!iQonWFHSVhyCtLvl*);SCuat7I%rkRaC0b(16GtrsFS#7{%a*r)>IJn4q~L{+l1)
zYENt3LJ4yz>Am0q2kkb_ATZ<@{P#TyKK<ZU6T~w8$whZPq~LfsZ~A17rAzV60?c>9
z2DYt}VGF@(=o471{o!BJ_qwsK$g4{#nhL^i8#&b_kbAIkgW-uj38mcZYK6fJwPLV|
zAU2W&>6Gjy@(<P}sf5m-RRp`tOEKKsl9QSMpaIjVj=oP-5Z&S5z0+yN8Mx;AJovq#
z$o{a=W8N!e!C`}n6zZDjyr|%cOf)_?&^l4X`P|Cx#Z~OqdQX5@rP256r5l<csg2D`
z*mba*IV`hmfz!eV7|5;VS|MvM@;O)HX-BotZuLkM`*6Z>#dV*QTv-#P8Vn;eAO;^T
zvSZ=G?0;AY%3Ndo8`(}=qBu<yK51vXR^g$hw;yEHFjfGhKbZMe*L#kOxK1!d`chUC
zdCQvvEcs4SYY#_83BSg1U`CGPv>s28WEUk55QKwir0q%4Mm8+WixXAsXckpq1mwTW
zq=HR8D5r6W;Sh#XPq{B05_a1cLu3h1tB8Mu8wjn;*A$+*AO&ki#KQsZ>q*-btd??M
zI1Y1k?ARHZzfSk9eSkBLm2xa8pXn5h>7TRWkLg>u4@gRNQVSssOwZo>)%kK5tNYHj
zr3U;_DGY%x_cbR-)y$H*q0%g$tR*_H;ih|nKWtVxcgy&*wi0ks!|B`cSn>bDgMq|Q
zZFMcWH!@Acd}wpznxS&t&angDB<z$^?IbI&AW`%3*7rF18<;7luJvtsIS$U+D>6<q
zg3vIqm%G#e=bB*%iux2Gy4|U3xvbpo1Ivm@b2%G_2T4tRQgR^BY#Ha-pL;^?kpJao
ze+N6hrVusbA(j50^Vd3$5m;CHvHTHg+9E%%qU01~l-}#2#Q3|U4m^+-nHo+Sq(m%n
zjfty45%0adC_l>aCK`9}WY9I!{nf+SueTjPjgNEvZ7JE-8WaY9ReY+yf*0H5&SygJ
z>cC{)A;hdAKrEA}DcOMpjjB_vC2U@GK}8MyLg-_=_6_F$8W~1TNu^u|F3}RZ#_;2#
z4cy=vMDo?JeqJVamAKK&?3PtrgL)NqzgmoazVCc@@_||t8U;-VHFGb$i+Fn^7jA@E
z1U2XxC{Us^+z(3a-1un_?j7y1e*~)oUHg(@fV!DIl{wpCCzGBxD#?78B~bac`tJLc
zci>M3(wcTBR~T!^jz8M&-p22I4(5M19G0b%G;`l;DY=C5YlTZka<EYhk7TkgQRtxn
z3jv;6W$@52P?Pf`PMSWj-|#%B-QRFIoWrFHR41GjAMmao6n3b5Nn{z`rWHOrJ2aUo
zSIJUdIRN6cn8V}|M-u3Cl?-dSK9ofc>#31cS;e)#)l|d>DLfE6P<q2ZGU+yoGQ|P}
zP>ExM#O#}Zt+4;Y<H&q97W5o0GI{7_7jIE{AEWt5>y}CX$kL|meeGv6EV8xGe12E3
zP7D${4x>09WoT1pj#iZcmk0MflpJ^r9<&lburtAg_*jy_vSe9y8bkwV;;R(&#{+I3
zE>HpD`M?;tBy?}Va5w?=$$nrlk4aK+9T5qU>E>f-Z4k=;uyKY`v>#X9M(oizgz=YD
z?=~`&R!|6YgW=5AMMyOm;!oKs=Za>65P=w{m%>3m1|+dqY7Y9Yx}->Jel)qCThI;-
z(ZPnRyJuT`Lv7x<-8up*Agn79&A5u)+b%QncUpBi7&Iqle;^?$s@*!f79DyPO#D3+
z+ZdVn8N_>v$<Df+43?fCq1BV;dtEKpo<-}OO1G&_WyOrW5A0--!)c-beZCgX_q#Yo
zVtjD!>~_J{CJq(VN9*s%I(Ndm5u)?_T+zAh(?NL+ioZ{-edqy)&T2X%$zuwm>Kt+!
znL^^g|Hv7^7w_#<*-eUM;;XS=^PynoC@tq8MYaplG9oVkDQKKPt=cWY4%5+Hf^0(W
zE@!UOwY+oS;92PRtnW7XPT0;uG#`k*a<o9b%4E@=OLbeGPFrQr9SD6_Li`QCYG8e0
zg*Nqs`F}vKRWCN-y0$bGs+dAA>MWyT%bb<bfTpA%C-pEaZ)9#BpgK%|8C$(`?Et<}
zH>XtvIzK+DaG{w>1`#?hfV=XXaSmz2HOiAV8wCBD!uUIsI<MI5Vz>YTzAomC15dJW
z9RJJ~yKCpO%;56ii37LpCxrPEln>eOP3wKgT|7>t#i)FQjapM*9>u?9RT<050SHOE
zuJ%VOK>F^I>bx2^sw?5}{u}{6kl|sqxF7LP&t1djM6jhz<VPfn?qKLqJ1~C?cJ7=O
zVrXt@j?b2l=-RbNyhiFMa>FqY6+&gCyF0`-f%JX79~kE14Dw5&^xi4qk!v^C>xcj6
z)|t;d>Qu!e(-9hsy07~YmeTL>D;J<P(Q`4Ufmwaaz^(do;mmd@v^yzD^^5T1Mgo<~
ztXT}(JDgkJ>x0sJCS4lIBqRSNj(QmY4zh*E%|Dl;*y6RE5vU)LM4b7}ubOJSnd^rp
zY&F}%4LJ&}v!!pvyJ9=P0FqgvoXU>h+cb$tesJkOoQf|;w_bz<hB++sD5@b5E8i^A
z7@gEqzxbz(n-v~p*K6cJ!!**hDz~qI2h#4Q)XgoT@fek5kx*tnkevO<s@0&};Oz*2
z1e?LywP@GRM7nI*A)Avc2-pxM{@=23wFOLkb#@o8sS`RQ@yAd6HRIfC%yy_kgAV79
zNXtL?KYC*DjX3vuJ+k@W8(M_dkJTUrsl;OH_$*;7OtAK-iJD(fG%AIbS0uc3Dy{lf
zn;-VijDNvOXDrWHuwx}K*pzw1kAaZUyg{u$r8OR0HeWMKAtfi+$9V>wi-4#eMOb^3
z-qWf1m9*dd_CXr(=PU<oWoB%wUtSjBH)vH@pEx}!WMK*sZ(+FpG-OsiJTdaaFE$th
zl{2rWr8)b#hgj%WmXCC#Aubee0#teL>dOv`U-Nr}^w6Q4Sy-3mPIVt+`7GTpEsWbB
zUK?9*ac?WI*lNMo_;uyS-Dz7P`&>VMBZQno?z#UwAFn4itPltAi3H)X*^5W^ve)<W
z-1k<5e94ZFZo7WxIq?ii$$T29*bhXLPln*|1>zU%f-kN7VVBzp0^pXyks9#v-6+U^
zS(^7Q)s4EI>Rh9>6TTPuN`3F4-g}sUU%T$GD2db%{npOa=;Sc_#1&5O2to(0px>D*
z4Q~7b=TZfY$T{-zqq!eXhSL~*DoKrKaUee0%h$M;yKa@@Ot2+ly<5#lp6saSc5FsM
zY$PNIR??sC$X>FNL)kpyPjDw<g}ZAw{&=<gka%}xbOdxxtGYfMUSdFZZ23HUL&A6J
ztbWg2bhzw}Bi4uWT_(cY=hzo|rHh&atoh;b((>!*QhGYK0Jr5ad=n<-<$Lnm-8aK}
zl1rU5tA^S?i$C7)hk1G72?!(`IW8`F?&!%MghUbz3vgiK-V(7~=zKnTSdF|R)<J0}
zB^2)B3k&ijs699Mw7%aPDEi`YhSP85(8~)n8&pOL2VOx!Y6{X&cIxa%X<RwtPH<iQ
z>Y=_~=!IW<|4^#ewU9Q^x$-3PWsn!vr{5K^?OEse*F*PDPrNJaw90cn=(%8`Y$@Sx
zad8%>tqW|4c*7#))M|6*t-(1d*Ti>`ADe;#11LWMM0!aAK^*H;K~DWdn!(=7{q1}O
z?H)<GkE-k6T+rHXW!p5e1sguYm;~Jvymm4sPUQ;BC0N&?JuskZ&T5s-%QrP=->kDN
z7~A4PctDPZb(A0|z+_hMUlE%(N{Z@1E4BzhUK9l#AM&r>|I|?mKx#F#wEm>P8b?I%
zo*3&rG46XH{Md|G4Z+tomr-Gm0Cq8Ka_x@ikN8c5Xg<-##2lPUjy$V6rI8Q$5;N`^
zuI~;EqfB)jIy(>Y{HN((GJaO>C1eob7w8mSl_L&h_jV!*Y^>XPQ&blL=nRv?kaYL(
zS|T}M6#K+gQF{p#OH?NAl!8CS{CJPrDf-zspzLc|pmAQAQ$m?jp08a@lXz3`G(GU4
zxxpW9vdRHKCI|yvM!LbCX#0*~IH*id78=^^eKsjlW3C!<J)7|_cMBh%m)^4m=Ax)G
zQdY<g4n>$^qDF9_p<m5@t8kD_^jDr_wH5g;#A+Sv1HUeUaY_=byGcd7M@M$V-@jH6
zA~D?`d#qU8uhLkee|TGgQ>l5iQzNRu^$|EOB{nW4GcKjlE~U|~B|-gBiTtA${pd%&
z+0Tr#%2ZVW;!aYR@U}ygw#9j=duvNE-VOc7A0khWsW+@j-su(t#-!LAYCX*Pvr^c)
z8v_y!tUs*qkCWJ!-DEr(n)tZn&RuizOxRreKYrU!{*)We%lmb;Z`ly8(YU9O#=nq8
z*pyN@PcP@~k79zQ9wzs|rJHXxMn!P=wPl?13ulq}H;)8{R6n-hZk6$C-hG`k{b>zq
z%PqsFwFuwEJCc`1ii<~-jX{)&M2?F`o|ca|%50TWV3if2mR4=o5^qPL5%Vtft&6~D
z!*=zG=TPLE#mcN>zf$-#7~r)+#$YWY#p(9}SgaAuL@drEU?cmjf=OUJ>KoH|Td+8z
z>0V>Z6dI<2uKeUi^@YQpqr{$RLu;do=}61&5BKp4B*y_7KR}R&kT>D?9R`65Z1hX=
zz`Nc)STp19%WA$|j-%x~Dk;}1UJ|NZ2I>O=)N?HCb1d}B_h{}@th)LJf)|&9bLMYp
zZV@3|>|dF%lNJAmE_M?)YVSILP;=cHKwx%Y(&?$)uT-gMP_wqhZfL&3V1R!(_0F<A
zCO|MCWw(GJU*tqF?n2=gv_(PG<DTpb)$tb%Oy4wqc_aPuX`u3VP<q3xfXF-(S~VKZ
zG!wd$fvcO1F)3^rkfH7sq^c|x7Rc97{wmY~nNhNWagnp?j$X9VeHhE+&4c7DG8g;e
z)q0(E1oqH?a_tF(B<s;&OHSoK&Z+Ms25x?(>w*V%eMRp2P&A40X$qqww2@5hl7G2}
zq&WWOTWa(5H5>ov4Aao~-e-Q09-EKUC8686>FTM+tMJ5YiJ9pTxkwbnNJPaLM8!yC
z#VEw739+52bL}*~0Q;(qdH{%JOe<=KLihsmv%~V6&%qmH#9M+G=j6ezdRpZWSwD@H
ziFa$Je!90lR84D@zE|kv8{r#x)}bX+)xQ3{MvPd!82PNJ>J9ra2fV9Uqs9I7Am=2p
zv<`Cj@lcoSygX3=*+USt*2{0v)c`llUxKXF>%{@dgv^(_vp5W2?y@C5-v$Lcp(60<
zW@<VGIrsJX<>hr>Rr2*3PB>c;gI@&B{*BxOTXm4uAZU@WSp%%xmo)UcmqDygmuFLi
z*z|oMW(K|S$sW?4#kY)m{Y0RwB@FM$uBI3=_t^I*fk5GLE#SD8AoWMM<K7w{?DDmZ
zj~%zhBC4jMiDtq{1%3`n2uDBO>KDD8RHIvzWu6ydXcJ){7U8${YLn!S&X(c59(?Oy
zHxw1BFc2K4Yn1%p@OVGSx<61;7iUS@Od)3)Pe*l7(kds&C@)7WB*!Nt$R`A(SC*q{
z60Oy*)P!@r;?iDbpBlgY><QXndnI{6=+y4A8U$G>l`DSJv8T^g11uIP$}l%XFmu|%
z^{7SiG403=2TZKIvkUjqC=(b4IUlHaRPNN%&RHd&Sj!pwa?LZBp=GSBo0{GSJu;!a
zs6g|GTAvk>LhvqaG7l_JZ7NWV3O0<2Qq63Vt@4)5P7*1SjMso&x;`UeJFg;`b#^7(
zGi=b3qY(Hsu7$+SF{Y(z8W5$MQ1UoTOj;tDd}-P~sI=sYPlD<$EX-4{F<VDQy-q9%
z|KS*f)I93}`32<PNb1LhvQ{wUhMo!<z>pbOo8dA3Id=g)mnWI!p|8_Ks{2b5zvcL=
zfUy}1|5Qd+?olA=V&G~%@m|K43x&87r6};b@*6X;yZwGx++G-aIi%f;ccwqEEHeN)
z`IvKRq>J*bo$_Sax#D^C;(67k39+(uIpRY6#dVJj2v@vOBA{cu6~~$R`a4R?+RriX
zlx7OT@Cp@+sMV`DjK<cR?D6_*ElVjH%ME8W2s5z^C<zOQ@v?~<1?7mdL7JI~eJw4`
za>YgAb4WaMo~vSJpbf=`h|5Yo)43;OtwKA*ebTMCfNDEkj7=X*15N<QysSXh_q&Yj
z2xM(9#aR!XKT6Q3s*Xc`ZwIgJ{(6SPN09$o>n^JFl!Q%_fz5<u`4kxJg@TWXei=n{
zOHD0OV0t7wHJ?>fE+NAzsmUm=$tWvKrz*ivE^*zwG$aeWd)M8cjY3ehrUFta(3xqD
z>V)#HD-E@a43^E-nRySlt;W37n(|>kN9P)Y(Yomg_r)Fc7G#CmfOEcn&7ln<0-aY9
z|HJ=v8&(>Q@DS4<Fc2TjjGXzN*KuccFPG!E_2=~vAQw|AOntDw{A>^luQG>UAp4>_
z%7eF)w_14VR~HW^*-5xLHQM7IgvpVc*HVIwn0<~}GOrJ_uq^X2buw@)e-N0K5G*UP
zHr2|OCAvi>-iI&0&WJN*WK%u8(unQ`5x!lZFwkwyrYn@AB*@pVMbz)7LCbersA&iT
z6~vWND%WIwO_A8#Iz$F-HK~xdcBmMNN+lBE*QXzGA;dMK%w6y=uWV&sLh-0qR`HqY
z*k_k+uJK_7+^PNmsbyc5^Ar`P<q=_L6ZynvnnyO+=+~Brk^i^@y5N6+tdJDHrU=)^
zs2!RID&0F4ju?m=h%P;qW#dsd8w(i<p*-rqQQMQi*a%yXi8@h|4Of&|$uB6EKu8Ou
zQ`97u6(Ig3OeQYJT_REY9{s#Z6HD}@qO<kt0JJ<nvb0F8vGNuB+bRtiX5ism)^=OD
z9KncYGN(s3qDB@kNoMN0?ra<H<}aU|>{pyrp!l*tN2Lwr!2i9GX3dl0M;1J$b2s&U
z8gLJHbrUE{-_i<PkOgmSh#+L9It4ia{F+&WnqAO%Tmif;fzEjduAf7kY0w@NAbwrn
zD^A`kT;8kYOZxZw@T1^1_sMozR#IA)b~+ZpyMlnL7?cD04I}Ex4t2g+Sx&cf)eHD$
z@YvFIDAUr0aU4%StwECD{B5->)lpAx3=&g)XYBoVp@P|_9K)%kD9pmw?3TrIb+oQI
zHYXSYBj0_!+6u~jXv2}qICU&++xu_pa;9WLJa*k_QJxp&$TiO~ZF1TDjZOqIlH(ew
zV2%$)Srme-3{sb7dj75ldNf9~CLB`ZkzyoD`?hokDI3I^3Ci8~n#h9~ELVq+XX<Wn
zYqxO)2JvV}YQFFEAZ)pnTXmh3Cu>5oiePaWYHDlh0)+m8)3ad4vopYJn>BH90IsSv
z>{1kPaKc56U|-Mu9gS__M)MthSAmu1K^s7&o=9a*n{~?Ad?2RYYKv|FhjsURgF{hZ
z8JveEBg4xvDPdkkNxm;aopQ>vl>sI%h0I$amtNp!9rYh1+>?bl+YrU-Q2H7+CdQ}0
z#rk_;o-SYBuCh{+Sv^g$kUKkKr)!Ms5Ai1lf)_hfM<sN7#0+~mLKkxJ7c((Pqj6_5
zv2RA>-+YK!7z6T+e&MVub#dYk3-nM0V5#c3%lpv9co)a|1mp$Gn+ngG3L}q(zBNZ>
zuj;W}An5A=PTb-Vrn1nE4Y~6N-6wp>j1~)fZ-bDi-t269*dOahk4IBmH(gRI31T>6
z)#%kL(wz(x*rqKWzq{nt)k$2ApRg#7*j!t7M@hUCJ2dbZ9ptH2yMB+^g(|#@|60~5
zpVA-45y-|mXEjdR)ya|rvaTqwNqFBDz&snxE);`a?k+iZq8~QnjI0IovX$A%nv~6&
zkP5+*Dzg=m8FDzrP_{`4@X5<C%4+E4mW=5r9Aa?hIC0j0g_-+6<_B*d_O`>aulY9n
zx|&Oeb+u~h=Y--bNtOBJsvXaETu(PyK^n-W6B1<p@f2BEiPf6cNZT`g>R(}+&EbFp
zt#x4Mqy>4NL9DU;B?qw%gJ72NKQ`0OC@wCTUK8<W=}M!0n%cvF^zsu#IO13~7g~*X
zOqnMn7Pz5;CeSITK8t=A%x?@RrwY1DKyx4JTp9{W#X=*96GB1sZVal+jmyiW9#fKt
zn(zbmmxg?SQWUXy!HeNNsPL(XrK6~dw1`EpnAIDuAOL9$38w^|?IUSbsfZB&L#IG@
zpO5PSzJ4;x=)L!5?>pBJ^Z|+<8J=;mUp!1fV&pSXlwI#-Z@R<C_NTF}<~8>#I3|Rd
zb&F$G(6X{k<WjF|`3w!5JIBug{e-y`-D$^NuEm&{`SlG`P3LKZ70AAbaY=uVE~V;&
zwP*gkXJPZRN>to&qnV4VJoq&v<K~kUBHWcq8Ow&}b6Nx7X(pd$B;&PH9ihrJaR5NR
zb){889|r<~;!M(#Y(fIWi$B39y@@anqAihfVv*5^8$#x5xVVh48quy-oaU@27e6zw
zVUZg-jAvm$8AiphDK$7YB~OtP-Mm*cl)ihr6kHrD>Q#Fk2V^P_u&J?eh-iS*U*VrH
z(N8fjyZR***_4HO%gxx|Qr<#tWB!zye}was%~z<uF~QdAO7Teix`mDDxVO1xL`G;P
zv)7v1sqJ}}8TNmuIt#D1^Pt`DE))tBcQ0-QiaQi2P~5#hae@|iXmNLUcMI+mcb5bL
zp|}PoIKA1u_rB-6|3S{lZ)UzT^E{uyTwc~*m1)7GWI`>PClj~WrxgA}yT2RVOuT35
z4#wCLyG3G-HAsJ8wEmMx3}iAX5#`{h0^DmS_XWEKpRi3%xK7Z>z4^<JI(s@x_@%v|
zp|3qdKyoPBaC;zcJ0}9Bxw2m=b-|T<am0RRs&aFvc+)`Nc}Lf2h`Y}ImI{T|@pv05
zjQ46p?~hsX{Lb>ZYvSHB9g|n{?Qu2Ug09$*2HlV>omYeG*vFo+!pC`jVfB~JA<U0!
zVihNOKaD)Gx!3s`X8Cx^8zl!#;*VPvE%ot+Ur<7|RA|)4cWv=HGCp&xc9yPNy6zEy
zI&b-pvfYC~u^l}&M{?nbZ5PJ&{@8{$Vj<f3;+0lC*jbs>hk#ZSIUWUlVKsg9cyLOI
zr`z%-VC1OJs-RC((lI<G1Y4Z@X7OGPP=sAioZXI%us@g#VyLbN`mbKJV?OCna0X@6
zBlpKQ&HbddrsY=+YHvfl@ZYTB=pTIxJ_8WJ<EI^{$JmBhCPG=pLRcrl0XCmKxfG6<
z55E8Dw?<tvCJ{Ux_|~Nu9A+}qi`5_|F?1Fr)3>9bur;!wIiljz{LLG>yIS9sO-YOQ
z(jX8@zJ>S#+dhlEc_Zd?^CJQV`d_W~53H#Eq78YmVi6h?=Li|u*KRW$$WXt?W_Lv?
z*XwOUbzK?%^+WY?%AlsI_8el23Zrg{e7sqApR81ma41PSSR5V3bYnfQJeNA+^)cPI
za*6tN@x@{YO3HMNaa`FPxaC+JyR5B!R}XbJb{76vUbkbB@z;+)Ld4g=56dVhs240x
zCz2deRIv>w=s(x|!zXGs*lLI8|M<n{mZsf&IsMR4{-%M}=Z2{hJK=)j)5R&<nd#??
zIXa&c#YfUFkEHTX<deuZ2^hTUZ%-@Ri`x_;LJcZnWe?SQD*pCS*AZ6dH`+!arGLl&
zrGYPk8p>X1a%WzKw5cD*N#*$T?eTXHq?O`**9Lv^1oJLBcV$+LKSSVpZ;wm1-C$X%
z5cw0#(?}P%kqY#)9B&42hGX{F%nQ^y<u8fvSN2R}!_Rs)8x*^<{1T#;uq;JQFnH&p
zMxW~4Rp(b?(vq*z6E6m%BS7UWV8IvA1&94T&OBm6>Kv8be)-s9x+h0)J*<%QgHwu?
zWnb}khzT;6lRiMyEIAz$X6`?;wgr?;=auQOv0VKwvx>v;@X@`+Cb&+%=aCAL030J;
z_WI%JVKMD75)FfWSdCqC)t*^NF6|wbk4r-J`<#=cVn>O_AbMwKlb{Ujyv9iH=tx8p
z!lllMYdTven}`E^!9&#7pT@e{#yUD1W840lXuONZ)f0-7Rq8tUPKt*AP2ML1#m%JW
zWm%)7BwseRU%Xx<3a4u(a{I#xWk=tuIOjyYn8wD)Qov`0GM^IVpVE0aSPk4okDB3N
zy+kxXia_k2fM0hIn|D5Y$)m;TjI<t!V~utPSGECU8HLI*Yt^Im87dL7r$v@+n>`68
za({^b;ZITEoV~kNO&)=6hk`hCJtvG2wpiR!Ny(SJ$JyAPk=N~PK^9C&(MYr2s4G)E
zv-{^4yzSoZGkdS0eMB=|Ot)o6vuF7eK?A!wl)GtQY=_{8q9}S{G5D-0Y!%DJzRm00
z7JtO+mDPCNC_(CU?rh2&LxpR+YgEHLsVAK`;aNA}@k?-A`nX{e&cU_g!-&Nlaa2bM
znq+n_*s&YcCxr8-6U8brCUa_zSz27laX(;&e*ILqn>^k@588%7ssz}_7`wQ~cFWiy
zHjuVOBmN~}k<F%7VMjnBbX0V?L@udSAtOsEq3Q;U@Q6~FHL<6Q`Xe8-ybzCr?I=7w
zq^~9<{{t>3Ac#|kdwn~^aa|vLQIAY5Uld<b5?_+iR?-|_(%cqOB9M4E$j;)&t{y1Q
zMeR7m7}=7Fo`P7d>qN{gt8()S6_w!Ce;_XWKwQO)Uqnw{RYq3o)Q%btM#-lX-kwkk
zXKRhq4Ug^SpSpa!NCcrmO!z-4X@DZmByQH5y`9RZ{dtxy4RjX?gofY$)2~Y*f<e{%
z5E1F)iW(ag;pKUP;tG602&f!n1Bv;DKg*9Jj0@P)-O7LbF+HW2;7RFiUwws};CE8|
z|Lun!oaF4?Z!s-X`AP}Z)B-z>|GZST8b|_8!`5RB;n6}v@9FScKvdLcJ`=BUEwG_)
zv)PfVlgEdD&IHv{CMvwdJbXmA37Ew1t}e-*&F#V^i<>aG)108;U>TYn)sWu0iU;Rb
zh0?|2MxGT%dD$=-T63)0j<0$OrLP#AM5T+>P9_3bc=3WGW8QtNH3tsoN^_4@@$RV|
zh#%8Nc02*h=YXoN2L1yl-Ykg(yxpc@?~q3H=Itcn9VBgk$UF;})rS-nrXZgdKniP<
zQHQ1*MGa21Zyj6l@~{^2R9y0~xX<9+R60p{VcW)?$R=V%fy8Kmbn<;?3jt+~e_Nsd
zBx3F7Kki3b4u-i8jFOE`Q@MCeucIPOCv~!hXWI<NlOS@8?8?W38X!`fqn=Bs6iZ2h
z;#dlk#e^$*=?|rGT6N>3u}lINy3qB{g}fc6dn>2=&~8gM_xS<rol!9|-rvoI#@%I7
z31NsPOerBvDx>2vV6o1ZPkVr{<e7l}Wsl)y_abGQn2l6rB8<t-Yi>W7u$(x%jlSPd
zV?j}4MN^|+T4C5oV_I1wHz+lPHM2sAkvRd)g@DDI6F^FhRzxfw)g&{-sC<*2xL#O+
zQ&&Y&$Vy$uN?i5<zvu&bO%+8U#L`;zdhi7`m((`UJ7Z^gtJv`!wYz`&BBn_B36cY6
z1+yF(8RM$3F|`ORbFtkQDLh{Q@z?^h>l^rlw^s<fmi=a<`YpCLG}J94(;X8tKx6jA
z5CL9`xcsoBuT7D7cK#5v;*H0zG~Z8%M1V8oHC&hzwu!d7W;B$Rs6XcW_AeXN*FjwJ
z*r<JC-7~Q}R_+)1o5XU&e_XvCC&pG^v-gtol3(B^eErhIHR(ZzH9uA{*qhlBW5w8o
z5VP18@c=gEBN`->0KBZhn&3cgzkq@g4fV%z9XGPa!Sy(WYG1!eFO7e=S&e_*@S=*4
zo=5h*Db)}HUG%Vxa-3Ytys9)tXsjNN{?*4@iK`y5(K`%^R=hmZ*bLUtw^_~{B)*Z8
zqa8HA^`qYSfbhR>gw`TVmrlec>A^jGTBmRq<M(i=e?4Zdd{3^6l)u!6Z4yvmpy@Pr
zkVy^f!1JN&?s)XV?sqdHTSE()_XkACuV-SWL`2Zhk2zB{p`@cxcL1;|@%h22#NUVk
z`c=u`+iiKA+x|t08m|X3V`N;Xpo+Gb_O{68`j!;yz@X8;f)4&F8hwv;*N=CWQ%^-#
zDmFUdtE6^CQU04t2kKB0H2Ot<Hednzh-{)QRe(;TmQDhe<}Qd=`t{c^Wh+^Kap%a?
zVc_@al<c}}@q|_a71vIi57ZV#xIF8}H^+Q@JNvqr<bIxMJD0WDPRSco$?L{R%<=#A
zw;7+kRm()*CvU2M(NY;&iIKC<xw`n))zw7IF~-NUT3<_1R*6%@LcLx*d1kx;2e5>)
zDZXKrf5WVR81JY|>@zWKanfzE4WfYr_t<4_(o${`QasbOoRgP|z8rNakUAuvwuXWo
z@PQ|cLG!Xf{j$z4%Ab2`5#|CGK2J1nPiJ{gXJ=IaTA+R<B|3M%i-rh+Wzh2OATPnd
zGU33|u9TKVkhX=?62YLGJHE0nHQC3TnvF3#c(G#)iTfb*q3q=_doZ^y^H!*)f@BR*
zeHTMeldXCh$=w%ME;|?RyQJm5uB@mc2INBKGCf0r4_O%%Z4C|OKP5^2Yitd(KN^q5
ztR#L8!35>9{n@}xrd&AzqivMpmOvggJNgniTDuTajq0!eDebSQ<G>B^Wu)GgkR2z^
ztG;I53vPm?%_{AF-ROy`K)U9KXd5M;{$+B1t5G_-3*4ZCC_Bj7W{^TLKhUPRGYgw~
z61tn#J6(UTxBSU^L2pxW+e<BFrT~~}qb%dD60mx*o&@sV6Jp?VXHK1dwk5GdisA=0
z^hso#$LFL_5{JjAG%K-~H67U#VLsK&{dx$_7%pkbKB^@PkTsuMRrccZ_a-Zyx0%+%
zKYg!7P^yuAXk)2A3|U{8+FnabWQtXBFhh_bsv0FydS}?D@Ab5G;&bEHMog=0Ts7Sd
zwprK@m@T~4fAmma+4fR1E|4xQcsixkY(#pRX8XjrHI-yZJ`u<lx(Oe|Y3o?-?GPvH
z>uDRu^K$|1p0}32)yIyPG*#R(3=^JTDVUfFbkwxw$=aFudD~s2&zd!?@<qN@a^HX3
zdLhr_<2Ch+k$1=p+v+m)Y%gprXgF0?Im+&CTyGRcAb31ZdWo}~p(ZogQgXn29I^mR
z88Ep~nxQ&Ke6&D=^z@W2&B-i50EoybwZ?LE!|~n!mX29O>3~MZ@~9!^Tag#E{4-Lh
z#-G)x5z$85UtV96pPEvRId6{BZ~k`PydosLHst9e+FfB%9^IZFBeS=%x=Vi1skr*Q
zLlGW)**__0lv!UDgT;i>EP<OwN|Sp{i+@3d!6Hj?ZjFWMt5Kd>t7TH_eqx)S9^aqB
zRF5xCdvkwpXzVNd@Ht^FTPeLp{3O<$5m6~zXX>&{*f367&r4ugwNRkROp-4WWk_yh
zwqVR_>~I!t+zOQdH--wEj~Iq;383iZHJ<s}|F~r_y0y{He9xEpp3u*I{;xMRB}lua
z&wKP8i@=BPwETX<NB}e^QXy3Up#XqV_sG%E(#J97sLOcGr)Bp?Djrh0;=8Z1&H5@0
z1}sod!g;?Qi`i*Bqc*(ewrI8vJj-><l9%0*e+Yq1W8qaSApq78085A+ONi~no9anq
zQ{n<v>Y8eDrxgK*i;L^HnYNq}sIyxyOmIJKu^mDuyD_&AH9r^8*erC!y9GUr#17kf
zSnG-8$&1f_^eTV}d6%kjIa3?=GVZf;oFU<o=f5|ziw+WV^--XU*scKE+cITEz>>qR
zv+cD*aJdv0Hlp}PE&fw#T;<1s=kBN{m?J&YVeO6F_s3TS)wMx*%oY60QNOFf*myd2
zgLQxU==f8Xm%N-eNng<BBm7f}&L^iP!dl&yq)3$vi~!?%hV{>$CizG1YXMJasPWgX
z=4YWsGXVx#a@Kx?ix&k;j6VKnUF*`;)DDrIqT??q8*uzV`EsT=Mw@x?tNY1?ZJ(6!
z*g>@vV<V5f{p^hcle*Qc5BrD&NmQtcKijL+nRVSrR;oFF+}KzxVEj4XC-17@eKp<-
zqov)Le<twybTXG1nm1cl?3!1qej>5!C+K#pzqEHcDswyaSk={*=YTFIFmSs|^5=wW
zw(6Lyfv5N#ios*y@59jYI<9o4_FRhImy+bWQbJ!USnm^88_J)SUw{0~8f{cnjL-Pk
zQGn4}aNmd4?ky3(dj-ptRBC0R+EbiJFjH2zc%Yh!!*(1lA_0(MQX|~&LQh_<OQn}7
zn&4r<r?196cSo<`GTwYP_;;cHu?pqD<7z620BYaEnT20XD)ckTSiLGjaJYhpHYFx@
zpV}!(zz0!x*lnJxrz|^^j++~W)c@Ol;Q^Yp3BxAKhhYwM3A~AdVoX9y0mq)TL_hPm
z^GsZbDmZag39IACdmA=fV|yAFaLW^1wA8tF3Oe6W5m)WZO;=ZzVT+p0>F8TJzxfVY
zOdg=hpRTX9(?o3#e3RNgBP9OYLG+6M?|L0cGy*LM>)9f<28G5m_>Tk$P+2tOJyq?0
zB}irn^yxx_?oogINng?X9epP@qtCm<3lb$a^7mWwsw1<XS*E`7tjN+$84m}>Bpq1D
zw6R2;C8vrqvb8H~y5(0La%n&zQv7;yR^?gtQI!LEM;kj|>=s#e*(^XO^q@%#kR62I
zBuB#Wy!}-^&L2KY_VOLZ7&cgQ+>e#1nWN$W{hqn~nzId0lN#TBM=(vdB`t>`zx#o^
z<EIp0KbCNhfXUeoeq)h5u0)*vh{?gHm_~327_CM`+87FpJgQkKEqM(yC3Cpy=sqXY
z&pXRx1~cquOUq}A)b8EpjosL`$?UE%?60*S{UQerAENLNn3ZxF1RTmvZ%DZ{t>u+7
zq$$Ky2b?QQV75ie!p@7BAsmMEye!-b##b({3XLL5yVAUbQZ0moZVei57n88(6NZt*
z`9g90dqTw1j#}wB;wXG4y$4>@cg|zU0<EV?p8RX$*jSOtNnoUcr`uzfp5a19<Tjqp
zA=kC)_-8_@-4X%EI~+#I5lOGeL7Y^;two@-FHq*we~XvPdiWLm^|<J*S;MOtTCpZ3
z-pi>`vnDYMaw2)xHG5BN&;5UTozmpb_H03Q_A$MCJ$FEp2~FmTP3Au@vnwISJ7xB;
z_h!Y7nGA^{3wv_1bnwf;1#zO~SFdI(JLcrojJxAn-!b`M7GQ(}J@hWhur+bOJo)Lo
zJ#g2bZ{q&Zi@Bu|cy;{Xn{1>J5yzhOeUd{b;Bs7hw27xmjS=%)W@N_4R)X_yQnE<F
zA(~>rJ)BUm?D({JTm3)h%c+<5M-`QY5$+**PcKa}&HMES?9$}bp5A9tVKQ%pn5KIT
zf+eCgvgfbNQB@}N&p++wMYn5ye;CqkssxVBy|wV7=k}YeskY?9WX?5s+FeOz*yXi6
zV17Q$ub<<O65N?9DG`XDxUdv|=+@Rk={fFyF~z{gePXs4p0*3!?3i@(G4HQV=OG?8
zEyv06TsseVGqHObvH=XMg6LAstoq=XME|}{eK*J<sNmx9n1ghlr^DNLxITEHM%w&X
z^lT)bZclVdaKCQhMew>zBk4K0d^l>k?8X``Gu!Sp?V>=>&5LfrMbtM4yw7p=P+x%L
z@2Ugi$(du<^q$2RnNCZ#mhL%G`}<_y)8Td5_YxpPW1YjfpDMMQo0)0elO7S5b?nJr
zRd4&FG4YOmcQO~`-m;j=p6G1F<bDzGqXeS)2`&($9}ApRSUTE*1ak6A|JV-kJ4+#?
z2ly9zpD(vR+v{y%#F#O#92YZfflO9LWhcxNLPo!#iQ1en9W5g^$+~oshQ9Fu=`TJ;
za1YR?c`2nsHPLCwset6XYbUK`SmTqD_N;f++4YiGu6EE9D}(KLx#4ZMnA7V{ErhzW
z!=$u5x41o*u`Ac*x?O1v{_W+;m&5K#zNBogdX7tTQZ~-7!(!eY??^oKiYz}RR!gyL
zH*wr){C)wIkKTnaa^XuMueuj5d3JK+R*M5UCYwMTqpE7_%LO_AiwZWW8?avANB3pp
zUxf!=z*W*ubPYYkllaXx!%2O?c5Q*2&S{5y#~(7na0c7t1KX+mst%W;*61eqih34A
z7GUqG0pT_nx2##8K;y<JS5(et;_~4#9aBJ?#QeO&z93BCP3XiB`j_!g89`Y!Nl`UU
z5gm063wa46Wkn^4?UH4A=<pVe#{p%IQw*ZqPVI)zBva|>Q7)^+s_CMgTjudEZB=bl
zkgrJ3WWkl&$oxFUBG{xU>I7qYg}#lwamdY0()gLL$!|)dDlMH6{qH<-$I$UqiH8&!
z7j|%25;g)^nX+Z({P2N;g@dEIsw{xhqZp)>mYR}6;QyiOG5o;Md|5Xw#jKo_rQZ6A
z-#>U>&rn@MOH0dG(foB~IR%z&Ny`uskzwDiz1SMy_g`IKkf&{B_&a@I(PYEh@S3@L
z%hXDYK+Et1pi-=RRSaK<j#V&Ew?-6MS_|sf7^Mw(b5We6`9ft3wbtZO+u;Y>*CuOM
z5L4uD%@`S)!6M`lm_|k(y#$N;FLCtvZxnbjqUZVSHa7F4=$7+#jud?hzP2^LB1lA?
z8l!P@n+*XdPz4eR72be~@o?Q7Hs(TgQYD|gX>u{9(f6(M_ZsEJ+c<KLBLu~*XJ^tV
zluvfBnY|M+3ObxFu|dyXZ<*3Su@HQj6Nwswq#rE|GlHZKi4#Ll4(geu)aFteiIVDT
zCDjm5qoy3ZQ1HkX6)4>vMeK(j_tKg?h5A6h%l(87wEOB`6XLQK+f=2bz9pl>Tj>I#
zc%-SP4FcEx+H`$9(esC=&jL*#h8<4tf$_tdDjiaM5ACJn#^6Y~x8Q!cGb+5hV@t}|
zQ0kmDrRrXn=c>IMufI?Czs;_VMk&9#ae>>ww=ocjtxr}SNU%w}@&%hx>VJY4EOU!+
zPje}$SU$3<d-x=+4|zTRLt&27r58I5!nRm$T8%x>oFR#OH{5!GH-($?afV~$BV$`)
z*us3+!c-eu>nVOq^iVjSdAVy;dQPjHhneUr&(04@Rs+BJOv>55XA(_-jlSbdSPKxG
zZ3c54biZ5Wh}(+r&$&r4lA<fRl``q89m1M|biCM*0(%q*%B-mht*JtT9%Icc^6UH$
zZ-w_ID1ou6GB^S%y>M@IepSa_S)AK6qT4eLm>t~--=_)Jgpj9CMTQdc^=DP;Yr<W8
zEy-?fNto~8C!VX;OYF-H5E}F1m!2DsJ5ZFf8b(ghwvgPkd2iUL8T;Md+8IW(-^ekH
zl>cVq7guWX{(ik@$N9d;;PeaCFpOgrMz#uL9KI$U-oebg`YBab|5aVYN~%8u-~_4<
zlr8I~)kJ5Z7w#Ql-oqS+afs`reEn3GqCQrmO1TQo*Jx$LLoBnJE^cBMcDFV9=1T)6
zt=w)W8sE6O!eEX!d=e`%BI@#tUvTpa*wyq`Oyq|ZC7rs=>fNiP(*ep^<y~G`ulqnF
zF}Vz6Y#60jfvVIWagnDx=xU$!zz;`tX*bVzn%5MS4c^^13rBd1L^zab<JcQzbEDG6
zAS3x<Rc)Gk%^{*HHtHHW;+k?2s|vhTX`Yov$QfE3v6V_MpZnDYfF~~|^J>iYH-N9@
zt#+uIe-ARo$qo{X6SJ|;Vog9<TA<f=RvNJ)KC$ZDY%olcpOqGV>?*Mgre{Ek{4C+j
z<zz~OO~O2Z9Ra={^1}K3jrr$$+SdMfThi{>Q$|~;%%4oU+#I?1{2e@>BRZ#R>o?Ye
zI<sUFRySkLlRNp^e?C4uCYG(GGr{RcMww1m1JBsucay4oJ&-oXm0h6usPd-I?vtG*
z|AC1Tn15q_#yQ~k-V`fzguhC>6Z}Q?t)!L}r6a`l@Bhgo!>{QcdEWWzQ&SvHGpu$&
zLAG{#+Q7jDlUnqS6@&+pH5huoJ)U9Nb+K!?zdANbZ4&tFK=Vm5wVSPmwSEv4yNFlV
z;35E)*0UWqA7NCpFrgU@7nN_nfnQADh1d5)t_Aw<PKbH^#cTB^WhqArB~}2MsKVy`
z`0aij`R`E@i_hIFBN*h^Vyc~w94{+RgP_f!^3B{{?>=OxI@`#vlh<K0KjYRS;`$9w
zsNR{oo~dYWPQ~21`891ldt|4i@JnHkid`L>NT!R%06!jScISncF+;Q`E!AoK-gCJ$
zlR4&&rS4{L=(eJ(8AvTRwFj`MV&N6^Iw5Ujb<Q{?Dr!EvSaNc%IV%y_uC1~9BdyzO
zS5Sb86qoKJ_xyKA>2$d9X-}5(?#h#Ny2;~6E?;hD#Jl)UWx41+2CvC2l6^t-UJ2)C
z9%=(LWTc6W&yL;<9?snd-w|ZQv!?Q5tC9DEMGWcr*uKVtyKbh%O>;5io+wiT9E|9s
zE#++xLeNe6IEcGJ#N%SyHNJvJtbD{wd5AcF<FY+!e3uH}p-iV_gj$!3GB_qiGA9`o
z6^bQ(%?Mk0YG&i~H=nu5por#l*ox`l>mWQ0V-m=BjPKzex9qzC>)8jkU=kC_el;X=
zr@JvF%w5ql%sM~Mq_rUq-Hg5TeR^2Gk+^-Fo4x~pjKfbmz}B)s1)3k=Dcncniv~~%
zJ6;26_{o7vGF<|fJj$d-*X$QH0~gzuE#1mCZVzgIpF;;r8Kgh~*ygSK5aR$xzzByo
z)|*=qZFt?~?TqgHpS=i&t9xlL&VQ8{p6L8g9QB}z^!AFjnhZ~BeG_v1*}paNkkHQ3
zlJZ6rOxFy$mRdXjwy>2I`Ll(+A9=6F(#1$&VNbE0Wn}JR;99$?O3B7p<0+EbAFE_k
zio6>-hwb%?w_ssfzv(N~#eG6da+5t#F{kl~QNuQ4dQFam4abCyy5x;BjdiMT@hmBz
zI>=<Xs+WVn{rE0`n&08|Q<+xMxE41<{^t%=7ZE8J5!nIH$%2Fv76Sgg$ryVt=RrQl
zj;@^!$V#midgk6%KV!1q$%^)DZn99o`c5GdC&}RmTjf3Lq5V1kRQ0A*KGbgI7R=w1
zo}Vl;^_ylqjSl;c%yYrwN`Ghkpfgs&N%YwMZi~sspfod^(eOkDQ}dFFp~oX>Do92+
z`dM4<%~*!L?i^f82TM!$-MrS@d7ZaMWfYEe2z(6Xrm8@{EYpkukL`Ygc{Y(4wDb6-
z+j|yuH4n5Dp{|Rrs~L6bm}SOwQL>!SL=>!YLIz7pLetWUQq#gpPeV&dx=K&ON=d{_
zOF>Ub#7NY9%Y^qrW441hzVKXV%qVgcMH?~q<2RFKK0d!Fvahd&j1%su&09$XXeg5#
z>Jj&xOde(vwKdBUi_vMk0`D)anQADEO4{DWQ$X4A*uUm~RhvH2f8-7V^C>_^4lY~$
z8R-0%)nra>>0#^jyU&g@+P)TL2r3xS-n<AT1^C}8PVpcTjHhbd&2C|l#^1wfinxi>
z;=-CGy=YvA4j}FUlYCe^!2q#ajnHBN$A<jHKqYsZ--jMiErG)RQrpqlrT4-p%2QQ0
zL-<wZW;jnn#v)Wy-r72AUj}svzinY)@GhR1Km&LK)J4t67l&bI0O-APbEGlRiSH*5
zJ!EcP1ISDNcubY>sS`#GS~+1C+I06Hi}e9L3%!u3vXjbla`3z6-nzP~x~-R0jJ4$L
z#6(~x%{h9N?PRqr+X-0(FKf%axzZ<eaanh${48Woc|9>TU%ir0puQ?TT27Yf5T&>7
zcg#r%&)ifw=g4%V6va*`g*knC&YI7Wxiekr#?ZH>3IrTZ$K>!lD@JexJr*M3GMjDa
zy?ig@Vq(CPyQ=1X_B)hH(;OFaPxIu`XxG~}G9Yk4h^<i+UnML@2X_v}CL#a@L}se7
z8kp#JGCddkMWt{?*&#xQz2`Psyr4InSuJpm?;0UBQa&SgbEXo2Iq~c^s^=!_aI_VC
z&=nK+iQ+DH<LMPCSa!6S*5~p?gue;@0%|+MlB~&-m&*HFQTDqdcT=a=c^-Zg9Cz$@
zyYXwhqt+rqE^`~Jjan2}6%#8ddz$CgdT(xNB%|%1j1;v3f{OacdRq{1)9P3}7Lrz;
zo20Dpv=h%MIoZ|(xLx|3S4JWjiNMN|boX^#X*s(*XuIP_T6E_)xg0!q{;zQXIzKlD
zt%S2B%`aBZ&rLwWW^8_A96reZ=9a6XOUv~@VKZ~(+#HS{UVc&F?hCwOgmR%lgXp?7
z=@!PhBlKxuQDXw~MMz51wLENvianQ}vZqJbhvg9k_4Wo%N<#6GTZxNX6x?EG+vW%u
z842(7RD{`O*w<5wNOOM6%nMhfHd%-w5NNxDw54(A8}quj3|~0Qn2(5kZ8^^Bdh(8f
zP&Pu4q9AnKufNgZUdu(%#i$e>6wfwC3mQpmsY-QBnurmlO42$!aUCmR9V?N!d_2XP
zfLo!kp)W55=DI~LPhVEe7M$JQVM;!(OpiA>-2<3R3+uqxToa~-@d*1RL7)%vzGbD}
zDnh*$D-S@|nOj4bx|6U;A4t7jqLXccQ?)}^dFyN5$b!h)qN5wBGq7uKUfk&J-2ys!
z`CgY)_-T3X`!5p{GIeb7>KnSsrr~i?6`4Bg1sq*r$D`PDF^ww`jVm!{)kH#TW}9I`
zp8TA?Fwx_vpXx<r3L%|eBkDY)>U)ofkW}@tL><iX80#ry-#<o1J|H%wQKn8m+v8I{
z|46a;k)rh@$OU1ZXb#!MQa4qVMm%c}mT{8`0V6pN!r`?Hryi4_7b%;<%q-U#hk|!h
zCGsRfs9!nu9IOv0^qi`r+Henhzu!Tqv7ygsD~9=b13~wRsi>iQ7yPdz*CVnRMIVFS
zj)OxjFIxTkeZ0RnVFu)~CJ)vVzPuJJUkzQZZ6mz>0~Nci6#p?75d4bZpzZQC&7m-U
zfn};qUs<OQ)+A+`@5J%uUgZcw-$k9{-`}fH_GHS}`(7`3A8`zE7^GfZSfQ;=SzSpn
zI|B7jN3NFIc`d$#Tts02XKh!#%t98(?2LP+R7CzPu^r79<`@X)3eb_l<=9iB`1yG3
zTpD%iB4xs4S?zmL^FkYs?lnIU-AZlaJ~#s-7VEgISsTOvdRr%28j4Mgpt@lu&SaxN
z%h@hjIH>8>Tx3I8g-LLf#@qu_L~G*L;KvmC`kp|T)oh}AggF5>i~H6kHiOn#f)a(t
z6gG(SBqmxq$J1b_cedOt@J*`^f<Rpq!$6*#ScrRNJex->a3Q3VGXL5C`)>Dq3dyNe
z6>|4@^<#GpvVz=+E7e9@7EUa9n5Dj_o2R-k)3qx@Iks(amRw~BnqD#w=#X(cH6t-G
zdDkS&X*WEfXYoa<{uh%#)!_%$mP}(JSl|~&t#{ivAin$C6I(xpHr2Z~mLJKQOuBPg
zX;*EgEBC@T`zngK0lfT8bJ>1scwICza!5ROWHw-jU*+G}IH$fgGGmeA1}m)#_&Di^
zD-3d+PO_IRfSaRi`jC=lz=p{m>1#;>(PfVKQW3IQj5X7AN@+c>1(@TTSox>t89xAY
z1|gih1s(TM1NoHubqU;wM^U3(uJ}&-%l%@Rk1J&^8q?sdY4GNh%cC;9+R`RnL#IB+
zbR?g!N}n)PAnN@N2g{=ooScm6aE))d-8Tz(X==XHd^U2#xUo1Ls~PUTDON6bZ&mKK
zkY;G1z#bZt^mP(c!$u{*71&@jKNk50BTaOz6Gk!og0%`0FK<9?`%<EbQAQto=IOT5
zJm3IP<L(Gk@>X$Cr0Xa}1pW?gHbfF{k2&)>NXe=_QR2>Q2a}i~`LaF-wOg`yee_>3
zg%PP^3Ztj$3Q^mFkX`-McSWN{&&?!Pnn@>z@7{tNu%m__;bPMDwv1mj)_m2^elcV&
zu{E*?Sa?EHF?=h2!#{fu(@l?icC8u%xkb1pzR&)XTTp9Y_(Bf@jb%7!EZluuKyRDd
z6swrbEA)v(YB5K(8Gbhx2dk$9$%%{%Fq<ar=%+91@8mii+Q|S|!T_u?Zm`zbDcYX;
z+e_$6+@ag5JpH3716`A}Jj+)d{)jIZba;Niq$G5$Wu=6EU*JRJTVGPLUtjJ2wQfsf
zQH8`FafI^C>u2PdJSo?O5aryG{G`UE$x^!Q(~ono^~r678fcS1=&gE>^<<66K`6fg
z9DTSg{?{Y1*<X7+H|qBtp3(L-u`&L|KWI@L-o>@S@YhaCT96{aZvd(a?HjFJd9|W<
zR3Cyp4>j|0jRzq^;U2_5u|Q0O{}qPd;i#!0e2P)vi}~nK8WAkT_+NDVKj)o;Br4Up
z#tu_1pSZ8}-8?imGD{Xa&5Lovhp3D}t>;~GtG@B;jqr`TFP&WGCjo_9iDTWGKRqW_
zl^k(G7mj#|C}qg!%B)bb4et+U9+Q$9t?L_$JxxAllEl7?=eh{+DvTJ>SH*WQOMC1n
z!vSJ^SGo3?g|UVfFOowg0`~>^@JNZAPOpEPz3DkRX^xhyj=NJJq9SDD-TJi_e(Uvz
zC1s+DO~Umeg;%`PpgZv{7=vLcO>=m@Vh?w>hqibdd6W?wz3(LT>h@&7WDV&&m)L;_
zCV5JWo8A?Ver&*ga6zYqQha=t8{mq6N#S}66S2(syA8~u-dtBCIKW1lAMQBtdWm|)
z+P-63$?KtgX0;Fi#8n>~3f?I`Z!cYUa_34(d4ia8VC&<=zl&aR@AEvS%j=rolyEoh
zB$t>h+37#GZNUFs{($^c*V@U*({<?W=p7(q<bWi;pKf&F^T;|Q>a6Jam1W<Eq^0l-
zHXMzP#T8**1YI#aV6~~mQ+k&w>F;|QGZ7*<!~*@uO72T`o~UbpcMwg<PDYw4N)LBu
zjGeLHs1rjVH;?PJ5jV5iU4fB1TV!p-<er5{e)C9Z>Z){TPKqqE0UE}P3b+P7PtAgv
zS*@=D>>C6Q8wAR^78@K-n77HXU8k_ZzP9rDfE}vJ5ix{Fq{O!q5Py>=7I(uh-vsM$
zN_<Ils5VKI*Uq8IkF{`_E{ml;n3<;Lud=BagpAJ|Web?Nx(0qJTi<cB_Wgb4><vrm
z*{RhSiJMw)_`5VA!$N^0G6@mr44QT7V~G8~BK?FZ-kxCO6}svwGrKR4ucLE;g+TP{
z6G6{qYx0*5=pB(trir5DAV*)ZK=ZYt2qVR~@DE-4+b)4ocRP~v*uE6qrLK=L+slI*
zo>*T*!E#<1Qtjyq?Eyhv@TA?Jz6++agl)YGxwkdtFj&78(<muD$I7L<c229TFY<VE
zU_&fmV9rrK_{I}^L6M?{T;hvBzz+{4iQBh4w-;vyi7OlUp!x|if#c3z+mJG;h&+{`
z%7;SZv?Ii@f{%ZdGc^7k=G-C#VCFM7v|Es*5rSCmw`XAMAUm7LA5kKoeYFodn~RR6
z#sOZ^xz0xQD(GR*bQOf}<);bTpuK!w9#nq=K}!6n-+c`@dMZY+$dNCco|092<N~`U
zN#F+tVs(Xo@7ZMlT+23byd{xwQ_m0XV%lP>xAc#>75(O_=5s1gz24qGRg4nbDZHim
zhnA5;009P?JELt);ue=u{OeaA0%gd|98mT0**?df!F+k8$E$VQ&1Nt3)K`C4b(2`^
zK~iky!#GEEZTUQyuLHt@Iz(xPQ|<*s6N!{y1_CedkMj|0E|l8d_K&ck9zu~BAxE(_
zC*`d1tKf|^ijR5;MSLRqjvBOidzhPi%<$z!6cyg!g)BCxvPq}h7#E8E_gg;(rvc7W
zG{%<4{uVnFcw&U~!bOOH6KO3-xIkdHR<B!ejzz`(F;mRaYg8abp){3X1eNkrm<$a*
z7Q1+&$+SI}Ke<9FVfXi(ROTO?wF&RVfwyeiX+t5Oajj<*A>R+wCE4?F$vxV#uZ&f`
z_M+yaIt)|}J!ko-h}cTMJV6BB$;r`Sp&5|ZQ*#u#5X+QuAEshcgV~jaMlXb!nmfZd
z`NY+igs^~!`0a|8v$tQnPA2wMiXMh)>faqWvG(!6Na46aD#hFvb+%p^Vfly9+`q5!
zaJ!hb|A6#UbI#mt%>CV$dw*DTV?at?@E63l2ZOy)@Ba}|JK9quOTJh=bCcq^ELJC1
zymr;C|CKI@W9T&iGv@1(Mz+TRO1=yq^Ws9vX^Omv`HL!u6PxNPQX<MDOWI0H<futa
zkfw99jIeBu%54rA?QGBImj)CK?b;%Bp1<#XlN+Xly95+#d4kD58<3vzpLA{x-6zQ3
z@h(z@Pb<ai-H39pypD8QQn%J{x@>%n;>1>{qtmQvb$DvG0K~ogst#7hj%ku;wA$0=
zejp9Kir9t^O~1^yDj#V&;88f3%o^#P9A`<=Zqjw+zE@Y#WOf?cMMr<2L<k2cUEM`w
zXsy-8l+c+hcRmB`bwRS|q5HD^AnD)s{nva@T^Ib-*pAGv-2;0IQX0?OB?*M-Mgkkz
zdoMON>%mlV^#Efr#y|A(R}S<vY-%4sh6L3V67zSaMVy||o8pq9K8CFOp;!B$$7HIk
zo4#-6-JZ?!aiOwyD>qpxM*?P}pQ1DRM<S6hJ@t<m3~YuCY=`v#J0?%IqgjB_n}tZ1
zMlnmPc1<~PJvoLVyEZW~Uuy2AF9LiLB~?^1ICp6Y7rJV1HPs^#j@#5EtX&UNx`?N!
z=!frV__uiYw*+`@;T_<A5gybP>D`QO{W~nvGDqjVu%Qvj*`DS>c}fVXdRwzQiEU}*
z-M3`d8{zEuE4WQ*q)ztBZz&&ztGwM5b6qN8tw7FByRIA?CO^J^a5G;WvAwdtyJIKm
z-VN|b>@bL&`;oJAO>S-o`wB7uR9%iEt5vU$y|M#;m*$t|AW$!?f}@wzEB_yV@o$ZO
ziUcDhKC3&U=4p(-CqK{hWMt_hPOxO;T<pn(hI6|K@4%WO**xj!%y7%~{08c&bv~F;
zM}80{hc`qeHx+y^n7+jap|Go@^=noMc0YWX$-~M=x7#KNjuHR(^hE`Y>3KjUT)bn^
zlPHgO+`D(I{)qrs$lO%+{M>6UHAtHn8NN^XGWTnsuI^2W!gPS>cLQ34BD3Qas(Jb(
z>qlYZtuixmdl})7vXrIhTz@P?r{}FkR(m``SQ~lYi7w#}09%eC1i&FM?0lk?Yf_-;
zfwiWD{YGQ{Z<5%U^}c;c253Lx{8T0L_swn$V7z1*MUHz>1RNkNWQBhV1u8OXHstPj
zc^)zGeQ3>|4UR5-$KS=u@JM1k(uUl1Gq5fEOdt`Sd+7KmR6LFttp*txm^!nI`w-h{
z8|C!{cvHYR6xjvOuJNdwpV(P*A76Kcw4dXKJ>w_)Rb+}+4tjir?d=IX{+2BfA+9p?
zWVdfav`3G2%iahxVLKd<!b}D9o`~?ulK0a8(w;s3aB_4yf9Rs7>6Bll(wL^w*s7BB
z(<i4xYV7-)%|vc0IG$s1i74Yl=d{*cPSHM}%HpQFh}rja<Z4G>b{~qyGk>%FrI_06
zc?U!CHv12d&fYP1O*C&qme8DYg~xV})nYVhEG(G&7~uEO@O7TrdLCjhm%IU0TX&ji
zj&`NE83RZy@7Kn+IjL^6nlfd&r6_qT6cX%6W<$gpA?`EC4#e`iU(rKfh16W#OI^wU
zJF@o57Th{Y2=OQJc+b4$b@bi|_6PL0#y&&l8`GAK*mAO>yoz0A?y!u3rd&MzpJoph
ziDtx!joJfylOdDo80q#n<DU55#OywIBwJvIqlN<oyS$UwE|Bl<qb+{~;OAD)p(RJu
z-uC`GB*V04+o9{6>|281C(e0UPN;%FZ@o@UhmMl!EwglK0>?z*BRY*RdZCfqPFHqG
zMh4~S>Qh2qKSxnWJ@Py?+duvBUv3aXx3^yHVV<V=2&?(%ARnhXuBtljzq<g0EsPpn
zLkBUoQRi{(Nxi#OvS<G&o`;=N@e{_t9P&a9@5|bGb|muS6f|Gz6K(c)bE0JM)@PAN
zLqn4Xkm?gkp9uZ5cCicS8YEYB9fxu$47{bSS@K-mm_@Dj>2!5gJxvOkCOY-in}m#M
z-+r_zEskuB>aO8EHz44RL7l}A$-f<3-I=(H(ZQ3$`TIy5l6S@bV$c;0cDa^N%|`vp
z2621%zusDPXvCs0e&%ai23agvM&3TqtGXa>M$X`~`GPpKSHvwq)Qp-AcnB8kQ)~+6
zm|nYl$=V7uHNBdw_IeKG&TwyA<jhiuKiIX&x3#GG4K|8u((J4k5r;l?FJ{sE{k5Ny
zd?qld_u<+0P-!i?*xH?Olm^Qg37bfJ`I-ZXIzjI%$xatBDG|fRKlFPZd*yL1qRf~t
z-{IX?_g)rSK>>PJm<RI0Jv1l7JO@XKV+})jukm&Mlz*uo9WF{U?Trr86mO@3asamm
z2FvgIFsfAp#;R?1ojQ=-tu1M_i0~@+3n82%)E@2srdIM}<NUsYQ-WYYhGVBb*V?d=
zZAwfBEA8@g(NY*is31L=qqvCs=-%q)*TM2m!R2%GJ^Ps_ACzqU!vps(6Ex_g&fi`J
zS5DFbuv4e2z?1=6-UKW3?$^mz3M$OuFM%@i*_WC?MP)TZe}<mpCwbD~)$jC=IK2dw
zngbVfrFxnM(y(efU0zsm0+(+%gGCCjf6s`W2%^tgGO1R<2RfsKo9zwCuX^ET=TzvL
zpmAapb!DDn8RhnnJwCPEXg1&60Ztg*bz{li?}%uu*rn8rek_9E6om(e90&s9kFL%Z
zcUd$EHp<w#X4TxYi_V1P2Lr>LZ#pw|<sp;f^kF9+Yb)&ThWsgx`ghJ<iisz!Qrs+_
z$&*c$#c^x!9t)>*k-+{%2Z&<=i|U5xS#3_{u8q4xgZbr^HuZQ4v7v6cqdt+Oi<nZG
z=x?QI_>WU~(y2%MXCZ0Ye1>ERH7|3iY-R!?fG>Nf(w>#A1vmUwb7+5NO@Y<$z{UF^
ztwJX8Y;x9V-7m27Px7np8EKwK^$oNBwtvIDoNi(g-vD8BNVPS_vJ!Ds9^+R&!*=`3
z?|<vxE9V^6CgVL(kNNg3>R&7j9qkwN%Q3Ev)V36R#p;uaIhqZ0U&`$Z=Tcd9`WC1^
ze+m|~>k)LV1yfbwqPR#R&<s8<{hcn7kH?7{oiMJWj?EI#Pe(DhygVx2+g`lS5~61K
z2X2P=cm2^ISIqP7k!cXZ2S<*WrT>VC#U^#ec$_rFL`FdteRQ-M8GQ7bcG4iWm&<{c
zWRO$$@w_2#dR1TYV&|ek#!XV=q7rs|jA4l*LW#QXd>avS`<T+E9hlLmO`TI2NvWt*
zc#u}zol<l93KiODaM;#i^AvYlt**OjoWwC=F+DAftjvZe=kWUvytNYpJZlU!qd0+|
zs)pAp*+0h3swLxmLZ*M0Zen`b`hxet6M<<*Fa!TBy<L&u3;VtASETIa2$ibREI0;4
zs1;y!X5DZ|n(kyU8zmDa2YA!#V;nRat*&{OTeYX-FD(YQX3JIa|6{fgC3fE+SMF7s
zYOQk~=zM7UdL2~Nc-%R0+_@GO7EhX44cdO0v=Hz!?)u9TXnPl4&Jq(TD@&#KRB?Q*
zWUobLkd)r#qy3KigMstLp3!-wiD#1(>CLfG01NVgo`qY{VkElCQV4eiU%b=$p)K{#
z7zJmQfc)8_Hv7-!1t5>|$(UieNciR*aQ~nlBM=aqA6|PE{GaoyR*Z|tIbt5mTUQID
zrkmI1;r-7x37fE(`@`}?8K=?lg{QUZjWglt1`s0hv^^TM7S`!hhs<`C`Ww3;x^MyP
z-U0cF9RZP}DUN?*rM2Rxe^|f=#n($-Td%D{9Xh2=TqV|Ut?sD)SYRXV-QQH`MV3*q
z<MKonJhOZHN{DFTr;U4A<%d{^oS}VibxinHh=Ha%yAb8m>L;rbc5#!D{oN8ugb^4a
zwiT8f;`f%S`fFQ-;CgG<E}xEH)frdSQoTOlvnNK8FXt+yu<-b?4@=hLQ^Ro`8Q+(Q
zNy#<y=9=)}l&AO3cm2rmre;*;Z}WKQ#r7wBrgbhds<(wqru_>Ub*L2G#adO+=@OIV
zQ(Wsx$`LOdNUOFJR4WeE;Uv1PgCMEZAKZESPy@I_g%AnFOc=Cmiw?uy4!_*2+&;+}
z=29QtIIrbg!64Plb)km3ln`#Fr0y5=(C430uV2b6)YqX&ETAvD$rdgi(Gj)d?yjWX
zhG?NvhAISXjcoYw&~?&mdFquKiAJ}s*=?h29V2~7pIr)gv*$5;?TOr;@i5+%sEp!D
zq}B(5x;z>!5&a6sZZ#NkVb-|UgifQZAjD*MKHw5xz+%9-x<0^?_b4FnY0*6V^sDex
zGOv&F(9|%hE=PB>_d~KwvJ)1pqpMHytJCxsy5Vo^EGCvg<*n;jVjbTo_izR|(8QGB
zw;wm+Q<GdO+AE0F*NNHCf~Y0eiK+1?*ws~r7`ItiPk$1=ej1Yg@@x99G?Cv(pY8p;
zaJeS`na%wi9wy#@P<~%{6|R1*6nYVYE@=_&li&ZUW>;Ey=5YEJA@fP$&!zC{3tF8r
z`=~dq+;Wa(PgTht#CHOOUsTt3Wwz+wu9h17gW!$&gK~E)EcV(wXF!8-?8{Drz2)qW
zW$LqCH=|8rX7Qy@CMyevZYasaC24)a+uUFNh8T@oUA}@g4a<MJTjjMPd!Q7pbn{4@
z9<Tfddj6Np{AO6SB|QS6_W|vmgA*C!RG;%j_m;x3F|`7OE#~!aYO34p_lIZ(i+9EH
z#n=G%K7Nc?4)zt*wbeD1^_5P)!_=l2Z&V(=cgF8olhGm6P}Vx9dpC~LK=m1^{Mobh
zqn(&~sky<stvz%yr~`UwBY?WqLB1bVS4FI?zT(W4jjUGuX<9Q}9{h^7A$D$5_fVBh
zs8C#}uX<{APC!D+_7Oe@Pj~lP2ri1rin@M^j|R)q^2F8js!hQV*WY4)LY0IEV!=L)
z`_72h7uqmKb75~;SzQ%TJQgIS-t<C$)^X!wZsrfcp|>6Df!g{{&tL#)xt_(13f&zO
zXQfHn#;&aWlbLG87B1xMvK%37yw)*!G4OYvjPBoD%!!5EMX$-x%xp%25lA+D_4x<G
zRZrLI30v=ZCZ3&#-Q})C)5Oo9QB}p`j&sH+SmqzMx4j<#LHnI2)(veh*-eY2OQ#s=
zv1KE4bmpP^#=<)DKl}wN**T+cz=*M5qP~mp;q6^`daLTc&2P&wGA^W~-Un#97fNV-
zgrth8&dC;3&M-fy#sBHwZPbi0=0?xPk{OD^6Ii}eWWp;Z>5@Xljhu1IlIfVsK=@mV
z)w5pi5WoQFO6W&C=Ji4I!l3Z1MPYQXG#wit|IaE6c^pPC4*P4IeKj@dOrf{QVKSUO
zd$P@ub+Z>3)7%l!Eap2upd|8?#AVLCQY-e^10uu7q}&V@a8vp@SkkC$D4xLLG+vTZ
z8?EY?ODIhvR**2slJa%t*TPeF>(}*ehUfwP%^xB<DZ2^`wZ4ip%Uk4^>>qSNDBPKn
zF6EB&eI~%mUuN9i&R55Lpo1<k_lN+itN_gym8_fWFMbg=s|s6H9a1feA;*kwm*YqK
zR#b57@)*8$Y6yZ9cUK)RUDGYh@~S$!kGc1Hha2$YTDyp2(BT;kLRMGLyE09)?H~LP
z8*hfSMqSe$fsCw$VtllnfG|&WH2#$c-j$eB(}X#Qh10n)s*)1?$aXXe!}m+X!x!9V
z`XPV%At79H0sSYf?pHg+AtsV|@HZLtfKNjs;kxRsPvhS(kx@}zYlsbpbBBgEE?L0H
zAHjdd);f)+9Dj?A4;P7FH4Nk>@nm)1(K(T;E?ZvN(4DgMJg|_ac02TiYX_RQ;EGdc
zE1X*%klK436(0hG!HI+@wZb=LGQ=InH$oc($hak-GP_$7cUkk@jklCEq3`kbC-JEK
z>*=7EnFt-kXDRC~@7{EU(Eo?sE-1LK^uPmdX;$rZ8}=|D2q6wr>ha+W+HS1Wx!{YO
zisN~t@ZtN@`>`T6CKtQP=6V+jVM_M#Y50}MLcX8#;8vR_Iyniit*hp3;XOXt48ot4
zcSIaDd3>2UFJ8P*;U4<NwD;-4l9@6I=Gp5%Te3s_=7QlL;~2wMR8m}q?uY)#iAPmy
zsUsU$wXZ<unjCGMd~lJmC9gAlG+z=}JWsB$^N&VpjyZ0*;1((I0;`ZD6`=z&OB6O3
z5yrUb`IrGZAQxKxcd07V!tSyFQE}qz)7DW^6YDsz2~<gT@B|XSuO7Gh^!2t|D?xV|
z+$wIsYoIyPl!)QE(=;>P;YNS{QY3RZHYRwPc?8K{a!pfxdFNnTC6Vqj@=erZ)GTIz
zhnw|sk4zkK2JaNByZz24YBDkLr$BK1-oc7_efCJ%URPH+p4?{|tS68tbM*j67U&-*
zsp?w6RF@z@iY|aJifoUMOsRmtyldSC*+(WUVC-3TMy}?t2*yfH(IIRI0F02Xxfw_n
zfoiPY5S?=$FfK;%=-PvsqT=DPJaN;k^`qyq-lp&cnR})0!r6{FRsU9S<o{d2WrjR(
zB$?Ui_#HX<(M(m1xDeqU&M;pb-rSdE&>g0d6t_~>d-bz5i3+YkrNZq++`5H#7MGM~
z{#mU2@QiHn?!G<1no%z=3(Dpm=eUGtxk-3+W|z9&hP5u~A<wY0BTSvJUiUqy)!b`B
zR_N^b(F>Bc?T|gu=2Z3Gp^Dy#<!kHi;P>!GH1j+sgXHb~R@XZ7l3dM|-@v_VV#4Gx
z-7mY4y1G@vv@$0XU^+rrFXb)g(WT@e(XqNWRMt{IMvq7igGhYnnJxaBg(qQ3=#j^=
z09wtAoQT-gjV9CJlkB|{4|e!^qt|8<pMX`n1SQpV&1hnF)p|tj4|<JOsdn2qH5ftR
zBbpTE&SjiEUvfyb6<T@?-pnnIcOG-VS&q^a{xT+Kmr^HabSox#v7ZnNYDhus6-P!W
z95^xmu%n_%nzO&|dEOpSIkP{0{eK91tEf1jZcPvgF2UVBH~|WRySux)26qU-AwYtJ
z;BJMxJB0>!cXulsrqX}+%-q$tXI|>DR;_dD?ET3W(s*YB@1VQ#l`^X}BmN6;>*M`_
zQmd2jtwnrgTS0$2O|>6ucuMG>_z%`^+#Hz7N-k6YOsD>VlcDhB>Kw?zg8zZRTl{{1
z9Kgqs{JVC(`)YIdJ>j{{Y8#V~YQuVQXbbihR1?upS%B@sBGyPJWjT$*%^{m?G=q)e
zvm(UwrF~cwP4q*Aukh1@;zbj{RMoi+j3<Jjx@W|SPi&V(uRKs3sb0I%ES%niFlczu
zBNc77O}FASS5I^vWo76^`i)e?zJ0Lt^Litmo!S5+CWeH_$m|{&WVY$IE|mW$*qIUz
z?sR8;A=2h}Aj&@KU$ok48(LHPx4BP*M6rfRHU2X~!I)D+k%Hq#Elb=CAyS2I(aSo<
zf9@%ncYjtJ;+WyDgt<RkU{<6;d~VHRQ1+yIoY*OL1nI+1ZF$RSAH~Dj@aXNl*^c6*
zD-S5MpI4=Bal3O|TOFk(sJ@_z^!++)jAxsW!}0`QoagvoE99|8#sTlQKDwvO<Ihs(
z<IJX<)p!q6lLKiZ)8bL|vjf{xA3rn3HSbNe@d=paPft#_uX;QzPDAWTo_M^O7JIKi
z(L%KifkS>=V@gpQvE$`7+=f^Uy8CJ_|MmKEYqtG1nyq|_2zqq+@xLVl$_wxe$+7zt
z#!cF&eyQg16-vB}9DL}69c9v&=`d0!{)yxLeQfDVE{LAl#o5RKdPa&MHrO@-cr?fI
z3ZK{AN9J=iTqVCuaQl0A&Xj6>s%9#QkA@`|c)p(~tkXwxeJH@bn$E^?E`-?YS-B@G
zTFQ!4*Q+I|r+}M>+d$y!xQ#!}X91sm(Dr9Ww2egUnmMhc2ZsUvRmz<N1W@~^ZTC9b
zI-E&WYa@;D(8bRTPHWXjTl!v3`;(gIi1{G@_aQ4TPg%deu*U80z9dfkkUcLDK0c07
zquA|NBOB?vqdSojIVLZ*I3u$9ud`b8mh0zQZaGmI@Rv;qi7oY>pu%)OXwrd<?Sv_o
z6E%&%07eHLL%71Z*NAO5s7Aa}fyCEx<R=p+ywRVPi^JMVm$Kvl9yC-6M>*;?Vahha
zer%4WI*X>8f1|IO<Sj<vu#N^ASswLyv>n#eS{&U#jbpU(c=${4jG2J9b3jVR37*sv
zT03WV%TS>IaM2i>Oj5qZ2+D$En7$UN>sp4CXPc}mzoe&do8``@6w7<VrW_|H2S^XA
zgsY_N3R7dHpQLBSemTzwO$#7_;ZQ4nxj{dR*$}s--)$zLAk4l>@yeTz`6+eySNd^N
zyi7+N-m}O6b>qlVFL&Y<Wu8Zdk;B|fDAPU)eiiokHJ(p<`q%3OhX>BN1~xRhwL14s
zfgVbqE14!m>Y@a?xTrt;R`2zc&lx}R2h#==KW}h$1dY^kKsH&lc6tJgi1AlF4Ilq{
z7>1vOzesXsG0MZqY-cX`^L|SIh-oY^`wXf6NJh}g?&EHkfE43H250-1@GBBk#CR#s
z82O&Ad1<d${1%E%v;B4!97#M86R7gIb?d8-27Rh8COmzlaLR+I%vtfU7wbkJpVgXq
zGe%>zB+G=rM1eSEIyjRjjGCKvoc*M4hR+P-^S(PzkHFh<t1JEJp*XQ6I5B1Lyfs{L
zbA&L_USisq_Excfwlrs@L;U(F@Sv;ibU$6h-p5~3)u(L|X1&Pxe=Yv_2L!;FHMz`M
zuV<VKWAqY`ppYy`w#Hy%a?PoL69K3J#-9ola?`;p_tTMNcs;zXl}|VM6taC5&Jy$r
zT7I&Cezxi7ka9n-8C#H388=aY2+Tb-C=Vj45jGb4QI09sWCux|uPRTBZHEJA2llJ#
zv{Dk=qwaiC)DSG*rqi3*hhp#XJgNICTQd|%(6_1WRX17}4V1GdYQ|jYz_u=okfx^g
zy1Q&n1a}JDh%cqDZm--MmFJTrxyq^hX_cQPyojIY1~i4ct#RoEjHg>u(@9Z*+n(Ws
z{l;^4Ml%B83VHCJot5!Cd+WYj`Oq_H-x%*Fo3fo9rLP7cR4)EqiMp>N#-#4rlJdnP
zt8TdJ5ZC=X;{6^nJ<c&ylG%S%GgP8;^@YB#j!1U{49=TgEYv+|DvaE;uaJ^2Zzgc%
zfA?Vp6Uk?_kIO1_&N^F>c+y6iw}Zjywk-_l*!a__xA)qW=@XHCiB(h214Zp^nNeNb
z6B~PHOMX)hpFJbYYxw7_2NV4o-0_k}tdja8$Ti&~#ZD9G$%g$ebE%pNS`+GuKImyb
zZw?XK`h%u*dSpK-@f#bCG5g&^w-JMy&V}?_xh3sz=#7axtRI5gr+o#I^8vG#2Aw6m
zR79zNwwr~s*Jm4*0^g1QLlw9>7Mme>)pAGDfhucYJL|WEmwGA`+MEq-vW@24BH6WQ
z2#ug4tsrTE;2F)@S(H;gO~*i)WNd@bo`qMykC|5&b8<zJd+(7ygPel`y1Z}0X|@xF
z8O}~wo`2f+KBT(FD14FjguH70@u)@C#5E@shNj^pCYtNyvy}~}HMLetd0ed(Knk0_
z-ZodK>-_DrKF_Jkc?!VBeJiKN@&^Cl*HFZ;4z}7BIM%v}Ij%@0F7a|_mCCWJ#clx9
zfZ`@gg9q`>xD#a#!DthPJRP*oO!UrG)Xr6ui6xZ<tz!k#+-2j;#$?rhYHdZg+mp5F
z60?`WI*wc3gZB&TJ}W2m*S$!_03wsvuqx9i4LEh1trFO?s>X0xby+jI6dx2L4=Y0Y
zXHTx7C%Ci(c(PobH%mAZNw8DCs5ZtM<M6IiS`?X2@4oR%A4e?OBg9UAOkMO^IK@0d
z8OYLQKmVICMUSu8T<y9)7AtS;X!NVbb&43bg~CN(rvHW;iNm<J*#GQi8{T-&KBFd&
z>ic=Pp-D>!<W0tsv+dyj88&B;Anha5_9w>R7;%=KnC#7x?)Ou;YEg}I_N#NQXh4RH
z=+N2lu&zB0Y6%scS$U0lW-@=iU-5-(h;7>FbMPnU`VmQi)jE*>o27dJYtCiS{Wv|&
zO<3ib$}#iPyp+e~e0|kZhs%_5)nqb;)CURFl<Wh)2H1boMgDE(L5|M0!^b2R8r0Rb
zo3>4cRBBZ7o@5fTmD!+n4&LT+`I^t4gs~3ydiP_8EDp+y37OPxf7^E-KU8(d7cW1&
z?Ylugz?rTw^ij0Yt+K9C#BzrWM3SOLzly&32-Zsm^7y6X7=HLHAZ4~}6w=a$aq4SD
z>e2Ed3|@z6tuSBP(85|Vql>W|{hgYcDhr>Q%HhyxQN+&4Sufl7*Mi<f!G+f|$F?LF
zU?JDp(UgRv)Fb#_`Mg*E+?2)d#kHIud3NkG|2)osv$C?4OWwq`G>)$O4N>O@qEYFu
z`{cTp%hPe~i}lX4py$2@6c#|w4W)HG0eRhcj!BHtwOsv#K<FUVax-<qjTd{NJjNRn
z)kmQafTG{Z`@ZEtl)3+ePh@qhDX}kZm}}R_O4CIrf6zQ25XqZ4WTRI#Q2y{J9nEci
zrnjf#Ag8JEPf|zFei%JlPeMmm##_&Q@j^f!A}qg-=y$Ef%0s^^exTFWL&d>hY`Nt9
zHmI$xjP!;j3UgA$TEs0l|8NwHz!*Yo^f3oNA@&DZE9i~WQNO#pbQcp@imyvl%$IY!
z4kohr;vb<qt3aoD`J<Jum!?n;-!_8$(Tsk8KL~9}=2Oid$FA*9O}4&I#dp)gw-+76
zKgq>t#lyT~G)IxqxmGy6;jJYl6KoQHFiMz!kr-l(AzUM6Gh*84E=!UA?I`NarlPpW
zcRo964B4~36^u*#cVnPStp++r!`=nRJ#Yw_@DqXvG|uPPFXP-#$0%;zv|GJw$Z95X
zR%j5eWL2qOUD%5>Hj)3fYnD^MBH{Xps$Nhik6N&`jAGCCD0J{T`o1=re0MK?Z?DO+
zR^6nIUI*kUVdO!womYPRz5P0={MtrRQs4HdZ+kk0mX>WqE^BW$fSlxsop#?lV*%c)
zYegwn`IYJ%7neLiJ1a?(w1i<vC8M$0e_G0Cj>Bhf33xnyMToDq3dZd>U?sV4FRwS&
zdNY?am9{*hZ8=r7ToU)0N*;+G#Krv>6J3c%!!|Znsmzj|!9~wu9c1C+Cvt;ZwwFo7
zucW3N6mq8b{j@^ek6rgnwsGYC6XQgJW|mcn0JBPqcAjg8?%g)>?wjGmp7oJt=J#9A
z#A<A^VE&zu6eZ*;$GBmA65<-F0c*|B9Y*UZ2W+W2j*g`y!8HZ*xUg|5@v%p<brRAZ
z0rN9Z93HX2Y14@<E2v~1ikutDVkr=4tnL~9208eX?qp!Ty?et!PxP5GEK}pJ-Lo1g
zW5?<nb!xYjS7UN1_RF=FM=ZcsdKhZ-EZ>J3*T=qwy;Sr~E$hfBtDVl{faeI(<ktZG
z=zx}d48+>|dTfZYe-GaBxJd12^EzK`xcGXq)-@}@cMCpFz#xIi%?qbbl%keG`o7mD
z-PpGhL0);r=uSm}Vct)f+#QthX3fgelGsfJFna(-j1*#i&~o^?*-fZw0)mI-#OnM2
z0)t<lx1_y}kLRgLtSJrV=`K3`-d~@MxfS1B;KSF~?OF)<eFRy*QtB+iHHM8N(68S}
z!?9Z9pJp{bk2hTe8qvYek2Re0AEmWAa4ni53--GS^_s7j<lv?ye$+T`Zw#CRguXIM
zOb+xrdIg2PEOc+S$v?*tNe6wF%es;BsTgs1-FjW&ao*?%xO>=2(A7tR?pB8m!f(g-
z2MjZ=U1Qrj`FFX@Th(3|gl^2Y5>IjzIB#?YUA=Z%>URrcb~J1b-IE99yQ2PWdm|q|
z=e5i3lpFi#tGA~QyOAl!aJf5(S1%ZF_x5URkNKM9^?H#_BHWwEEYTd|Y|QdH`8&cn
z=)H73!2jN1u&57EIx77vMt-53ebdW<X+OrO%zWfM|1Pin;I#Q#XP<IonI0+H^<;<l
z1If^lhQG6V=keQiMnuzv(5>)VyFbqYd9w-SA&=lbRqwrHV2OYhO!HyST-M)hv?Po}
zCKZ8nvs-;J*>$4Y_Tty2^n2v4d+=D9b^I|sn;7o|eer2lP_eP9&V3h_PEF5?<4bxR
ze>ZS$M+m>RbbedYPJsiBuO3cdi_c?TjmTUm9kB3Y@-Vv01vJ;14}7_bg<dY}FhFm6
z%(_A5yTJG7(3xgU_8gSBqmeRHia#HZ?^5G?v$fpIF%Y7uBKVoom8ktfQRdB<csIPu
zvwMx6`a<k8hpDTX-VRhZnxm@XgLWFzdUA9bzS-VBu%z8M*b87o@=L-A0(2i_xE)d-
zY(^aEYVT<xSR}7lYU+>318@(j%1RdLs@iF)+Vxez-U$}kMLRDv8&zt36GhT@yL1`p
zKLaiN-^Q+V*Al0}cn8J|WE&ix{DK1i{wS|+O_B|ZQcsv^l8o!ZF!Gsm+{X>!#@A_!
z!&G+ct7jA4_!Hi$9@Va0?%O4^=ahO}K{UrSGsns-O}ZSn^!10p8I`p`1n*OZ=4N2m
zX2sDjdEoXjz7>ws@aPggdF_~7`!{L3BGY5SMJf2osJLt~dPVxgqOF=SnFhUNjycAB
zMonq$(zwbG6{&J8YQc=`j1ycB$~b{&6?(;h)`3M6r1Hf#u4*%4)vOEB3)T-FshW?E
z(!zHEFh1|i4PRtPu^hx?$JVni3;?rrpL;UkWdUn16$=~hSr&fp54#x}ZkMRaMP75~
z{KAYW!Kj9%JZjL{P@`YdUSn7%gvTz+I%CyrV82k<Eq9_x2j=hG2w!ily<&4>p?(vN
z!h4!Ke^W%b^VckZx8pM7>ajhqz`W>(X9Dnk-Tc8`Z59$th-4gU=68R-=Cx6|;VzJ8
z+T|{F^4or+>*+)=K1BSYv(3|dKAIYu);N9NVODM<C%p|+<nG)%-B=+wvHtP>K*+#Z
z7~I7dv~8w!hF-R+*nP+MML+mtM$7Z`==Ex6GG2Sac*J3moa1iyN8*N%YDUK;cx|&T
z!hV7DF122g-aJHW-)b~LeT6)PxD49o{e0{O!Rvr+{X)R0&hrW01+0}`8=!mQJ1*#d
zWBRbyS*2X4C`iCx{Q4I~5_4r`fh{Y0(c^Rbo5<63V`hMJc%U{^@F0<a;~8^$-3G+u
z>?=ppJ0iZj>2j?U(5XHeSwav-M}L!gT#>msH+)|szJ`<DE+UD}_HDl0>{|#r%r)u?
zxW8H(y(#98wmS95YSt8X3t=$N7wrMur}ZUvb<STOR^;V_wS9ya-ys`!S8*d=V>$tU
zml@<XO49Ee5>G|m2C@=A8oj?zUOa6Gp0o)DYzalcToOYInXY_EasDL4!M-_e&qls#
z*uJl0vjo`G$18N499eb{vbF9ncZ<;@4|peAZBz6)OXsOF640wTHL;l4`pzwwV)UMZ
zcl}<~9gVi{yknfRNY%#^|5UI@am)@h$!Ab)P{J1$?>3&;ud=NDJwt%vowW2j)ED0$
z(r7h+ZFo>tHxIhXNxvto$^m5mln*w|+?pO$<<K@auN;tuy!GRe_#@WgAdOGtFdxZP
zD9C@0hFjpiUe`8VU#HYY$KYNo)&d=`ft=Sslw{2VCMM+(i-VC7r<5cCCe}bBy(eb+
z`zWq+-R6Q7+J{`X!=0Q+zd}oTi)7<briI}>gb|dFzm@bpRh|AEB_CnT8j-&kM!v_z
zWtK(BW~#}&0CG>r@(!wcHRP|$d4+)9=Ivofv=I2lue@w;(MrIw49E=QNvv@S!c?RS
z=k#r6+<OUMZJ7c_k$T@c7H9O?@wM|-@bmcgso7X08Y)Gy7bBM%u$%T7Y^6}@4ilvO
zV^lYx5jHAJb5H2{*)kw~LNy|u7HU%<_KOO=`cG-IrT%7|#2X@mfS(+(9~`iWbP<-h
zN@URBmh1JB<j@Xhg{~4+h;Qmzu8l4!31n(=HI8F%@%#Q~!rohIL^?m6LJS3tp2pF`
zj)3C(oG(t9-85iX@bqSiUnYx@8<h#q4U)>miD1_!koBj*x56uu5yry2eEeh4NCu(+
z<*cBs9yWAl($-}Y7{*3b-nfnJwh<7f)x#iyJ|}mNaIDCYJaFR02XpmuWxY=wOYs+C
zDA5?B*VWO%$er>2T_w#S3ub2V+RF@hA$u=I-60e5zF`kyP|FuhOr(18T~~Y3y)NJ*
z5QGCi5D>iV{mP*pU%BrNBJ}sZ-(86~;PdrrS`}Ih>^f=Feier$hYx&4GVb!>=MtEF
ze|c`K>=a~a`uJ_(o%h9b6Sly%+d9N(;<CHVE1Pzr?VcRL2$G85RZc3_4le3%JG^t-
zVgEkAd5K>Hp0@co8;@25q@3Riyj{JjyklHCRBb>7A^J8d)5pU2JmYygZf-|FpmaBF
z(9fn<*w?-g=kvABp!PFx<?r?Ul&+Hiu$8wrl>hbnV7uS@R>*cD`HP|`nB0e-m-q7O
zwJe>dOVD!*TsgmPF8J};s55LGw6fucf3e>6&U?E*)p4O@@WJT)EX43*rEtLO7G#O*
zn-}aw#729&=iPayTNAi(?Zo$?uPO`M7w9D{5a?go;kD4B-^RB7CFlTj5*%o9wV(_J
zpH**H1PE>31<^we_HpImo&i9k(_U2X0L-!ME9G`2Kv`PVWIng^0Lu}X|AMzHBCTA<
z)j!MCIvdp6wQAZJeympBgnPfN?2a4_o*p%wCbP9r){xLP(6N@2@N29OaD8(0Sy~wx
zq5M*^7@j<YuxBYeGLkhaZ#=@t$Fxh#$jCEP1|BI>8ZH|j0>%yPN{@_Grr-!OLEA57
z9mED;Qnj3H-*<~%4{<+;Dy>WU%n|wQ;rYxRMPGLmCjK58LD$j>q)!n{O6mHY9K@EA
z2?QEyYqbk-o8=b2xs$rb!UMD7%MVKDT-Y0!?PB?qD=UqAJu@hhtO)U?T3FE0p9TcC
znkC<KE22?OkMM2f^@oX-u^Y)jXG;+)b@)wgAK%JgL%F4++>})J4rXuk9;d9`U+?u>
zD!e?>@js;+CVdW26`ctl)^wx=X(K006oru~Ag*GYG%Y0w8;fL$_Hpn0^vKatzie?(
zEPSE|73sa|mXyYpYLVu*BYjgV6%`Lugofsnl>R{Ob$JksyMlOg{qwJGPPj;p|Gr22
z)9xaCV0%qN5k-^9Y4djYoOF==$-9>!aq%#H9I5_K9+&g0i}0YMf_338ux9csqBo2A
zAFbg!rH$7+GKW6pxUn<?3^R$|+E=_+Nf6lOaxNBEjrmfjX1nCm!JETO{l^XCWeqGU
zvJjCR!bTqy<rl38hCk%s-IGL3OhmQG+VqjaUvU2wD&v5_O?zk0_ZN^wRzU>*!UC6p
zm#-_r6_>ux=WCl2mG3uA?_kIG=li~pP4V!zx@Gj{Ch~TC@5W%S_e`djj&Ixs-80|W
z8r}`x`7Q5O--RD<0l5=s-W=4=t4|xRw?Bm+N;W!454DZp{liB<#`|l<&S)ky8`tj!
z5U_sJbj7CPpo*C;O%1FW@};%&h!z8&*8Unc=r?1FU|x|cdcxxH38!wHC)D2ybGqbQ
zKDKDun0u8l@z(x2o17C#_Fg@n^ApT28=*0c$zrRF>OAq&h%vImfbZPJa*slz7hbQC
zG0YxzAJ^HUaKh4(&7u|sH<^hMI6n+*98RK-b*lP#!NS&|s`p{8Ho0SHJP?Cu>V)87
zQTLjc@vT*%Q&y`*+{mY1>`l@3eB`>^(se0TZiz|vaWwk6Y0t8XafA(4S<SGm$mZpk
zebC2DAq2iiH_~>0D_v)nkFF}ZQeU)=xxnXu0~?DwT1>&JrNyBheZ~2Yznc9iT;L<E
z)+_BmJz%*UWp?SHlyiKBNdKtz=5Nixmzsl6A!!c>uRm!Ou3YK+*4jiThU`Mj=5|g~
zS-p8Td)Tc^^y?*QUkfWQpLTBnY;|`<-zDMOK?*Nix5eAsVbURTi@-UY-)O7;XY|GJ
zSHsPv^EsOK)xZXwIieqSEM&UM{R)`&y@RALJ|-Z*G-|^F!ifn6V*O2hR?7QDg3aNe
zv-0@3`&Jnh25;wJ^Bz9=i)Sj~r7;CR)@;pbWGq`U6ZP0i@iR(~I11uZLQCdI!-nkp
z-P#Pc10iBRLHT5{L*L`ZM#EWz<55vR2Vy9N?L@xl-trL4f508Xf56>4F9;rCT$u7d
z5euK8(dI}CSArCME;0;xiQUd)(#Rpl%$yys_6yVE>YT&6UF8!N_B4*QK`eIBa)iLz
zpjB1onUHnU4)oSqFlI^sEvb;GV<$BJ_wOsc;>-DBD?7dXYE*o+g=g3amC4G1@Opqp
z_Mrnkz_(}~+`@_7!jBf$;<Z5B>yf!yAX+W3YEN@h%O3Z-!?KV^E;<`GrJbS7o7=S4
zOSQ(!5SGkW{#@x#v$R%2QLSCP!o04~)>of565YpjIo+!A7a!fFvh8VddAXo+hA!&F
zixh3=PfW{)&I01)dTjk%S6{~*TwxP66=xEre#n=g@09kW9v@v1?e&D$2{<e)`<$^S
zl1#<$7bY)L{cRl@Z5bMM+_5y?EUZV)8@Gecz~DdUVPCS#Z5RqxzW|Zp55&mNUNKgC
zGQ`KMXOQ_(2)b{CKFk#AI?^tYx&%Luaql0MO?<Xs+f1;^N!D~w$s{^l5L$bQHy78;
zWdvwSwlTO1>cQ1J@HXfXxe&R!$Hw6qfWZIa){vW5KoK-<FoC&&+y0~RjC|MlW*ITR
zTnH)>VkokqaI5J-taX>Z1>nKLx?Cjrc-398g}v9``*l|)3(-48Vy5}A%Z2$+`SEId
zMAnE3$846M)@M5-WFe?#Znf(AtW`$vGfb|P_Qtj6ZbXzAMB*Xg{VIh6p@-c+K0rQ$
zZ{Xmy9N2@1-{Tk?IU@C7iU{MKzDwv+OQEgCDCREeoZ>p1Gom{ek_BYJR*n<u@B9FQ
zEm>}>m#oc$y5}Dw{kq|*Hsy_a9J53n*CBrh%9QW4XQrl^zqSmorsL{|;>r)lU4|FB
z^#Il8IE>cn8a1MBEvFUbw|=_Aj=GPSx_cwhBZaj<Zro&I2nn>%OlP!smX|-r!53y@
z4Nx_Ba=k7<aFJaQgy~e2u}#rtNzr!tIXW@Q_)&Z4V02gCqE`I#(o*#Gb77${PD(o?
z<6}+zZC3mBSIfC^*_IQ*`eIuk_jUD{gBWb0kvR5HX{)8h&9KD+jGPWUHT7?8Doh@~
zbY{=SC6lxEwZG<7za~Tjy83(rrEl9m9<`9MSFbrbTqn19Cs%xJWNMpE(ZZ05j_zx<
z#6lgMdEBFlJz8GXH5)*cuaK-PvN!mvMU1##eTl}UKn=GhBLWbK&C6j6L0-ZMJj16a
zE`ix0z|h1EGb__lhtg`*G}o|mvAg4XamSTNt^^zC)V$i7fWY|IofRYL@nRHQ(~W{h
z?<oAQ@1Mo1{Ja#t;sYr#bmICRl36x7G}o`PA1`k;)c*j8ocT-#1^1>AIUm5=21umA
z1R(bDrCWr9z)pMp4D(S9(H}%(H!QEfvnlefvc`QAGWg)lLFcX;aMfuaJmmWSUy2SS
zRUnMx6Z}U$AO@Sk;_9Q(ED+&z<k{Hh2dLCc;nyyXK4w^k-?n%@z-v3iqErsx>h6si
z?>jWC%pX-(thgXt)QtzSR0bcc!LYT$elWa5cS1qFK#e_&PVfXtd(ujJ6b~AVE4KqU
zUOjc!VV4T<lPxcVGlSU~5PsfiC%x;a`gi3$G?%+KC^Q;qwZJo5m#s3Ft!k;dlo#xp
zx?I)eZ6Ab5PSD|lLH&kE$j^<<525X@VG5l}MlI4>E%HW>9+Hoxy-0)dbmx%q+9@eQ
zEUb^Y%@2j`*Lm&NCGD<WPSbYs`x-*6sUgl53HG+9jL}wb!#SZg+`kU9q>~C%)wgHq
z!;ye54aGjkEMGYc_DyOB#@#b3hWUu|xf@%{PV0a3B3rlAo^%j^f|JS-^SCfien)YT
z#qTHQ$ha2h;mQ>f2^PT@>&c7EW2-cH)9Cnyt7Q-Z8BEo|5n?6tC7*DK8Kx*eT4<jd
zl}Yo>fkI4xq1ri!)5~iSGEzcB$^lUd1gg!R<$YS6YrkmX276`9-KCHwQo#xvq~Vow
zzz27ubO7&HU+&KByZ%Oyx8dzt0|En%j)s8yLaWRC&in0QC<pVgG4&?EZwKFfH5=dF
zL=irErL=tgm5-6%kZ+aM{`?G7{zczb>o|vrXg2x1k^IdUm%My&vpbkG4?-*9t!N;h
z=oxJPv;hdj#b*H6KHz=GBSOohiVi<sfc$!tbI^cJ2}sWj+NnqDBD%t*Z?1LI&fuqJ
zR=Z`~yr08b+>&3G=cUle?!q?7<T1%tG6KUF{Z*LpXL-KwRIRj_YtuvLe@e3YOPESI
z1i!dw4-6WoXZY9A)K#@_=9XXjSUwW_>_L^R?1t1vd*LRM|31iMByVcW^VgM}v(ugP
z_1Rmf9WmU)tpI`Iqmi@m@C36BUbyI=f$<Y(fB!yfCQDmf!_|(w{*=(yHgYL#zMSgc
z#oo!&PWiE+t{Pa;zMHBrPg^CxTD7ij)cFNqQwnX)im+0kR8l-+#~|=Ux9o?7jzo3V
zH?Oflgu=vaEC$_QKZdciBq@sL;}>?vvbRC$+ry66W($60+D{zO-%DCd`yUAWRXz`J
z5Igdcjj@RSvar$Mma4$3&_appE=I`0L(Y7Aw5_y3f%8bO{fQ<~IxUj)8!b=HLjm_I
zHnWAgH>Cd^3!*5gw9XydKs4Y9hz8vCM_Rw`M~%6ZEsbN~by**ZR6_2(BWJ)cV!us0
zdx@*`LPc9ZQ{_9=LZxBX^J`o11jwSVDqHv+(v%RCF*>H?K$I%c4}`h+7_915`2`HQ
zc)=Cn`QK;;k+ZRe?#(-%8x_PO__;$3_6ttJ4{vn}#15%gmBC`00z`V*FJaoZUm$-0
zScLIN2%sSN^9$-9tmy3if24<A03}AU%~uovMxniW1&E56%ckxONwIQ~=p&RtEPvxX
zocc~Q&~uNasZP-3!ee>(J|odMCNYSK_bJQm!{wKg?S*69<#YTgQj95<sCMSq^Qfqn
zGz>p(+H*atm%GykVxOo5dYTOeg$~W%0ZnGT*gnG_lWT(+A9D=Aop}$sx^H_4FPVjf
zqoYjPBaA#Fj9x>GUdhQGxVS=}nBM}`uI}MlIx6=E^QkX}Eg)(milrv;o~GaKwV>r5
zWbSwnbK0%Dn%HPTq$Mqq{0RL8@F(m7Ns=~cN%=ar?aM;t07}b{6<$%4Xi2e}-S7`P
zEPbWf5{g4S>>u>l%=8!}H<9bQ{W)A}-pF6*f)g;Lm449DgP?wHn?+$Fd3R})yWx$r
zLltr(6&i)pjHnLT;dnDZ(<}%Dt5t+#=%MW{h~&a6<m{k}#DkZrMCr*Gc#PG{MO-V8
zaU3^y6U~TWU!wR>YsvnU{iqDTHzSsX<OuDXt*Lbb^Y#&&u^PW@h7_rc9_<KMN%L>Q
zf^u-O`;qlr+@W1RzV+=!D0SSPk)K6?rF~ksrAP&lUtrCL!V_8zdEPdoDp`{3FuLuf
z%?ZS&f;w?3`BwNWkJm49Vj^09hn{R<cweMicfPu39UG(kp98}J10c-!xy6jS6w>a0
zyjC-31hIz<V(}~Iv9(XaE5Q=;d`Mcl{A7*yLOX{Di~#8kH}rMuvyKTE>XOA5eL>nY
zA<VTm%r(*J(Ogw+Dzi$d0i&3xwyd9DIXSkp<a*D3^y{}o@eI<gvC4HA{tlG?{a)ce
zeSbYo&dBt{G-|A!B*etjVx(7FVbDlqhrgyrxnZd0-&B40sk{H`qyO1N>yiNjqrj)C
zb;hz~#;RqSvKL@`d0F$WrOQ#-^zeqZ0-t)?jiT!KbV33e?lnuHq%nR`1zVh9;%SGB
zLRN1#*VL4vhC4MO?4(F97e>vUgaawGwsiNxHqxB8D{h=xRN+YV4`kGQlD<$Vx_V?B
z$#A-1)lfN{M&z(^Dc~G~o@g#Iw+YOuMh=612%mT^Ct9F!jVPS`PcwCe?hy2DJ8m0v
z!*3+&X#U)j`9Mu6%@|V<;CpxUS(WwS<5;8mpmO8dqiPHLc6+BzF6_&eaGdVcQD@i7
z-|Xx2r4ap0{P70&)#m#L(2DS~?%A_u4Lr?c^{Xg>P$FPGxbi&6we0M6YQ}J*lkDMw
z$ifto;L$VwkyCbdYUqEt-#_?&8h>VNfNE770ZE))`Y9>(3b&qFzfF68#0H^IB69y&
z{Kk1$-Loji`k8f$J@?u9o1~BlUB7Hjun~o4mUT|ilp8Dbf#CNQ|6aZT>eko7l#u+&
zP$^@y_!hd@4ot!zYPvTmv6r#k2Vz?!o;ob&ABwFUUyh_)rW>Yr%PegdM(UhL2Lyo(
zZ@J~$0jAei)9r<yABlA5q;&VRadGMC@P#rA9xSdyBUE#nSWs86sg$)B91=AH;K+VZ
zY^Z20>#89-Eoo`I)aIRf7M@y#IdmC#0^1#IC5ICdb{|1xGdF8i%fu`en?=);ia74r
zNNX}u+zBeN5*o13NZ++XMCNy9k84J5G?R0ny4NR&Zt0`oed>v95*s#D95y>lQc7IW
zf7g}H1A`ADzUQHRup@$tnH3`BDYSn^f<W6+H8cSvy$ZZ9@a~R``N00XB}o3Bf!t!(
zc*MsbT|fYV|Le<9VsTIsy|QsT*#n!N%DZd$#_OfQBTo>$a+ZMK-BX9y%qzY#So{A2
zrNe;mXxI3NRAEW!mqSGX-zpVxSCeAPwGMui-t;a!VcNY!ad#hvlwOI=eNo@nIdW>K
z7q-~(T^+wks#vf!slSKev2?q&bphLZAn{(1&F<44T_T-arx>CCXvHE4(8O|MVcu`$
z+SgO~d)ItuFUzr@W?p68Z#WUv^(*^pfJ1NWRTLEDF>Wx+bfl*ESg$r)WB2LHzu=9~
zvn6X*q-Z*om%IQA9tL)MixcSrQ-1qS^gp#0`}s*eLi@}C2)*ZfhPM+UBtdNQ$X#ro
ze2uigneEs5K6|OtQ3#{R`<hA2pR(HR9QIvH?_KFf$9(hlAa4(DO+<_bLzUvEaoHg3
zx4?=m?Lf3=TNwY(*=T8I&fJq#qLOxU3-EfJGG(F+m8$h|W<tpb-}f9Ql^nYxQ122M
zne`j4%V8z2h<Hn(Gl>coMMmKT>cna&85<<)gaS!40>i!r{?qbqg0TOQB3Nq)$Q_{m
zmHGCMFBzNsM?i75#i{5mnKS=|=IzdTxI7t4(7=~qmkH5Kh_z2*s;>GppUt7|I!ZW6
zn&p{2n)H@Q>fME`_FPv7UJEJ)ZTUeh2%RiSZwH1jtj+KSw}?(R=qI;{;0I~&2g$oo
z31hU_Rw7IvTE=TRgWcqUlCn~$sfFon=K{KQ8QIq41b_Z7Ej%18Y(j->LU&GP%T0vS
z<5$~ow5;lku6U!P+7NABGwCAR;9;!*X=88K-~PmJV))+5b9@SzRyAV5A1zm@$ogig
zHarTk<Mu#o7JJGT$pP0Rjd|sFJ3II?4*0F9<<(QVmX6i)^R8tLb6RNUFj&B>P&*ob
zu)UoeC|vw|;F)%`qUlnOSfjG0Z5P-c83Yew1p5iFNy)ouJ9q5TJtH;|B?+U9f`=+L
zfvWWFgt7}<DvV=?qRH4e5vT}vYaiVTp_y_lIyJEr|9|H_q3s|(HC?44&5cn#_TdzV
z1c-#?sHmesty-}TkK)v`A5(!OwGf(f@{;Pd)-b<_qOE@%XzA3l(Yu9cvt*#W+??Hb
z$9uLJFg{fb8m^lAvI%3e^qtjPZaJW@?X@5UwotHVnkg4k5ED~S?P%|CC~I+u$pzwq
z>^Mo#t|!plh10L1#&==<{z}dKW~H+_7Wt6Q;lh((R=H2){71o_VOtB|PcczhPfNF^
zsGz`aI`rbY_CmjPjmxu@6f>X!Sld>A+J+=KF@WFsN9D!LbvULrA?5n|AUQeS;u@BA
zhsP?6wOT#fw5)E#z`3GyoYA}^8E-%R2kJa9u^9X3-A`j!esSDrv|_C)6^9%*jS=ok
z$ljVy$K!#ei-9l|dNJx{eXz=rKm_P)62=(V*EF#jZYXj#sS4<d`ESr~$hBl44kD#<
zA%=N!74V+`HeLWrTw;wOux?E$P$QNQj;RszpGf)U{9l!#e`xOj<)2yb26#jBs|j-!
zrLe0Wf+qn+MP?#@6AvNH|6mdFrF9%z6FagLePG_3s%({^ZWTmKDsfVN*O;bz%26k1
zapXOV#caWE35!=7>{s*Usgd_N8{sQb^CsTxKH>B^_WTk4IxfaKDUQn*iDhi64(6y+
zq?i^WvLH@@x8F49zA`UklLafL!%cmOzJ*9l`DV@o0|v?oMzUzFf1DZwQve=Rb)GO)
zz{&PfE;~=v^Yf_3`+<X?1G2Zt&kt>zL;Q(@YY++HOU>?JO`>relfO{Sp^xg+P4qQF
z?FdTkNEO6(ri+KD^4u#1?FJD|-6Hj~z3%xfk8~(EV`(oS;VAZk-ttetIgzd+6$joD
zRK;L3%vy($*g2t=Mm~tLCt48~Sx!%R(lf43^Wk>a+a{>V_!Ho#GIqTltXhMTVj<pg
z92$<@Pp2{%sY0_5X5wZxVwz12jAXquNN%`+0O;{|#eakwJ>%a!{BQYKq(+t!6fO!d
zqx@PzN79NEpD88+_(O35%iciwuuS2f%u_T?x^SA?vMg(zpS-T+R<~vacpf|ZsLxAU
z=P77=f)0*e_Q|Zd7dkjxIo?H?tA#Ui|Jb^VyPR9?5Qv%bO6><j<=0)YwCxnyzXmmM
zS+G7d+csU_Ha*Kfoy4y?>}7`KhrQ!mC}li~=%84)h$o(zDqcxCQIW*}B&G+BbEl@_
z__ET!Hg@fX2kCfu9$#IVv*G`K<1M|7a0z1@RPqJX9D;UxQ*d!JYezC`ffcnQiiKe(
z?YH}cm-vUS`{~izY3UB^06k~3Y9(zqT3lhc_;QGzDv}QW$St`?gt)r^p~ib3T8khI
zDkiv}1ak?B^v`4t)U;jnxVlXYj|MFIgUqk)MW`okm73sWdng+y?&?sq!uf9+WzxVo
z(Za7L4Qahq!9TSAG%%KgDz=pH0p*B=&P_f*;(Nw>`ag<G!b^?(Ka4S$e<1e}29^o%
zrz<un#0&)%mzd~QNNyB<PG=5VRdK&0{HuWnL9U!w33|V_pQ)X|B8s60&k~Wpqf_hX
zU%RT*GibL#>fhso6>G}N-WiQ|0*)xU00bL#fOW~wF{b)H{_;`!_7!d4B{r-adWL;p
zo9&9~{uRhs|0?yOR)-Slf?ro?!Orxj7b@l9IJa`uv5xK&3flh5tKle=4=`2{)G7n$
z>kwPiiXI0re?H9My7W$30N1p1B+3O57~cv6ttKKR8sYqIXJz#<pcH1Vg7mH|>romD
ze{wD?n-{2gav+_DlprP3g%gLahB-VjcRmR)Iw8|6;J_=2vS>`f`|_wHQWDDy`F;jw
z!F+Sd$)lKz#ZjOpT$2ECO|i#npt@tvNI+6?;PNWkt$laNrG1XsbH8#l+R`_%@6l+5
zDh|k_04bMB28LOUAT@_gMTlVvxA5=K%OTN5_#@<mUp62$L?&6nL7i@caRLA84LXP|
zCb9yA&EK;+o;}Y6JzjRx7veYCeQx*1`kI`{yZqkWO)i&4Q@qBTNQ7&>E}~u$lprdm
z`+KLjpC|cx+rdz0NB7G^@N4(>a0o^5M>1Z&!_AgH1buXJzM$R9$NY#1a(@4-#jVC2
zX|_yW&!gQbuzI&QDoH%Klc4|RYEJ+Q0yuM{tLkjB2izCIO1c<yw7EW>kKm_7(&2kN
znHfXx+>m);E4Z=dT6wctI(jf+&^7CNqc(arj^fqE>c8N6`z+pOM6!JMayU*taT@4n
zdVg}mZ)CjsczS)bo-Ww*RJn255m<Jwcd<qsaPI_Te$kP>ma?LpA>ezu_-hABT2zUI
ze}3KbN@=5_v#rT_qXlW&E5GR@iSufw=PS6OjHk+=%LDfh)Xp5SV2U3fKi>+ghk=c~
z@W#3iCe)w$3}Ls*J9laAl{x#h1!tqPmgRu`zem&&=;U8e^Zru)6ptqP0PRE~0A(TE
zog0FnudfIB3Z*RGnxKt0*zR}e(`Q0IQE>3-YkyV;<V*#s$-UPDp24SU9rue@i5(k4
z&9iH;FH6)2AIagN-w1f2E*=lB5(ncl1zdL@eo+silMDGC4o&q9ehW)19?$qP<9fat
zHb38pa=>QTzPRprq_%RDNPmC2j#iETz~tAHjc{oX9mMW;Pr4fP_5JO2^ST(y`F!YC
z{-6>`m-o>$WUxEWlhb<p0?OCYvYYOnkhb81C0HR`cE&6T%*!S4nP7F$d!-?Na7xZg
zY#{W11J<f|&rLXCR3QpmHmnnsRWLAiKwBCE*cZu-W#$3Zxg5g<l5}gxzv96wYExvn
z{}$%pX+oKvJc?vrVu*v|Xk<<5pA<dDT{1>pu*O+G!{5F_zx~-_$@jaNb13bdBu$7C
z8Ub~}g;c?6a?!e`PGd<@TMZ;&?l=!h8!Dr>;F#CZe`6O6(@CGGWSuM-$DR9d!g3GT
zI5+PaoH5PLztZ+ey{E_R`b&K8eY$ut$^_475wf=jDWkfn1;XMc>&wY&;}@{FPi5rG
zX0lq1abs0sA*HBXjY(*bl5U_XAP)KF=?M}pL5YaYbE=>zC}88RA&Q9eOmk46x>I9A
z%}5|<b%W^m8dJk<i*|~j*e}(O9!fO~IFV)~M4-7CC5RWPp7f&?ZI^QJR3~dcl`Z0g
zIe6Fs8-R=r(E&>$pdu)sO&`^X!lPR-{Q^9(q$vnY|9{8Kzp0$o-;CD@`WZ|#EV#U}
zCE$Wp#J_p<%ZWWXowfMfq<5}oek3FDf7l(mXNzy}s{9dKZ5k&PscK`0DpgV>Cr-hD
z_@TO2m6S!IG<s5olv(a$Jb==q{F9C!W6v)oS97(FMJ{sIvG@tZ`Q6YcxGlbR8CcO!
zA>rw7<aB1uQz~&EaPc#u$<Yaw`Xv*t)JQ(3@zQ06WEPA9Kbwz(7ns0qBkmqD9`&+c
zxkj!&Ga-2ZquevoHaXcqel6*T_UPLb*e-uUnseftkD{B8LYi^E*~ss+R7E?d>CUsu
z&-0e~FT*_k0L{(dYYY?7e+X-ds&9rN)9<&8S!8Ab=*RTkdAO99G1_Hm8gh2znZnDw
z)?cUXo9U{X%JvmRX~HD}kq1U^uH`xF=;&xI<?^v$sLftzei`LXtz)_bnsRhf{>tj6
zp%(V^caiGZ{V`brRZ|I{C<T|Ra)iP4IZQ53MTQ3Ib1<R^6~<Q^F8IP|Ep?FjBwo?L
zdF40>9(Exgd?E0=24M&Zr=H_1!)}RcH=;j3FjAF~VlxHK-?G~a;X{bnuS*@1I1SJT
z8Eh-(<#W2IJWN}6k}#<p6(kF+;86Mmf@5YpX>9K{RHE#j%_&`fzKDrUq|jDA_}^Ch
zN{wKl%E}%iqpde+RmxmUN+qR6R60$`z2fX>D#&(FDQZ<2%}v}_cl=}ptJ>K|y|iG=
zgqQ29WVd6x-wGAF0)n5Z36<gBE${tQ2?dc$fyfFD4h~6OQ*8fWKcv>|zkp0!O$Rv;
z{CQ8+rBL)(@9c5Il!uyuB2F&fcMVc0U;;+ji_6^k>0=zcu|5P_!c{L@Tlo!<2;6Tr
zC!fgLH>pE48d-~g_Py4>Z06Zd(%%2{{3sitt%Ltf`N47nvCs@fxig;tT4V}>DolRJ
zwGb!I;$!+z(>+P~|Gg_1%EA~G6k04&kaHC3qBAbz(-7F0JG7Utm<!Lt4JTsy-l1Gr
zbhp17psfY21iCh>0hm+PQna&@HP4bYofuhlH~?0^^5;p=#Oj2+ax1?gkqU?XD9_J5
zhTA0++ZUMpMM?bS4;_YkK8%MuHtbCQ2WgoaQ=;H61&e7o)3M>Ud1h&)I*1CKa0?1O
zfJF8&3HKZ8Q3&D`=CRLilgN#~uQOABfWVv5;NloYsLZtELq<)LP<LV|y~5v;e|q!B
zLWm@TQQs1R<H<LIUZ5_|cceFij^B@sXvM`}tBjetUV}U#DD&W*uG$QC#<kKC2SyaM
z^@)I)FqYEX1&28<8Z`ZtmoH96atjqMZwCRe+UC|=b>Ho^K^6oq-&;W#tXyB6nW}TU
zOS3YzmRFB!rA>G2QCqN90dXauCzs0?6L8qjDYVkYn2wq8UF)2SHKx!lNcZ2&;C(o;
z3qQ7(BCwNAJse0Qq|rI1Um+@5Br04cq}4kPKfZ*KWJWR;luE>B+LUQIt`WF%Q1nc#
z8Nl)Dc+9ez>-<e<G*4&*{?du=109!0JFZzHG&4hUQ%jAvE0?|<K<s~Z(3;BTF}ra{
z!?)kpfh+sQ3jJy*aIE%gZ+pK+{Xk<vce?)TTz!i?Q5kWJxtUn`7@8vL?O#+>mRqzj
zk2@B3k1-DqN5vm?(`F|{Nps^RHW{?`8K271jkE*{b=D0uH29tTC6%01^^X6!OeLWt
zwg$d7?yg@QfFJ(QSjx_zn4uugL^Gi<9@A;fDwF9a;o@wW+Z2@*vdm6lMR9XCaC6mj
zb2WsDDGDj8cQ0(-gbH9lNAziGAFv-ez{g7F*AQ@_k!g3Ea+czF5GBjPQE-;h(4`hA
z(S074fdAD^fptWKl_^rNg~SB|P4KB3Uz!G}&OpPgRZytUWBtov-#>tp7_CtxooRCS
z8v28QkbWj;?-CBiQ4!71kp)&z97T{*pOo6ICb#BSVOT?ANMci&baj)lg^G;-A1+!(
zIu-ycrw|oo?>H!Y5Wxs0D{?R~lIC-iSmC4%S2$myB&|9UuK?s1n{%Xz1;;@azx6UR
zaun6q_%GKk&CLHzZ*?`=?}zF9881nBMS%L15DGeicH4ypCQAxBmKw=hor_UT6Erra
z`AGZ<^WXUgg^Ph&dJx=5W6^=u3Lr7YS1gI6(USfN6pPXf?5Cq2Yna!1R%8LE>6~&j
ze6g|e8tT0&DZFu!Pr=r5Dt1_#SoF*ExPC2P<XfdBB}-76m{h8|WHq)`Hu>uz+j}<I
zFZ8XtV7<EED9k>@Zs{D_+~#zw`VaARvp&aF)6TZj0LZ{?W{u=~>4cfaft`kw?buhY
z2f6IJP{p*$VFQz*wyDuGZ>gu(ggl<>=pNumyymrOOS_~|gS=LYsoFp-$-89Zavhh;
z7~kJ7M7O#c?yxcJ$r0H=*{s~+8jbEhqafwIonolV>M;@rY=pJ`0RTt!81r8o4+Tza
zsFe?K1e0x3IZxb-MN!{vVbaBMbJ8QTDRPLf7$PC4n$c7}gB+O=U;-!b1zI;=YF<1x
zFB>QQdNL%NsnITZN)u?Z!GI`N2w_Lklz&x<l{1CAJm$;YIIS}>IbLu7rdl8TwKZ%$
zoIdtg;0g4w9tA(gq<D`1@v(ZkRfp<^le5Z5<-41muP_uBzeqNI7v}q4noO{*;KFD4
z;GFMzXwstQ3^vTTA%&)sTwlW^q_7z2c2~RHF0b<QHv+s)NA@y#DoIZd`KEmy|E@i2
zlM5bY@-+3RN!y4N>H*8rIc%R$YyXH&nW~^2a$)n0eHU#qog`gS&?cJ^7hluwznjDR
zaEJ)&5o!vrr#iqlMfX&*-x@U!e*_38Y?L}`4Ck=Y%Y}b2;h>l3zuMzmUD60*6%_r;
z#E!4rIF)&7mbT@PaA=jaWyuNXu3=cM5a?}S9ryE<oBU34)V^9$n{@g8VaSC;6+5pG
zbX7C<NwrPA!l@85n}#|o4n&fEyrLu6XkxJaAp6N2MU4hJ%hO6q%hy-S_vyDUycUHo
zUMt^k-`4$BKBG$T4!w2KLTn0;(r+F`)~akBja1=AE^2cF16L&rF)MF(JsEE`5%0Vp
z3pJ?f1pZGx4lYljwalBf)60+&dpMBhqmLvZSum?_cv@PTL5)mKe(9(ANep`%I}~m%
z9|2Ou+`7!<{QQPSnIY>sA7;Gt9w-wI8)m*t$$U-*9J;XHJT+Y$qC_#vpPx`ar^?cC
zL`opSWXj|uAZlzYN5}r?QLFK0%o6D~DbWaTNGwZ^4T&ty9mPI$d8ESA59yoRy#Au#
z0Z0TLAWBdLU~}?wGU1EMYYSrA*W^ZZmWH)tR&=x_#&o57{V_Iim(ekku&{I2@Kx|v
zGINm1kj^Py)QQL)&q*l7`J60QsBVkOmnoY+9mxv=i4LZdRA{+badD~1k_vMEy5f(g
zb2s}AdY=QvzMl@8hY`U*%4DG<y#+8oGJc^#m(N#Yc4UUO(YQWTMfCE*-*di2LHuth
zILHMd#|(Bat+)2m%W`o76LRf3hWbTRSt6EQe$?ErexQnf1A<#t#iNmWS%B1jTP(|c
z`Z5W7gRsN7_iXRupX4$#^~O5%b(ZmL<fT<HzSWQwL7HgKDYEwxd(j%6?>kOm{Tsh&
zZo}!o;q>>C1>er{wuZgLww=QJA;RB9tjuX59axffJx-yS1?>cRdL^U0hC*M3oXw$j
zZmoPwua|CYTlL_`wj6xLONzOUP436Z`P$R`-5Qj*G0c=Tv}Zh8wy;mjl5jl1Zq8+&
zN8}+h1Gjrb;*j{KK_uj}dg5nsWAjuzE_^ks$iq5r22StLQiD?*K%*|HaB^&VZ?BT-
zppvCodTO&3d}V5!eUWIgJr48X0!5mv$?LLp7yS2k_kL(2w9_U{MgS<d0O(=UpqE6%
zJ`c<ALgaoZDu~5wS_Z8GN1zT1i2nXku=owPKrVJ$Kz)-*oZ=WGlJSEW{EvJoZmc1c
zyB}VQt=aC^_Jws?aYUL?B1zO3xES5s-HKmeRF8M+upXxWYkW{;03hQPmzcpyK{3LQ
zc5lnt@djy6#2j?C1UbLY+4HZkI<|ScT)aLTDrXD%-`;M;u4pS|2v*zd&90W)cwrkd
z(T#~^S`E>hu$P#@OJ*x^!>|yqeebEZ<RIlm)fSpjPu$5LzQ;v+X@H|_O~ZuWmZ5g3
zFXf$5V_TbNUs>l}>EWG{(zYuibQt=G;noq#>;*j|J@jJ|zhC#TU-yV+iP)-HclU8o
z5#6OC>YC-FM`9Qsw}jug0=hvOJ~s~&P>9ngD@D`jr@E#<O=qj!^6e4R{%mGO%KO>!
zH=aQSBg3Y%b_(M*Gha1}oS3j*6~UFUm6e%ULhO1cP?0Qm{l8ngOUx_t9nJHye-iv(
zbp7*poo&?j3&(cSU?pi|+qP}1D|XV@wv)z<ZM(5;+qTo-UDtCzd%XMpVUKbC4fCAG
z7oVx4maR!gJCgG|gP(zzosox`m5-a1gjgLT6ALQ|gCGYzCFO^z(r*ntbtM(n=29BJ
zdOkN1?WN$kiHJk)^nDEd&Wk3O5FH(FTXe%p>Y2rvnb{dE#1J5IUR%V^_!>!xUvfG+
zl{GaTQdB$j3#-mBnF_EUfUKcHl|@T67n%_9BBoI^G7Lze)8%lZTR?&k`3^M{A5&lo
zvLuml9T`$+bbsQlI|PhkuPU@$Y%I@kc>nTGr(h%=!z}6phgTbv)X^oZ@aSmU$_wua
zo4?VO8;|mrgD}PI5=X@v97_yOu>w=s7}x%#MAF_`V!up4qrutJM$Sx6PC`#fE<8Dj
zUAHH1ri=|h=r58tBTOzuz60k@r=VL{R8VDW_cQx<mJV-+@9okz*=}uCug$$b`L__r
z;4sJ<bpbjtBE^Z)JCL;&1Sq5n3pcm-w@>$`rL0+hvXcM5-V2eoh!Dy#Z;jwzB^Vq<
z7NU9nb=eW+%aY3-!1KPFCgm3Ze08t7eN@OKxaj?6=#f`6{WISBcQzM3n=9vuvBzNc
z(iJSpsBAa*))R~sP;_<2^*J7;rgj`*5E~bghGV4WF@!vzGasx+-iVp&$;?8;-hD6Y
zrjQq1+O1I9Cn3Uz8NS6>v}2!7fnxPKn$y5CuT4V8uvFnsZ^3j+!wM$u%+a~u?C`U<
zl9HF0g<Io;mCoH};LGM=+jtVh(fTd`X#s!~F^`OU&;4TNvjky0D}#JShwf5b?GS<O
z6@YErjO|p-VV)Pxt|*mRCY{qys&J@m_Dgzx^`(sNUCreki=y>dhm~+!u3tWHuUM&8
zbp*}GiK;o>KY&N{TSskPrmt(H1)&6JHBgDdQw>rt8?0DNP)0`5BgNd76JgI)KmYv;
zndf9jHMJBpUYpjYmF>njU>a?3oiSnNk)o}v9<`iFL)elS_3Y07PBXrH`#&UV`9T5}
z!T2Zv(AZ<di&l=UX4qcD7>gIjE!Y}1Ukf0!^D7mks7}15V5^4!`}amb1_r*kqZkH;
zG0BpCox@Sv{ra@QOL@V)$@XS;$+q9~!EMm_az`A&c9YHIpL9fPGy0TiLzN`l11m}5
zG*&4Iy7KQy`Te;kETwO98R$WF`BSw@=4-X-3VbOY{`=$ypu5%H;(<o`%4uCG3re(O
zYWQk4958JtLmmneqs?#1*!fJxKf?oh3@7dv4_=~HRE(7?lYIkYezq5^aw+m^=j!UW
z+BXfD|1Ht?h<CD0JKuonZt|FosyD{|cF0)Dkh4yev#Qqx9F0yIMs+qk|La=uZ>w{D
z+K_?Z1&#g2u`jbF%UqE_J}Ro2eW7W7xnX&+4n4|tU~LIVFH1--t6vuqyCSD+l2<{F
zd_T=7H9o2!qmV*T96VSe1;h+WR3Wp(L+AFWGo~z2pqmD_UMe5{rim>_H4f1IlWmxm
z!O6|-_De=ZA-c08IVHTNpm%w80c;lS%nEK0!U$_sS655|#@uY!+-%UyWC#`-EC&Jg
z0;7nTi;X8t#$4I*Of8Zp8L1~fKAj9B2`X9)2Hpn66is+mf)ef2og_vm7sDafqJI}`
zM2ikQig>qHj4n2q)FGWf9$Pc27ptNI5tof30*nt{F^hcXhK)-El3&$HSJMgB5R=zl
zlor)T71kC~74)>oYfCQ*iYZ8K@Tx7b5AG%tpyQLKk&lR!i;9(ti;#(lP>4fTjCQ#B
zbzlu|DaR8cLyjJyhLAj}M43cI2BB=IsaRQLYHOXv%<MK)zIy&_Z_w%0zwsEwN{Q|8
zqK5<s83s!CSW}<}pvU#^+~Cq-$Ec|n&04xDOd0qJpRT@+ZJ*$v{XdyjaJ&n@=btwp
zUnGzp*IPXb4>|ug&gg}esq<kD(isMesmw(=fI@>y{((o%YC*WF*Z#IhLd#xrI9j^b
ztj(J>_U(v`HcS8HFHzHZ37eclruc98jL%)Bwn`R9zXF|l#Kq||!wTo0kA3OU@2n%-
z$l!fs+KNl9qq+$*X7E#1aI(E|)NCT$NRqC^C?AG~HX>tMF}}^ApL;FMoBc>-NtMmA
zw){)q^A(tS?V)(Bp_rp#D5%u<>fQqLY8cJ*#UpE9j^kF2yILA#vp_n1lw@WRZ=PmR
zHHTAmkYHvpYj%2vZPjpeUOGLml0$1Wag<>0AU*$ja2gNH>@AtxQ#HS(V&y)-qnmT4
z_(`KRSiItjye>CDWwivjH8Q8tDhUPX2dR|xmM-QAmB1jdW7Nk6SRSC2SSgvGF`47l
z9;d<MXjwAUqcO1TF&wBI=lVyf=LLzWTMKB`1w<nMvZ5)d5a5i2c&4GlS1E!43$h)`
z#b-V-V=G4wvn^IJgJ;*|@ghtfaD^Inwm7X4Ex?brYQlAZnx+xYJF{$D#aioYed+um
zh(go->E{dzG%d5Pbmrw*^bM?r{qRw$e!stOKhMNFe8oH__`C`eKAbZI`H?;EGIa^e
zTr?^EnuG8we<SNh*PE->n(ZGKyAV-xHo9G&j|QifKEhn>Hrj1gGqhEYMl#J(C-pT{
zwbSXDXMgn?(^*21x<r1*e6R-dM3SmwPRBlzv&Np!9(Uev=w$QQ%HZ>}{TUx?R+=qk
zMHI<`POf`qx(YZ7h@9kFoFW?1<DC;@-O$3#XGB^!3bAkkMzhUVJ~Uj)4Rh<JdT^`1
zaiw~$Dn2<-J-JjTdvZ!`9uK+OOu(-SRu$gQOieXVwlie&`2e3|YczZsTx?~>6C@SA
z3_Jav?k0mY?NPftTMj;y#&>3VPWL7EL?A9)nh0G6U4itvwh1vQ#mOlnDzf7ug_d*&
z>wq(H8Hhwo(j<(+h=`x?@QH;BHxnCab(o1!GWFx22!V-563wsN40f~-!}09+G)``M
zV$rh$v#O&0W$ZiW5D~&scX>@wQ93L@c#|H14GC#rl4?QHTt3EpA?SY1P^hO3OpvH~
zZ5bOJ4Oo=OPi2q^sz5=Fg>SM1m#ZC=yW7jH^*5AK>DHYFB{+Hzy-o`Qg}_pbByJR&
zX)(k(!(T$35`9Dq2|iA_WHy+fD_d%LW21LsYI9&~d}L|9XHI>3ML~92O?Fyodu3o_
zXsmZ~lz*n5vrmwWK`n2k(2_a9l6kJt!XX<2nywwz{S5a^xm1lLK#C$U&6y%8PoY2w
z`4QQ9P-n{S$(WX6!mxX%f^>cPa-GesfA8R3jv^|eH}{4s8i>fjhh0GRvwwG{hag5|
z??x=4+3u<p{(nu3PQNeLf4ArN-F9C&##2kOl8g_Xz8`O!yjl$(^B~dUKRYl0808NT
z_cIuLa>A-c{*w!sErp>g4+yoxz$msdDn5(gOke%MQO93s-mbe1jLUoU#r)TAR8xw-
zLTh#Gu{8DXPf*QVeH&C$TbQ$Zm|<wUn0@E~2tBd8;42U~unF-^caE^Oo&HuqY>&`#
zE~|8)>*S?tWo5l?mw#3`6&SeoXTl9&Z4Y;2jSSa*aOku(U$VG<9T+$5!B~U+BL}g|
z6}DfC6?n@oF#<zeuN-VM(<Ap2n6U`2+P1K&cPGcut{t9JESybDq;QO0T<55&y<+CF
z13}k%3}Av_x|x)F$Aa-iK;{eyw5Biy%aA&eAOY|&VL^nI50@_G52-bjHRxBmS>2}I
zS+K?gM^!eZa-YyYGwB~1w=J!ESB0Hgx$U!84_W_-S#D3Obm1^CF6q!Qtc{lWgYe3(
zRPCc-gHTc|^m7&L_qh@=KKA0sE@Q7zhSG=xU2(eDABB?1r6v9SZ|*u7E2I&Z3o`~W
zA_0Srkr*7%R#r{rBh<6A9Rj}Zk{@9o*C4ChkNqRn3_6^tU^E-C-A{?(1OLwCON?>~
zmpyBviqjC4dihfYBzYD$6^TP{L?QEC`3LqYGmBl|BIT6vd+Y@xXQozf{<WBns48I~
z+;DoRsClmbuv$LLg5_Y)6?EzyD{iCBG-IgBWHHPJ>|V+DckDBzko_SJ0`?T1GF$LC
zM}AK-n<&g=!o!vejp6Cf?svc_?XV0y{{CW(7~~=j+9Iv<lg;un&8^d}E&iNa{IN4f
zvu227n~eup2cO@PK0q-`1R|+UMjUyDqzsuprG&VetsY6d#&Ya$UeE;TnGgM&mcG#@
zIIeU0yB{=_|Jm|yyQ>RS_D8Mp^?th9t*X9q;&rXu?($LBUBA8lzWuuU(U59?-R14%
z<ZyDCsVP`#$iz4^F``3Piw%FtF767*SOSR9f^YvBZdzE1cLzc5q%iV>NQ=NDq<2?6
z;4vc`5KUi0zP*N+dWe&+CPlIgVHY3b6dlSdD95uh!xNEnZp{wLDAHkB-#7=0*ybtG
zEr4Dr3+NVUC#SD(t>VKn7?`A(i6q9DeVD36Q+7*w93XX5$SejTo!wz7pNbw|?Y|fW
z7*y>q<T)!D2dEG|$mvR@auou2x}W`Js%75AJaG#9bER}F5uyEwOcoF*@+C^ae8{B6
zvQE}Gs=TPiyo#dMs6MQe`lPf8)d^BIx#mVTR(5vh7UxIjN0_@m2xyhrA|;B3C5i^c
ziig3RLQJEi5@E!k(zVl-sj(n#Ai}Y}XHxFmfd+@mpw1S!-C)z;cnjUSqxbO;q^?<&
zK5k~ZobgO;JdhOq#wdvjCa6ExG2Q}_)1n{f??<6*(P${-f5-U-4KlF*C#(TlFpBM4
z(`KEitj7|fi-XEs{;8ZjeJaN5bo=f7!3>*v?()4q+SFaC|0wvsb0i1|8OK`+@w^Gk
zx${+ID9WCn5Cif)6aWF=zzB-dqjMC<rx%z0jrE<T)ol_JHt2iCo3c7_0e8JO)-Hc%
z9pmxVVDnyMd*x_Ij?`0wnk6apL`R-V7n40{_&snKkW-Ka_E1AxNU`1Y0qv5)gT)u$
zIuV!Z$+se8PNJeZ@d!82@x7^O8t1n=2DiJBdzNb^*RS)#6f44(xf!oD?2j>h-$PVH
z)S>bu!mW0Q@Lx(LT+}eX@nrZ%TAJl&a#5XVK{{h1&QAz&f-^D8;Nsq_DD41Q+R=q}
z7s9E~Aj-kRDnS!NIJ0sQRBwqGkzh8ji<|HLy^`JMh<eX*JtX-@HYs}~oGTm03v};o
z{Gd`6lZ7Exo<9d4wem+CDnACHGtr1oN7O2helNy%r|;kA-$&~g13PLzQh@&~q1z++
z*#PPGi)d9~>*BNWCVO%e#@SuFp}99pD+?8gX$sXw)EMs~=RK~<CRrI)F@5#KXp6$V
z_yLUiua92^|K;gZ@}{VTb)<qL)mKMT`^TF6q&+pwPm<6J2Jv{WK3@#~x@gsb^iNP$
zS!v$rmJAEKCUogrL=**fwSJ59WlBf|$E5zh#Xgty)XEJOztvFg^KPBLuIGIov>Ev3
zV+b<8Ad9*fn%}?y6KEuBh*2#4c@Na?#xCswS;dkiXRH>XNEysQc2kAA74x=QNU#j^
z>OHp$J8zcofdha%o_s0DDk#=0B-%|r-XI9r0vp~S6WL2#)k$2^7%ni#pOFbv<6>;1
zYF_nqt^w6lnv%b(OZ1Jb`DZuFW+r`ooqHmq<4y6v$1ye-=xTp_qOtPv{d91@>e&hS
z49NWW*zWeYKe(M=*R<E?^Zhj)@UgCt#qWJRdwDD<@V5KtwBrZI-#*vLNbFf%C!E-o
z-4Hq>(bItKK=*2+o4_=%%0WHB$UP^>FRT)us-=-)sA8a`mMvID=cea)v@&|SPgxR|
z6`#n<!0iXLx_UXdaEw^ROsuD*C^;D9Y1OiddIb_I((RnWy#UejVukuAgamt*SveT^
z1f&5uxag^9*}n<!a1ZkG%BFyc#N86cNo90k2qEGyM3DafYS5*PqNud`V4lK0=W3`A
zK`lF?L5ZO~DJ?qm|H>%Evuz+@M8Z^+iVY$lxEGBncSWUywXw-LX3|E^R!`n`GscGR
zfnLv9{$e2XC<7>(&>Rq(omUqTkzAGBklNsuRs(vv&>-8O#Ei>?kA_3G7>`HCO-9E-
z=<BMfSvjk?=2rzFhlo*NO0i+6lVRcE<Kmy4LrX&a=1lhUaTrfP4CA=o<}+S=4<Eo~
zNsjKPM#U&f4DfqI2e~{7#LKw}Qe^o|xSXh{|4Z>C8gwPLe^cJUq)PK`1kRogEgl0j
zvOf|n^<0`gPs`rRVCT-B71NydZeF*RYYZX3=&QYD9X_A`Z%`=!h={r#ETk5g87N$$
z`<ZY2aQy4iJQ5icJ%aFs31OM;F)0bTcQoz@;yKDSWv%BnI&v78du@&RXUSXRgd$J{
zrr?Y7=YtVK=wE$PN0_r`h^tqK{u9deZA|MPZRZ(|2R##D!L}E^MHItJw1<C9fVQ~<
zEZ0=F3n$&1lcI~0r;(SZl%C=(gYB%`Z-@NHHX_)T!0{&kbbCk6qqE?CRVPib7Jfj@
z9mxXo?4z7o5KntVq{eq8P+S3=Q@d1RiLyi@2>Ucw8<KLyGA~A{7vLNopi&*MvvAh>
zTif&f5NS`2rFd1Sc5K?rFZ%2CVjweVh@XMl+d$>Lyz<7;(N59QK+&T&ITC)kJkm}R
z`*|$tdQ7IPit4TU?~AnM?!Gj1%ltkAZd3}wDq{LVx<!-XqczQ9_gcv1awM`Ao;tMm
z=aK7n+N$>;CY?kcAUyb#?h)EdW4-WJ|MqlQG=ClM;=etF%7hR@TQYBAU@wDsTq8_q
z0Vd2Qv|{D6?A1@%MiXbyVjm68?wxbHOOxTli)BUQxFkR%nkB38`t@J;1}P#f2h*{x
zu5y9Id;}Q=2Bne1enGz3wDnf4?ciHY3ZtQ*+fsge#2ta9Ol??BK~_V0K~zymO+iCu
zR(1eNDhQE96)UHMm4zWL0=uVXTUV~b^&2GwSgNpGp!#5eCCc-y5~ymf6%ZL?H*L&=
zxRMRv^F!y<%EY0-9y*Jfn{ckLdc3=QxVwC0scgcKdl@y;NylzqJ!(%M%9n$TA<+LB
z%E2f+5{c<BH=wg`Ya{a~Yh3TbT=t#AT+(hLMk|S28*skWxq7=lywgj3y5n%v6Smg7
zOCKak`0=4=(CPbrc3CjYc=fnpA?R_WWIp{Grg$yj^SU#5UQ*ND?PjmCr0#MitnU~h
zHJ&rvv|GMzc?VfFi5cYMlt@AuCre8^MN2)-NHb1LH%Vxirp!c5@24U&)jCia7<}<J
zxbpAIMc}~1d+@`?%EbH2#Jd=(y}7<^Ky!S_<gw+wJ5T^eNRq0Sg&6_iAu<9!CK@>=
z98yAB&%2duLDEn$s7T>w5V;K&O7c*#lC}vTN<^7b^dnCxiYlmdB_w8m$X`f5KL;e6
zV_i@V!X(%JbQBX$rHUB%$<)fW!%dBZksb}H%K|<^1|gYMRAFvmVPy(Dv;kgPSscQo
z)Z(p&BTt9{A?fLT^z|W)jg4jTWntYU6(ig%M6|qJfqEJuK)YWe3MwLY7+gnWgQny|
zCIiE!!=?&S@}tsBEbO@|rD71$BRGIFyo}5YF-i$J?U}#F3sc58sJ3e@j&FCXzUaMN
zB;UjOF^K$^$rk2z5TS8HfRH^urOEOEfc?Ysn*VnYYF+57LpyW5J`?p|8jOCuu#Iw=
z@UP?N+VgQWA84?2K7DYOctsumkgeF}v|G9@z<Kk9qR+gO?|n4{W%T~b{X$35%hjU?
z#M2&RBu*dNlq#kmvsk0$9GytenIWJHW{qlDm^6>~y_N<{g4@n#A&i?@`K|OFw#E!=
z!`jc(v_TpCLcDT7J$;CG26qp2^#Bc(P{XI#);%1LNyZ~jFsfxwQH*~g7<RD3+bGf}
zL0Ieh@dq8~qtAt-ZlFSUKxX~mR&1iPWSC)WY$x6~H(I_k9V4ZV63wWnbxWMoq$|4;
zeq>HqRY3oZI(o2`sty0QMIl%rPG!&^p_dKZi2@9PK)3|vTjeZ>zyz7Wg#c5jN1E50
z$T?FP02{=yqt=_jjyb6w;alY>Y-_+k>75lT-Km=oxke(wBO1ip-`7zz2V#QrJI<yW
z2P#rX$C?ji(@S+JsW>#{*D4x3HL5(dt9)u0+!m{R8ZdaN8obO*TXuZ+BhC~E^S4y_
zFpWAfZ+P-}|C`U#4v4a=t=;~4SUW%C%$mTJESJ%{OIPo*g`eX{%6wjIZ-JQ3gL#1g
zjW2%g&`N#wXHaZTZby*_jXiJI5X6<q$@ns;<6q7GStfvxx3}T2+r61^;l~@td3>TO
zLCS<O&-3|<7#}2$JUl*`6_SO*Ks%hs(Px{fX4!nCyvjS7XzwTTy=OVcu%+8zL_|~U
zDw`0%!AFq+naPk+0{bj?BLdW{Ad<0U2ZJ#e`EIC~bz(yLEM}?RkTL{ftfWfPnemR!
zkgQ!o=`%rSVV--fY?1123Q$rMvvM+Oae0Diezci+q=j>$VNteaMv58pVC58h<)q{U
zAwMKqN`N$SI%08$GF%*w0>-$Co>E&oMO%9U!9hQVOgriOUlLlApXFb3THBet!zd`l
zD85LzFKEm+Kj(JBJRpB`eaG#3dHRU?v9;lMe>K{G^UT{m)#TRlu+{1L_49hZB`!yx
z?a}se<vYe36GBtsP~`!FaY#NKZPfcoZDQcVUf)Jy{rjjmH)do#B83^2oZK{C>TiAy
zbRtql26{>gc3K*G&>a^_Y}{UH4LPIS)POFniQ@>5T*LW5iJjt*JOhhdMLjtSH8lsd
zXfXf|02B!(MsBQS+NnLE<5~GJRvf>IWd!w8*cW*%Fs8KB5OP>ix7KIN57eFSIZ_gb
z$1hxw%6S4BD^cn3B*{XD5N1h1Y24t}x<<?OAbNP~^OHiVA{ry|Vj{wds(Set;}eP^
z+VW#2G-sz2SI25C_w@8^j7@A!_Nwj?rr@IIWTmOZr|@tPLZlUfb0*!ZCf%tdA|}oa
zlgHAJ-zK{|h7gd1lopj0Q7$#qH%g7kr*-&#-o}!abj11jm{`x}Te=!B;L>IIgWRLi
zH3uz>5R>bR(u$g}VIc7!3`Zo;;bo^5?tiT(FmKzFTXQLkt!{l2ANyv6umWNE&?Vgh
zv&)Om<sVPuPwR|bY6h+kU27i2HSSxp4?`cu=7hYiw^OKsU7_Ubf~25O0jNQ&N!2V5
z7mQS-6DGppU2oF^#kU6rP2Ftx)|6uhoRv4C$F~C{)y?$Sq=xJ(`;2$)<>+#h7&m8|
z6Z%Z^!ZuRVEPInwzepI|N3~!5@aY#kqFBKOxY1I5x;lt33Msu;^|b2t-gaWt%0Ae+
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%0D;KT`hiFZZu$sp;wL`6ZwYaj}UI8?3=E<UWXq
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%0As!n;);&W~1UqVt
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
ClIiaN

literal 0
HcmV?d00001

diff --git a/experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml b/experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml
new file mode 100644
index 0000000..107c140
--- /dev/null
+++ b/experiments/coco/resnet50/256x192_d256x3_adam_lr1e-3.yaml
@@ -0,0 +1,76 @@
+GPUS: '0'
+DATA_DIR: ''
+OUTPUT_DIR: 'output'
+LOG_DIR: 'log'
+WORKERS: 4
+PRINT_FREQ: 100
+
+DATASET:
+  DATASET: 'coco'
+  ROOT: 'data/coco/'
+  TEST_SET: 'val2017'
+  TRAIN_SET: 'train2017'
+  FLIP: true
+  ROT_FACTOR: 40
+  SCALE_FACTOR: 0.3
+MODEL:
+  NAME: 'pose_resnet'
+  PRETRAINED: 'models/pytorch/imagenet/resnet50-19c8e357.pth'
+  IMAGE_SIZE:
+  - 192
+  - 256
+  NUM_JOINTS: 17
+  EXTRA:
+    TARGET_TYPE: 'gaussian'
+    HEATMAP_SIZE:
+    - 48
+    - 64
+    SIGMA: 2
+    FINAL_CONV_KERNEL: 1
+    DECONV_WITH_BIAS: false
+    NUM_DECONV_LAYERS: 3
+    NUM_DECONV_FILTERS:
+    - 256
+    - 256
+    - 256
+    NUM_DECONV_KERNELS:
+    - 4
+    - 4
+    - 4
+    NUM_LAYERS: 50
+LOSS:
+  USE_TARGET_WEIGHT: true
+TRAIN:
+  BATCH_SIZE: 32
+  SHUFFLE: true
+  BEGIN_EPOCH: 0
+  END_EPOCH: 140
+  RESUME: false
+  OPTIMIZER: 'adam'
+  LR: 0.001
+  LR_FACTOR: 0.1
+  LR_STEP:
+  - 90
+  - 120 
+  WD: 0.0001
+  GAMMA1: 0.99
+  GAMMA2: 0.0
+  MOMENTUM: 0.9
+  NESTEROV: false
+TEST:
+  BATCH_SIZE: 32
+  COCO_BBOX_FILE: 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json'
+  BBOX_THRE: 1.0
+  FLIP_TEST: false
+  IMAGE_THRE: 0.0
+  IN_VIS_THRE: 0.2
+  MODEL_FILE: ''
+  NMS_THRE: 1.0
+  OKS_THRE: 0.9
+  USE_GT_BBOX: false
+DEBUG:
+  DEBUG: true
+  SAVE_BATCH_IMAGES_GT: true
+  SAVE_BATCH_IMAGES_PRED: true
+  SAVE_HEATMAPS_GT: true
+  SAVE_HEATMAPS_PRED: true
diff --git a/experiments/coco/resnet50/256x192_vis_freeze.yaml b/experiments/coco/resnet50/256x192_vis_freeze.yaml
new file mode 100644
index 0000000..73d38dc
--- /dev/null
+++ b/experiments/coco/resnet50/256x192_vis_freeze.yaml
@@ -0,0 +1,88 @@
+GPUS: '0'
+DATA_DIR: ''
+OUTPUT_DIR: 'output'
+LOG_DIR: 'log'
+WORKERS: 0
+PRINT_FREQ: 100
+
+DATASET:
+  DATASET: 'coco'
+  ROOT: 'data/coco/'
+  TEST_SET: 'val2017'
+  TRAIN_SET: 'train2017'
+  FLIP: true
+  ROT_FACTOR: 40
+  SCALE_FACTOR: 0.3
+MODEL:
+  NAME: 'pose_vis'
+  PRETRAINED: 'models/pytorch/resnet50_vis/coco_vis2_0_no_linear.pth.tar'
+  IMAGE_SIZE:
+  - 192
+  - 256
+  NUM_JOINTS: 17
+  PREDICT_VIS: true
+  EXTRA:
+    TARGET_TYPE: 'gaussian'
+    HEATMAP_SIZE:
+    - 48
+    - 64
+    SIGMA: 2
+    FINAL_CONV_KERNEL: 1
+    DECONV_WITH_BIAS: false
+    NUM_DECONV_LAYERS: 3
+    NUM_DECONV_FILTERS:
+    - 256
+    - 256
+    - 256
+    NUM_DECONV_KERNELS:
+    - 4
+    - 4
+    - 4
+    NUM_LINEAR_LAYERS:
+    - 2048
+    NUM_LAYERS: 50
+LOSS:
+  USE_TARGET_WEIGHT: false
+  
+  USE_CLASS_WEIGHT: true
+  VIS_RATIO: 0.1
+  VIS_FACTOR: 0.1
+  VIS_STEP:
+  - 20
+  - 40
+  - 60
+TRAIN:
+  BATCH_SIZE: 32
+  SHUFFLE: true
+  BEGIN_EPOCH: 0
+  END_EPOCH: 80
+  RESUME: false
+  OPTIMIZER: 'adam'
+  LR: 0.001
+  LR_FACTOR: 0.1
+  LR_STEP:
+  - 50
+  WD: 0.0001
+  GAMMA1: 0.99
+  GAMMA2: 0.0
+  MOMENTUM: 0.9
+  NESTEROV: false
+  SAVE_CHECKPOINT: 20
+  FREEZE: true
+TEST:
+  BATCH_SIZE: 32
+  COCO_BBOX_FILE: 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json'
+  BBOX_THRE: 1.0
+  FLIP_TEST: false
+  IMAGE_THRE: 0.0
+  IN_VIS_THRE: 0.2
+  MODEL_FILE: ''
+  NMS_THRE: 1.0
+  OKS_THRE: 0.9
+  USE_GT_BBOX: true
+DEBUG:
+  DEBUG: true
+  SAVE_BATCH_IMAGES_GT: false
+  SAVE_BATCH_IMAGES_PRED: false
+  SAVE_HEATMAPS_GT: false
+  SAVE_HEATMAPS_PRED: false
diff --git a/experiments/dripe/resnet50/256x192_vis_2_raise_soft_fine.yaml b/experiments/dripe/resnet50/256x192_vis_2_raise_soft_fine.yaml
new file mode 100644
index 0000000..b6a110d
--- /dev/null
+++ b/experiments/dripe/resnet50/256x192_vis_2_raise_soft_fine.yaml
@@ -0,0 +1,80 @@
+GPUS: '0'
+DATA_DIR: ''
+OUTPUT_DIR: 'output'
+LOG_DIR: 'log'
+WORKERS: 0
+PRINT_FREQ: 100
+
+DATASET:
+  DATASET: 'dripe'
+  ROOT: 'data/dripe/'
+  TEST_SET: 'dripe_coco_train'
+  TRAIN_SET: 'dripe_coco_train'
+  FLIP: true
+  ROT_FACTOR: 40
+  SCALE_FACTOR: 0.3
+MODEL:
+  NAME: 'pose_resnet_vis_2'
+  PRETRAINED: 'output/coco/pose_resnet_vis_2_50/256x192_vis_2_raise_soft/final_state.pth.tar'
+  IMAGE_SIZE:
+  - 192
+  - 256
+  NUM_JOINTS: 17
+  PREDICT_VIS: true
+  EXTRA:
+    TARGET_TYPE: 'gaussian'
+    HEATMAP_SIZE:
+    - 48
+    - 64
+    SIGMA: 2
+    FINAL_CONV_KERNEL: 1
+    DECONV_WITH_BIAS: false
+    NUM_DECONV_LAYERS: 3
+    NUM_DECONV_FILTERS:
+    - 256
+    - 256
+    - 256
+    NUM_DECONV_KERNELS:
+    - 4
+    - 4
+    - 4
+    NUM_LAYERS: 50
+LOSS:
+  USE_TARGET_WEIGHT: false
+  
+  USE_CLASS_WEIGHT: true
+  VIS_RATIO: 0.2
+TRAIN:
+  BATCH_SIZE: 32
+  SHUFFLE: true
+  BEGIN_EPOCH: 0
+  END_EPOCH: 10
+  RESUME: false
+  OPTIMIZER: 'adam'
+  LR: 0.0001
+  LR_FACTOR: 0.1
+  LR_STEP:
+  - 50
+  WD: 0.0001
+  GAMMA1: 0.99
+  GAMMA2: 0.0
+  MOMENTUM: 0.9
+  NESTEROV: false
+  SAVE_CHECKPOINT: 20
+TEST:
+  BATCH_SIZE: 12
+  COCO_BBOX_FILE: 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json'
+  BBOX_THRE: 1.0
+  FLIP_TEST: false
+  IMAGE_THRE: 0.0
+  IN_VIS_THRE: 0.2
+  MODEL_FILE: ''
+  NMS_THRE: 1.0
+  OKS_THRE: 0.9
+  USE_GT_BBOX: true
+DEBUG:
+  DEBUG: true
+  SAVE_BATCH_IMAGES_GT: false
+  SAVE_BATCH_IMAGES_PRED: false
+  SAVE_HEATMAPS_GT: true
+  SAVE_HEATMAPS_PRED: true
diff --git a/lib/Makefile b/lib/Makefile
new file mode 100644
index 0000000..57d5804
--- /dev/null
+++ b/lib/Makefile
@@ -0,0 +1,4 @@
+all:
+	cd nms; python setup.py build_ext --inplace; rm -rf build; cd ../../
+clean:
+	cd nms; rm *.so; cd ../../
diff --git a/lib/core/config.py b/lib/core/config.py
new file mode 100644
index 0000000..9a6d2e6
--- /dev/null
+++ b/lib/core/config.py
@@ -0,0 +1,267 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
+import yaml
+
+import numpy as np
+from easydict import EasyDict as edict
+
+config = edict()
+
+config.OUTPUT_DIR = ''
+config.LOG_DIR = ''
+config.DATA_DIR = ''
+config.GPUS = '0'
+config.WORKERS = 4
+config.PRINT_FREQ = 20
+
+# Cudnn related params
+config.CUDNN = edict()
+config.CUDNN.BENCHMARK = True
+config.CUDNN.DETERMINISTIC = False
+config.CUDNN.ENABLED = True
+
+# pose_resnet related params
+POSE_RESNET = edict()
+POSE_RESNET.NUM_LAYERS = 50
+POSE_RESNET.DECONV_WITH_BIAS = False
+POSE_RESNET.NUM_DECONV_LAYERS = 3
+POSE_RESNET.NUM_DECONV_FILTERS = [256, 256, 256]
+POSE_RESNET.NUM_DECONV_KERNELS = [4, 4, 4]
+POSE_RESNET.FINAL_CONV_KERNEL = 1
+POSE_RESNET.TARGET_TYPE = 'gaussian'
+POSE_RESNET.HEATMAP_SIZE = [64, 64]  # width * height, ex: 24 * 32
+POSE_RESNET.SIGMA = 2
+
+POSE_RESNET_VIS = edict()
+POSE_RESNET_VIS.update(POSE_RESNET)
+POSE_RESNET_VIS.NUM_LINEAR_LAYERS = [4096, 2048, 1024]
+
+POS_EFFICIENT_VIS = edict()
+POS_EFFICIENT_VIS.EFFICIENT_NAME = ''
+POS_EFFICIENT_VIS.NUM_LINEAR_LAYERS = [4096, 2048, 1024]
+
+POS_MSPN_VIS = edict()
+POS_MSPN_VIS.STAGE_NUM = 2
+POS_MSPN_VIS.UPSAMPLE_CHANNEL_NUM = 256
+
+MODEL_EXTRAS = {
+    'pose_resnet': POSE_RESNET,
+    'pose_resnet_vis': POSE_RESNET_VIS,
+    'pose_resnet_vis_2': POSE_RESNET_VIS,
+    'pose_resnet_vis_3': POSE_RESNET_VIS,
+    'pose_resnet_merge': POSE_RESNET_VIS,
+    'efficient_pose': POS_EFFICIENT_VIS,
+    'mspn_pose': POS_MSPN_VIS,
+}
+
+# common params for NETWORK
+config.MODEL = edict()
+config.MODEL.NAME = 'pose_resnet'
+config.MODEL.INIT_WEIGHTS = True
+config.MODEL.PRETRAINED = ''
+config.MODEL.NUM_JOINTS = 16
+config.MODEL.IMAGE_SIZE = [256, 256]  # width * height, ex: 192 * 256
+config.MODEL.EXTRA = MODEL_EXTRAS[config.MODEL.NAME]
+
+config.MODEL.PREDICT_VIS = False
+config.MODEL.NB_VIS = 3
+config.MODEL.STYLE = 'pytorch'
+
+config.LOSS = edict()
+config.LOSS.USE_TARGET_WEIGHT = True
+
+config.LOSS.VIS_RATIO = 0.5
+config.LOSS.VIS_FACTOR = 0.25
+config.LOSS.VIS_STEP = []
+config.LOSS.USE_CLASS_WEIGHT = False
+
+# DATASET related params
+config.DATASET = edict()
+config.DATASET.ROOT = ''
+config.DATASET.DATASET = 'mpii'
+config.DATASET.TRAIN_SET = 'train'
+config.DATASET.TEST_SET = 'valid'
+config.DATASET.DATA_FORMAT = 'jpg'
+config.DATASET.HYBRID_JOINTS_TYPE = ''
+config.DATASET.SELECT_DATA = False
+
+# training data augmentation
+config.DATASET.FLIP = True
+config.DATASET.SCALE_FACTOR = 0.25
+config.DATASET.ROT_FACTOR = 30
+
+# train
+config.TRAIN = edict()
+
+config.TRAIN.LR_FACTOR = 0.1
+config.TRAIN.LR_STEP = [90, 110]
+config.TRAIN.LR = 0.001
+
+config.TRAIN.OPTIMIZER = 'adam'
+config.TRAIN.MOMENTUM = 0.9
+config.TRAIN.WD = 0.0001
+config.TRAIN.NESTEROV = False
+config.TRAIN.GAMMA1 = 0.99
+config.TRAIN.GAMMA2 = 0.0
+
+config.TRAIN.BEGIN_EPOCH = 0
+config.TRAIN.END_EPOCH = 140
+
+config.TRAIN.RESUME = False
+config.TRAIN.CHECKPOINT = ''
+
+config.TRAIN.SAVE_CHECKPOINT = 0
+
+config.TRAIN.BATCH_SIZE = 32
+config.TRAIN.SHUFFLE = True
+
+config.TRAIN.FREEZE = False
+
+# testing
+config.TEST = edict()
+
+# size of images for each device
+config.TEST.BATCH_SIZE = 32
+# Test Model Epoch
+config.TEST.FLIP_TEST = False
+config.TEST.POST_PROCESS = True
+config.TEST.SHIFT_HEATMAP = True
+
+config.TEST.USE_GT_BBOX = False
+# nms
+config.TEST.OKS_THRE = 0.5
+config.TEST.IN_VIS_THRE = 0.0
+config.TEST.COCO_BBOX_FILE = ''
+config.TEST.BBOX_THRE = 1.0
+config.TEST.MODEL_FILE = ''
+config.TEST.IMAGE_THRE = 0.0
+config.TEST.NMS_THRE = 1.0
+
+# debug
+config.DEBUG = edict()
+config.DEBUG.DEBUG_MEMORY = False
+config.DEBUG.DEBUG = False
+config.DEBUG.SAVE_BATCH_IMAGES_GT = False
+config.DEBUG.SAVE_BATCH_IMAGES_PRED = False
+config.DEBUG.SAVE_HEATMAPS_GT = False
+config.DEBUG.SAVE_HEATMAPS_PRED = False
+
+
+def _update_dict(k, v):
+    if k == 'DATASET':
+        if 'MEAN' in v and v['MEAN']:
+            v['MEAN'] = np.array([eval(x) if isinstance(x, str) else x
+                                  for x in v['MEAN']])
+        if 'STD' in v and v['STD']:
+            v['STD'] = np.array([eval(x) if isinstance(x, str) else x
+                                 for x in v['STD']])
+    if k == 'MODEL':
+        if 'NAME' in v:
+            config['MODEL']['EXTRA'] = MODEL_EXTRAS[v['NAME']]
+        if '_vis' in config['MODEL']['EXTRA'] and 'PREDICT_VIS' not in v:
+            v['PREDICT_VIS'] = True
+        if 'EXTRA' in v and 'HEATMAP_SIZE' in v['EXTRA']:
+            if isinstance(v['EXTRA']['HEATMAP_SIZE'], int):
+                v['EXTRA']['HEATMAP_SIZE'] = np.array(
+                    [v['EXTRA']['HEATMAP_SIZE'], v['EXTRA']['HEATMAP_SIZE']])
+            else:
+                v['EXTRA']['HEATMAP_SIZE'] = np.array(
+                    v['EXTRA']['HEATMAP_SIZE'])
+        if 'IMAGE_SIZE' in v:
+            if isinstance(v['IMAGE_SIZE'], int):
+                v['IMAGE_SIZE'] = np.array([v['IMAGE_SIZE'], v['IMAGE_SIZE']])
+            else:
+                v['IMAGE_SIZE'] = np.array(v['IMAGE_SIZE'])
+
+    for vk, vv in v.items():
+        if vk in config[k]:
+            if isinstance(vv, dict):
+                config[k][vk].update(vv)
+            else:
+                config[k][vk] = vv
+        else:
+            raise ValueError("{}.{} not exist in config.py".format(k, vk))
+
+
+def update_config(config_file):
+    exp_config = None
+    with open(config_file) as f:
+        exp_config = edict(yaml.load(f))
+        for k, v in exp_config.items():
+            if k in config:
+                if isinstance(v, dict):
+                    _update_dict(k, v)
+                else:
+                    if k == 'SCALES':
+                        config[k][0] = (tuple(v))
+                    else:
+                        config[k] = v
+            else:
+                raise ValueError("{} not exist in config.py".format(k))
+
+
+def gen_config(config_file):
+    cfg = dict(config)
+    for k, v in cfg.items():
+        if isinstance(v, edict):
+            cfg[k] = dict(v)
+
+    with open(config_file, 'w') as f:
+        yaml.dump(dict(cfg), f, default_flow_style=False)
+
+
+def update_dir(model_dir, log_dir, data_dir):
+    if model_dir:
+        config.OUTPUT_DIR = model_dir
+
+    if log_dir:
+        config.LOG_DIR = log_dir
+
+    if data_dir:
+        config.DATA_DIR = data_dir
+
+    config.DATASET.ROOT = os.path.join(
+        config.DATA_DIR, config.DATASET.ROOT)
+
+    config.TEST.COCO_BBOX_FILE = os.path.join(
+        config.DATA_DIR, config.TEST.COCO_BBOX_FILE)
+
+    config.MODEL.PRETRAINED = os.path.join(
+        config.DATA_DIR, config.MODEL.PRETRAINED)
+
+
+def get_model_name(cfg):
+    name = cfg.MODEL.NAME
+    full_name = cfg.MODEL.NAME
+    extra = cfg.MODEL.EXTRA
+    if name in MODEL_EXTRAS :
+        name = '{model}_{num_layers}'.format(
+            model=name,
+            num_layers=extra.NUM_LAYERS)
+        deconv_suffix = ''.join(
+            'd{}'.format(num_filters)
+            for num_filters in extra.NUM_DECONV_FILTERS)
+        full_name = '{height}x{width}_{name}_{deconv_suffix}'.format(
+            height=cfg.MODEL.IMAGE_SIZE[1],
+            width=cfg.MODEL.IMAGE_SIZE[0],
+            name=name,
+            deconv_suffix=deconv_suffix)
+    else:
+        raise ValueError('Unkown model: {}'.format(cfg.MODEL))
+
+    return name, full_name
+
+
+if __name__ == '__main__':
+    import sys
+
+    gen_config(sys.argv[1])
diff --git a/lib/core/evaluate.py b/lib/core/evaluate.py
new file mode 100644
index 0000000..5fd0578
--- /dev/null
+++ b/lib/core/evaluate.py
@@ -0,0 +1,117 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import json
+import logging
+
+import numpy as np
+from sklearn.metrics import f1_score, precision_score, recall_score
+
+from core.inference import get_max_preds
+from utils.tabs import Tabs
+
+logger = logging.getLogger(__name__)
+
+
+def calc_dists(preds, target, normalize):
+    preds = preds.astype(np.float32)
+    target = target.astype(np.float32)
+    dists = np.zeros((preds.shape[1], preds.shape[0]))
+    for n in range(preds.shape[0]):
+        for c in range(preds.shape[1]):
+            if target[n, c, 0] > 1 and target[n, c, 1] > 1:
+                normed_preds = preds[n, c, :] / normalize[n]
+                normed_targets = target[n, c, :] / normalize[n]
+                dists[c, n] = np.linalg.norm(normed_preds - normed_targets)
+            else:
+                dists[c, n] = -1
+    return dists
+
+
+def dist_acc(dists, thr=0.5):
+    ''' Return percentage below threshold while ignoring values with a -1 '''
+    dist_cal = np.not_equal(dists, -1)
+    num_dist_cal = dist_cal.sum()
+    if num_dist_cal > 0:
+        return np.less(dists[dist_cal], thr).sum() * 1.0 / num_dist_cal
+    else:
+        return -1
+
+
+def accuracy(output, target, hm_type='gaussian', thr=0.5):
+    '''
+    Calculate accuracy according to PCK,
+    but uses ground truth heatmap rather than x,y locations
+    First value to be returned is average accuracy across 'idxs',
+    followed by individual accuracies
+    '''
+    idx = list(range(output.shape[1]))
+    norm = 1.0
+    if hm_type == 'gaussian':
+        pred, _ = get_max_preds(output)
+        target, _ = get_max_preds(target)
+        h = output.shape[2]
+        w = output.shape[3]
+        norm = np.ones((pred.shape[0], 2)) * np.array([h, w]) / 10
+    dists = calc_dists(pred, target, norm)
+
+    acc = np.zeros((len(idx) + 1))
+    avg_acc = 0
+    cnt = 0
+
+    for i in range(len(idx)):
+        acc[i + 1] = dist_acc(dists[idx[i]])
+        if acc[i + 1] >= 0:
+            avg_acc = avg_acc + acc[i + 1]
+            cnt += 1
+
+    avg_acc = avg_acc / cnt if cnt != 0 else 0
+    if cnt != 0:
+        acc[0] = avg_acc
+    return acc, avg_acc, cnt, pred
+
+
+def accuracy_vis(output, target, f1=False, save=None):
+    '''
+    Calculate accuracy according to PCK for visibilty
+    :param output: Prediction numpy array: either class (nb_preds, nb_joints) or model output (nb_preds, nb_joints, nb_classes)
+    :param target: Ground-truth numpy array (nb_preds, nb_joints)
+    :param f1: Boolean : compute and display or not f1 score
+    :param target: Path to save predictions and results to json
+    :return: accuracy
+    '''
+
+    lbls = [[i] for i in range(output.shape[2])] + [None]
+
+    output_preds = output
+    if len(output.shape) > 2:
+        output_preds = output.argmax(axis=2)
+    corrects = output_preds == target
+
+    if f1:
+        avg_mode = 'weighted'
+        flat_targ = target.flatten()
+        flat_out = output_preds.flatten()
+        prec_scs = []
+        reca_scs = []
+        f1_scs = []
+        for lb in lbls:
+            prec_scs.append(precision_score(flat_targ, flat_out, labels=lb, average=avg_mode, zero_division=0))
+            reca_scs.append(recall_score(flat_targ, flat_out, labels=lb, average=avg_mode, zero_division=0))
+            f1_scs.append(f1_score(flat_targ, flat_out, labels=lb, average=avg_mode, zero_division=0))
+
+        Tabs([prec_scs, reca_scs, f1_scs], lbls_r=['Prec', 'Reca', 'F1'], lbls_c=[str(lb) for lb in lbls],
+             logger=logger)
+
+    if save is not None:
+        with open(save, 'w') as f_out:
+            json.dump(dict([(l[0], l[1].tolist()) for l in [('target', target), ('output', output)]]), f_out)
+
+    return corrects.mean(), flat_out if f1 else None
diff --git a/lib/core/function.py b/lib/core/function.py
new file mode 100644
index 0000000..8bf372a
--- /dev/null
+++ b/lib/core/function.py
@@ -0,0 +1,393 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import json
+import logging
+import sys
+import time
+import os
+
+import numpy as np
+import torch
+import cv2
+
+from core.config import get_model_name
+from core.evaluate import accuracy, accuracy_vis
+from core.inference import get_final_preds, get_max_preds
+from utils.transforms import flip_back
+from utils.vis import save_debug_images
+from utils.debug import GradPlots, print_tensors
+
+logger = logging.getLogger(__name__)
+
+
+def train(config, train_loader, model, criterion, optimizer, epoch,
+          output_dir, tb_log_dir, writer_dict):
+    batch_time = AverageMeter()
+    data_time = AverageMeter()
+    losses = AverageMeter()
+    acc = AverageMeter()
+    acc_vis = AverageMeter()
+    losses_det = AverageMeters()
+
+    # switch to train mode
+    model.train()
+
+    end = time.time()
+    predict_vis = config.MODEL.PREDICT_VIS
+
+    grad_plot = GradPlots(key='fc')
+    for i, (input, target, target_weight, target_vis, meta) in enumerate(train_loader):
+        # measure data loading time
+        data_time.update(time.time() - end)
+
+        # compute output
+        output = model(input)
+        if predict_vis or type(output) == tuple:
+            output, out_vis = output
+        else:
+            out_vis = None
+
+        if config.MODEL.NB_VIS == 2:
+            target_vis = target_vis > 0
+            target_vis = target_vis.long()
+
+        target = target.cuda(non_blocking=True)
+        target_weight = target_weight.cuda(non_blocking=True)
+        target_vis = target_vis.cuda(non_blocking=True)
+
+        loss, loss_detail = criterion([output, out_vis], [target, target_vis], target_weight)
+
+        if config.DEBUG.DEBUG_MEMORY:
+            print_tensors()
+            sys.exit(0)
+
+        # compute gradient and do update step
+        optimizer.zero_grad()
+        loss.backward()
+
+        # plot_grad_flow(model.named_parameters())
+        # sys.exit(0)
+        # grad_plot.save_grads(model.named_parameters())
+
+        optimizer.step()
+
+        # measure accuracy and record loss
+        losses.update(loss.item(), input.size(0))
+        losses_det.update(loss_detail, input.size(0))
+
+        _, avg_acc, cnt, pred = accuracy(output.detach().cpu().numpy(),
+                                         target.detach().cpu().numpy())
+        acc.update(avg_acc, cnt)
+
+        if predict_vis:
+            accu_vis, _ = accuracy_vis(out_vis.detach().cpu().numpy(), target_vis.detach().cpu().numpy())
+            acc_vis.update(accu_vis, input.size(0))
+
+        # measure elapsed time
+        batch_time.update(time.time() - end)
+        end = time.time()
+
+        if i % config.PRINT_FREQ == 0:
+            msg = 'Epoch: [{0}][{1}/{2}]\t' \
+                  'Time {batch_time.val:.3f}s ({batch_time.avg:.3f}s)\t' \
+                  'Speed {speed:.1f} samples/s\t' \
+                  'Data {data_time.val:.3f}s ({data_time.avg:.3f}s)\t' \
+                  'Loss {loss.val:.5f} ({loss.avg:.5f})\t' \
+                  f'Loss_Det {" ".join([f"{l.val:.5f}" for l in losses_det])} ({" ".join([f"{l.avg:.5f}" for l in losses_det])})\t' \
+                  'Accuracy {acc.val:.3f} ({acc.avg:.3f})'.format(
+                epoch, i, len(train_loader), batch_time=batch_time,
+                speed=input.size(0) / batch_time.val,
+                data_time=data_time, loss=losses, acc=acc)
+            if predict_vis:
+                msg += f'\tAccu_vis {acc_vis.val:.3f} ({acc_vis.avg:.3f})'
+            logger.info(msg)
+
+            writer = writer_dict['writer']
+            global_steps = writer_dict['train_global_steps']
+            writer.add_scalar('train_loss', losses.val, global_steps)
+            writer.add_scalar('train_acc', acc.val, global_steps)
+            writer_dict['train_global_steps'] = global_steps + 1
+
+            prefix = '{}_{}'.format(os.path.join(output_dir, 'train'), i)
+            save_debug_images(config, input, meta, target, pred * 4, output,
+                              prefix)
+
+
+def validate(config, val_loader, val_dataset, model, criterion, output_dir,
+             tb_log_dir, writer_dict=None):
+    batch_time = AverageMeter()
+    losses = AverageMeter()
+    acc = AverageMeter()
+    acc_vis = AverageMeter()
+
+    losses_det = AverageMeters()
+
+    # switch to evaluate mode
+    model.eval()
+
+    num_samples = len(val_dataset)
+    all_preds = np.zeros((num_samples, config.MODEL.NUM_JOINTS, 3),
+                         dtype=np.float32)
+    all_boxes = np.zeros((num_samples, 6))
+    all_maps = np.zeros(
+        (num_samples, config.MODEL.NUM_JOINTS, config.MODEL.EXTRA.HEATMAP_SIZE[1], config.MODEL.EXTRA.HEATMAP_SIZE[0]),
+        dtype=np.float32)
+    all_gts = np.zeros((num_samples, config.MODEL.NUM_JOINTS, 3), dtype=np.float32)
+    all_gts_maps = np.zeros(
+        (num_samples, config.MODEL.NUM_JOINTS, config.MODEL.EXTRA.HEATMAP_SIZE[1], config.MODEL.EXTRA.HEATMAP_SIZE[0]),
+        dtype=np.float32)
+    all_preds_vis = np.zeros((num_samples, config.MODEL.NUM_JOINTS, config.MODEL.NB_VIS), dtype=np.float32)
+    all_gts_vis = np.zeros((num_samples, config.MODEL.NUM_JOINTS), dtype=np.int32)
+
+    all_names = []
+    image_path = []
+    filenames = []
+    imgnums = []
+    idx = 0
+
+    predict_vis = config.MODEL.PREDICT_VIS
+
+    with torch.no_grad():
+        end = time.time()
+        for i, (input, target, target_weight, target_vis, meta) in enumerate(val_loader):
+            # compute output
+            output = model(input)
+            if predict_vis or type(output) == tuple:
+                output, out_vis = output
+            else:
+                out_vis = None
+
+            if config.TEST.FLIP_TEST:
+                # this part is ugly, because pytorch has not supported negative index
+                # input_flipped = model(input[:, :, :, ::-1])
+                input_flipped = np.flip(input.cpu().numpy(), 3).copy()
+                input_flipped = torch.from_numpy(input_flipped).cuda()
+                # compute output
+                output_flipped = model(input_flipped)
+                if predict_vis or type(output_flipped) == tuple:
+                    output_flipped, out_vis_flipped = output_flipped
+                    out_vis = (out_vis + out_vis_flipped) * 0.5
+                else:
+                    out_vis_flipped = None
+
+                output_flipped = flip_back(output_flipped.cpu().numpy(),
+                                           val_dataset.flip_pairs)
+                output_flipped = torch.from_numpy(output_flipped.copy()).cuda()
+
+                # feature is not aligned, shift flipped heatmap for higher accuracy
+                if config.TEST.SHIFT_HEATMAP:
+                    output_flipped[:, :, :, 1:] = \
+                        output_flipped.clone()[:, :, :, 0:-1]
+                    # output_flipped[:, :, :, 0] = 0
+
+                output = (output + output_flipped) * 0.5
+
+            if config.MODEL.NB_VIS == 2:
+                target_vis = target_vis > 0
+                target_vis = target_vis.long()
+
+            if False:
+                t = target_vis < 1
+                for r in range(t.shape[0]):
+                    for c in range(t.shape[1]):
+                        if t[r][c]:
+                            m = output[r][c].max()
+                            if m > 0.6:
+                                ti = int(time.time())
+                                hm = output[r][c].mul(255).clamp(0, 255).byte().cpu().numpy()
+                                img = input[r].mul(255).clamp(0, 255).byte().permute(1, 2, 0).cpu().numpy()
+                                hmi = cv2.applyColorMap(cv2.resize(hm, (img.shape[1], img.shape[0])), cv2.COLORMAP_JET)
+                                cv2.imwrite(f'temp/{c}_{r}_{m}.png', hmi * 0.7 + 0.3 * img)
+
+            target = target.cuda(non_blocking=True)
+            target_weight = target_weight.cuda(non_blocking=True)
+            target_vis = target_vis.cuda(non_blocking=True)
+
+            loss, loss_detail = criterion([output, out_vis], [target, target_vis], target_weight)
+
+            num_images = input.size(0)
+            # measure accuracy and record loss
+            losses.update(loss.item(), num_images)
+            losses_det.update(loss_detail, num_images)
+
+            _, avg_acc, cnt, pred = accuracy(output.cpu().numpy(),
+                                             target.cpu().numpy())
+
+            acc.update(avg_acc, cnt)
+
+            if predict_vis:
+                accu_vis, _ = accuracy_vis(out_vis.cpu().numpy(), target_vis.cpu().numpy())
+                acc_vis.update(accu_vis, num_images)
+
+            # measure elapsed time
+            batch_time.update(time.time() - end)
+            end = time.time()
+
+            c = meta['center'].numpy()
+            s = meta['scale'].numpy()
+            score = meta['score'].numpy()
+
+            output_np = output.clone().cpu().numpy()
+
+            preds, maxvals = get_final_preds(
+                config, output_np, c, s)
+
+            target_cpu = target.clone().cpu().numpy()
+            target_vis_cpu = target_vis.cpu().numpy()
+            all_maps[idx:idx + num_images, :, :, :] = output_np
+            all_gts_maps[idx:idx + num_images, :, :, :] = target_cpu
+            all_gts[idx:idx + num_images, :, :2] = get_max_preds(target_cpu)[0]
+            all_gts[idx:idx + num_images, :, 2] = target_vis_cpu
+            all_names += [os.path.split(n)[1] for n in meta['image']]
+
+            all_preds[idx:idx + num_images, :, 0:2] = preds[:, :, 0:2]
+            all_preds[idx:idx + num_images, :, 2:3] = maxvals
+            # double check this all_boxes parts
+            all_boxes[idx:idx + num_images, 0:2] = c[:, 0:2]
+            all_boxes[idx:idx + num_images, 2:4] = s[:, 0:2]
+            all_boxes[idx:idx + num_images, 4] = np.prod(s * 200, 1)
+            all_boxes[idx:idx + num_images, 5] = score
+            image_path.extend(meta['image'])
+
+            if predict_vis:
+                all_preds_vis[idx:idx + num_images, :, :] = out_vis.cpu().numpy()
+                all_gts_vis[idx:idx + num_images, :] = target_vis_cpu
+
+            if config.DATASET.DATASET == 'posetrack':
+                filenames.extend(meta['filename'])
+                imgnums.extend(meta['imgnum'].numpy())
+
+            idx += num_images
+
+            if i % config.PRINT_FREQ == 0:
+                msg = 'Test: [{0}/{1}]\t' \
+                      'Time {batch_time.val:.3f} ({batch_time.avg:.3f})\t' \
+                      'Loss {loss.val:.5f} ({loss.avg:.5f})\t' \
+                      f'Loss_Det {" ".join([f"{l.val:.5f}" for l in losses_det])} ({" ".join([f"{l.avg:.5f}" for l in losses_det])})\t' \
+                      'Accuracy {acc.val:.3f} ({acc.avg:.3f})'.format(
+                    i, len(val_loader), batch_time=batch_time,
+                    loss=losses, acc=acc)
+                if predict_vis:
+                    msg += f'\tAccu_vis {acc_vis.val:.3f} ({acc_vis.avg:.3f})'
+                logger.info(msg)
+
+                prefix = '{}_{}'.format(os.path.join(output_dir, 'val'), i)
+                save_debug_images(config, input, meta, target, pred * 4, output,
+                                  prefix)
+
+        name_values, perf_indicator = val_dataset.evaluate(
+            config, all_preds, output_dir, all_boxes, image_path,
+            filenames, imgnums)
+
+        with open(os.path.join(output_dir, 'results', 'keypoints_%s_preds.json' % val_dataset.image_set), 'w') as f:
+            json.dump({'annotations': all_preds.tolist(), 'names': all_names}, f)
+
+        with open(os.path.join(output_dir, 'results', 'keypoints_%s_gts.json' % val_dataset.image_set), 'w') as f:
+            json.dump({'annotations': all_gts.tolist(), 'names': all_names}, f)
+
+        if predict_vis:
+            accu_vis, flat_out_vis = accuracy_vis(all_preds_vis, all_gts_vis, f1=True,
+                                                  save=os.path.join(output_dir, 'results', 'result_vis_val.json'))
+            logger.info(f"Total vis accuracy: {accu_vis:.3f}")
+
+            all_vis_filter = flat_out_vis.reshape((-1, 17)) > 0
+            all_preds_nnz = all_preds.copy()
+            for i in range(all_preds_nnz.shape[-1]):
+                all_preds_nnz[:, :, i] *= all_vis_filter
+
+            res_file = os.path.join(
+                output_dir, 'results', 'keypoints_%s_results_nnz.json' % val_dataset.image_set)
+
+            val_dataset.evaluate(
+                config, all_preds_nnz, output_dir, all_boxes, image_path,
+                filenames, imgnums, res_file=res_file)
+
+        # np.save('val_out.npy', all_maps)
+        # np.savez_compressed('eval_out', names=all_names, maps=all_maps)
+        # np.savez_compressed('eval_gts', names=all_names, maps=all_gts_maps)
+
+        _, full_arch_name = get_model_name(config)
+        if isinstance(name_values, list):
+            for name_value in name_values:
+                _print_name_value(name_value, full_arch_name)
+        else:
+            _print_name_value(name_values, full_arch_name)
+
+        if writer_dict:
+            writer = writer_dict['writer']
+            global_steps = writer_dict['valid_global_steps']
+            writer.add_scalar('valid_loss', losses.avg, global_steps)
+            writer.add_scalar('valid_acc', acc.avg, global_steps)
+            if isinstance(name_values, list):
+                for name_value in name_values:
+                    writer.add_scalars('valid', dict(name_value), global_steps)
+            else:
+                writer.add_scalars('valid', dict(name_values), global_steps)
+            writer_dict['valid_global_steps'] = global_steps + 1
+
+    return perf_indicator
+
+
+# markdown format output
+def _print_name_value(name_value, full_arch_name):
+    names = name_value.keys()
+    values = name_value.values()
+    num_values = len(name_value)
+    logger.info(
+        '| Arch ' +
+        ' '.join(['| {}'.format(name) for name in names]) +
+        ' |'
+    )
+    logger.info('|---' * (num_values + 1) + '|')
+    logger.info(
+        '| ' + full_arch_name + ' ' +
+        ' '.join(['| {:.3f}'.format(value) for value in values]) +
+        ' |'
+    )
+
+
+class AverageMeter(object):
+    """Computes and stores the average and current value"""
+
+    def __init__(self):
+        self.reset()
+
+    def reset(self):
+        self.val = 0
+        self.avg = 0
+        self.sum = 0
+        self.count = 0
+
+    def update(self, val, n=1):
+        self.val = val
+        self.sum += val * n
+        self.count += n
+        self.avg = self.sum / self.count if self.count != 0 else 0
+
+
+class AverageMeters(object):
+    def __init__(self):
+        self.meters = []
+
+    def update(self, vals, n=1):
+        if len(self.meters) < len(vals):
+            self.meters = [AverageMeter() for _ in vals]
+
+        for i, val in enumerate(vals):
+            self.meters[i].update(val.item(), n)
+
+    def reset(self):
+        for met in self.meters:
+            met.reset()
+
+    def __iter__(self):
+        for met in self.meters:
+            yield met
diff --git a/lib/core/inference.py b/lib/core/inference.py
new file mode 100644
index 0000000..dfbfb71
--- /dev/null
+++ b/lib/core/inference.py
@@ -0,0 +1,74 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import math
+
+import numpy as np
+
+from utils.transforms import transform_preds
+
+
+def get_max_preds(batch_heatmaps):
+    '''
+    get predictions from score maps
+    heatmaps: numpy.ndarray([batch_size, num_joints, height, width])
+    '''
+    assert isinstance(batch_heatmaps, np.ndarray), \
+        'batch_heatmaps should be numpy.ndarray'
+    assert batch_heatmaps.ndim == 4, 'batch_images should be 4-ndim'
+
+    batch_size = batch_heatmaps.shape[0]
+    num_joints = batch_heatmaps.shape[1]
+    width = batch_heatmaps.shape[3]
+    heatmaps_reshaped = batch_heatmaps.reshape((batch_size, num_joints, -1))
+    idx = np.argmax(heatmaps_reshaped, 2)
+    maxvals = np.amax(heatmaps_reshaped, 2)
+
+    maxvals = maxvals.reshape((batch_size, num_joints, 1))
+    idx = idx.reshape((batch_size, num_joints, 1))
+
+    preds = np.tile(idx, (1, 1, 2)).astype(np.float32)
+
+    preds[:, :, 0] = (preds[:, :, 0]) % width
+    preds[:, :, 1] = np.floor((preds[:, :, 1]) / width)
+
+    pred_mask = np.tile(np.greater(maxvals, 0.0), (1, 1, 2))
+    pred_mask = pred_mask.astype(np.float32)
+
+    preds *= pred_mask
+    return preds, maxvals
+
+
+def get_final_preds(config, batch_heatmaps, center, scale):
+    coords, maxvals = get_max_preds(batch_heatmaps)
+
+    heatmap_height = batch_heatmaps.shape[2]
+    heatmap_width = batch_heatmaps.shape[3]
+
+    # post-processing
+    if config.TEST.POST_PROCESS:
+        for n in range(coords.shape[0]):
+            for p in range(coords.shape[1]):
+                hm = batch_heatmaps[n][p]
+                px = int(math.floor(coords[n][p][0] + 0.5))
+                py = int(math.floor(coords[n][p][1] + 0.5))
+                if 1 < px < heatmap_width-1 and 1 < py < heatmap_height-1:
+                    diff = np.array([hm[py][px+1] - hm[py][px-1],
+                                     hm[py+1][px]-hm[py-1][px]])
+                    coords[n][p] += np.sign(diff) * .25
+
+    preds = coords.copy()
+
+    # Transform back
+    for i in range(coords.shape[0]):
+        preds[i] = transform_preds(coords[i], center[i], scale[i],
+                                   [heatmap_width, heatmap_height])
+
+    return preds, maxvals
diff --git a/lib/core/loss.py b/lib/core/loss.py
new file mode 100644
index 0000000..0f50b82
--- /dev/null
+++ b/lib/core/loss.py
@@ -0,0 +1,110 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import torch.nn as nn
+from abc import ABC, abstractmethod
+
+
+class JointsLoss(nn.Module, ABC):
+    def __init__(self, use_target_weight, use_vis=False):
+        super(JointsLoss, self).__init__()
+        self.criterion = None
+        self.use_target_weight = use_target_weight
+        self.use_vis = use_vis
+
+    def forward(self, outputs, targets, target_weights):
+        if self.use_vis:
+            return self._forward(*outputs, *targets, target_weight=target_weights)
+        else:
+            return self._forward(outputs[0], targets[0], target_weight=target_weights)
+
+    @abstractmethod
+    def _forward(self, outputs, targets, target_weights):
+        pass
+
+
+class JointsMSELoss(JointsLoss):
+    def __init__(self, use_target_weight):
+        super(JointsMSELoss, self).__init__(use_target_weight, use_vis=False)
+        self.criterion = nn.MSELoss(size_average=True)
+
+    def _forward(self, output, target, target_weight):
+        batch_size = output.size(0)
+        num_joints = output.size(1)
+        heatmaps_pred = output.reshape((batch_size, num_joints, -1)).split(1, 1)
+        heatmaps_gt = target.reshape((batch_size, num_joints, -1)).split(1, 1)
+        loss = 0
+
+        for idx in range(num_joints):
+            heatmap_pred = heatmaps_pred[idx].squeeze()
+            heatmap_gt = heatmaps_gt[idx].squeeze()
+            if self.use_target_weight:
+                loss += 0.5 * self.criterion(
+                    heatmap_pred.mul(target_weight[:, idx]),
+                    heatmap_gt.mul(target_weight[:, idx])
+                )
+            else:
+                loss += 0.5 * self.criterion(heatmap_pred, heatmap_gt)
+
+        loss /= num_joints
+        return loss, [loss]
+
+
+class JointsMSELossVis(JointsLoss):
+    def __init__(self, use_target_weight, vis_ratio=.5, vis_weight=None):
+        super(JointsMSELossVis, self).__init__(use_target_weight, use_vis=True)
+        self.criterion = nn.MSELoss(size_average=True)
+        self.vis_criterion = nn.CrossEntropyLoss(weight=vis_weight, size_average=True)
+
+        # Ratio loss_vis / loss_hm
+        self.vis_ratio = vis_ratio
+
+    def update_vis_ratio(self, factor):
+        self.vis_ratio += factor
+        if self.vis_ratio > 1:
+            self.vis_ratio = 1.
+        if self.vis_ratio < 0:
+            self.vis_ratio = 0.
+
+    def _forward(self, output, vis_preds, target, vis_gts, target_weight):
+        batch_size = output.size(0)
+        num_joints = output.size(1)
+        heatmaps_pred = output.reshape((batch_size, num_joints, -1)).split(1, 1)
+        heatmaps_gt = target.reshape((batch_size, num_joints, -1)).split(1, 1)
+
+        vis_preds = vis_preds.split(1, 1)
+        vis_gts = vis_gts.split(1, 1)
+
+        loss = 0
+        loss_vis = 0
+
+        for idx in range(num_joints):
+            heatmap_pred = heatmaps_pred[idx].squeeze(1)
+            heatmap_gt = heatmaps_gt[idx].squeeze(1)
+            vis_pred = vis_preds[idx].squeeze(1)
+            vis_gt = vis_gts[idx].squeeze(1)
+
+            if self.use_target_weight:
+                loss += 0.5 * self.criterion(
+                    heatmap_pred.mul(target_weight[:, idx]),
+                    heatmap_gt.mul(target_weight[:, idx])
+                )
+            else:
+                loss += 0.5 * self.criterion(heatmap_pred, heatmap_gt)
+
+            # 2.5E-3 provides aroud 50/50 ratio
+            l_vis = 0.5 * 2.5E-3 * self.vis_criterion(vis_pred, vis_gt)
+            
+            # print(l_vis)
+            loss_vis += l_vis
+
+        loss /= num_joints
+        loss_vis /= num_joints
+        return (loss * (1 - self.vis_ratio) + loss_vis * self.vis_ratio), [loss, loss_vis]
diff --git a/lib/dataset/JointsDataset.py b/lib/dataset/JointsDataset.py
new file mode 100644
index 0000000..5a39781
--- /dev/null
+++ b/lib/dataset/JointsDataset.py
@@ -0,0 +1,231 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import copy
+import logging
+import random
+
+import cv2
+import numpy as np
+import torch
+from torch.utils.data import Dataset
+
+from utils.transforms import get_affine_transform
+from utils.transforms import affine_transform
+from utils.transforms import fliplr_joints
+
+
+logger = logging.getLogger(__name__)
+
+
+class JointsDataset(Dataset):
+    def __init__(self, cfg, root, image_set, is_train, transform=None):
+        self.num_joints = 0
+        self.pixel_std = 200
+        self.flip_pairs = []
+        self.parent_ids = []
+
+        self.is_train = is_train
+        self.root = root
+        self.image_set = image_set
+
+        self.output_path = cfg.OUTPUT_DIR
+        self.data_format = cfg.DATASET.DATA_FORMAT
+
+        self.scale_factor = cfg.DATASET.SCALE_FACTOR
+        self.rotation_factor = cfg.DATASET.ROT_FACTOR
+        self.flip = cfg.DATASET.FLIP
+
+        self.image_size = cfg.MODEL.IMAGE_SIZE
+        self.target_type = cfg.MODEL.EXTRA.TARGET_TYPE
+        self.heatmap_size = cfg.MODEL.EXTRA.HEATMAP_SIZE
+        self.sigma = cfg.MODEL.EXTRA.SIGMA
+
+        self.transform = transform
+        self.db = []
+
+    def _get_db(self):
+        raise NotImplementedError
+
+    def evaluate(self, cfg, preds, output_dir, *args, **kwargs):
+        raise NotImplementedError
+
+    def __len__(self,):
+        return len(self.db)
+
+    def __getitem__(self, idx):
+        db_rec = copy.deepcopy(self.db[idx])
+
+        image_file = db_rec['image']
+        image_file = image_file.replace('\\', '/')
+
+        filename = db_rec['filename'] if 'filename' in db_rec else ''
+        imgnum = db_rec['imgnum'] if 'imgnum' in db_rec else ''
+
+        if self.data_format == 'zip':
+            from utils import zipreader
+            data_numpy = zipreader.imread(
+                image_file, cv2.IMREAD_COLOR | cv2.IMREAD_IGNORE_ORIENTATION)
+        else:
+            data_numpy = cv2.imread(
+                image_file, cv2.IMREAD_COLOR | cv2.IMREAD_IGNORE_ORIENTATION)
+
+        if data_numpy is None:
+            logger.error('=> fail to read {}'.format(image_file))
+            raise ValueError('Fail to read {}'.format(image_file))
+
+        joints = db_rec['joints_3d']
+        joints_vis = db_rec['joints_3d_vis']
+
+        c = db_rec['center']
+        s = db_rec['scale']
+        score = db_rec['score'] if 'score' in db_rec else 1
+        r = 0
+
+        if self.is_train:
+            sf = self.scale_factor
+            rf = self.rotation_factor
+            s = s * np.clip(np.random.randn()*sf + 1, 1 - sf, 1 + sf)
+            r = np.clip(np.random.randn()*rf, -rf*2, rf*2) \
+                if random.random() <= 0.6 else 0
+
+            if self.flip and random.random() <= 0.5:
+                data_numpy = data_numpy[:, ::-1, :]
+                joints, joints_vis = fliplr_joints(
+                    joints, joints_vis, data_numpy.shape[1], self.flip_pairs)
+                c[0] = data_numpy.shape[1] - c[0] - 1
+
+        trans = get_affine_transform(c, s, r, self.image_size)
+        input = cv2.warpAffine(
+            data_numpy,
+            trans,
+            (int(self.image_size[0]), int(self.image_size[1])),
+            flags=cv2.INTER_LINEAR)
+
+        if self.transform:
+            input = self.transform(input)
+            
+        # target_vis = np.zeros((self.num_joints, 3), dtype=np.float)
+        target_vis = np.zeros((self.num_joints), dtype=np.long)
+        for i in range(self.num_joints):
+            if joints_vis[i, 0] > 0.0:
+                joints[i, 0:2] = affine_transform(joints[i, 0:2], trans)
+            # target_vis[i, int(joints_vis[i, 0])] = 1.0
+            target_vis[i] = int(joints_vis[i, 0])
+
+        # target_vis = torch.from_numpy(target_vis).float()
+        target_vis = torch.from_numpy(target_vis).long()
+
+        target, target_weight = self.generate_target(joints, joints_vis)
+
+        target = torch.from_numpy(target)
+        target_weight = torch.from_numpy(target_weight)
+        
+        meta = {
+            'image': image_file,
+            'filename': filename,
+            'imgnum': imgnum,
+            'joints': joints,
+            'joints_vis': joints_vis,
+            'center': c,
+            'scale': s,
+            'rotation': r,
+            'score': score
+        }
+
+        return input, target, target_weight, target_vis, meta
+
+    def select_data(self, db):
+        db_selected = []
+        for rec in db:
+            num_vis = 0
+            joints_x = 0.0
+            joints_y = 0.0
+            for joint, joint_vis in zip(
+                    rec['joints_3d'], rec['joints_3d_vis']):
+                if joint_vis[0] <= 0:
+                    continue
+                num_vis += 1
+
+                joints_x += joint[0]
+                joints_y += joint[1]
+            if num_vis == 0:
+                continue
+
+            joints_x, joints_y = joints_x / num_vis, joints_y / num_vis
+
+            area = rec['scale'][0] * rec['scale'][1] * (self.pixel_std**2)
+            joints_center = np.array([joints_x, joints_y])
+            bbox_center = np.array(rec['center'])
+            diff_norm2 = np.linalg.norm((joints_center-bbox_center), 2)
+            ks = np.exp(-1.0*(diff_norm2**2) / ((0.2)**2*2.0*area))
+
+            metric = (0.2 / 16) * num_vis + 0.45 - 0.2 / 16
+            if ks > metric:
+                db_selected.append(rec)
+
+        logger.info('=> num db: {}'.format(len(db)))
+        logger.info('=> num selected db: {}'.format(len(db_selected)))
+        return db_selected
+
+    def generate_target(self, joints, joints_vis):
+        '''
+        :param joints:  [num_joints, 3]
+        :param joints_vis: [num_joints, 3]
+        :return: target, target_weight(1: visible, 0: invisible)
+        '''
+        target_weight = np.ones((self.num_joints, 1), dtype=np.float32)
+        target_weight[:, 0] *= (joints_vis[:, 0] > 0)
+
+        assert self.target_type == 'gaussian', \
+            'Only support gaussian map now!'
+
+        if self.target_type == 'gaussian':
+            target = np.zeros((self.num_joints,
+                               self.heatmap_size[1],
+                               self.heatmap_size[0]),
+                              dtype=np.float32)
+
+            tmp_size = self.sigma * 3
+
+            for joint_id in range(self.num_joints):
+                feat_stride = self.image_size / self.heatmap_size
+                mu_x = int(joints[joint_id][0] / feat_stride[0] + 0.5)
+                mu_y = int(joints[joint_id][1] / feat_stride[1] + 0.5)
+                # Check that any part of the gaussian is in-bounds
+                ul = [int(mu_x - tmp_size), int(mu_y - tmp_size)]
+                br = [int(mu_x + tmp_size + 1), int(mu_y + tmp_size + 1)]
+                if ul[0] >= self.heatmap_size[0] or ul[1] >= self.heatmap_size[1] \
+                        or br[0] < 0 or br[1] < 0:
+                    # If not, just return the image as is
+                    target_weight[joint_id] = 0
+                    continue
+
+                # # Generate gaussian
+                size = 2 * tmp_size + 1
+                x = np.arange(0, size, 1, np.float32)
+                y = x[:, np.newaxis]
+                x0 = y0 = size // 2
+                # The gaussian is not normalized, we want the center value to equal 1
+                g = np.exp(- ((x - x0) ** 2 + (y - y0) ** 2) / (2 * self.sigma ** 2))
+
+                # Usable gaussian range
+                g_x = max(0, -ul[0]), min(br[0], self.heatmap_size[0]) - ul[0]
+                g_y = max(0, -ul[1]), min(br[1], self.heatmap_size[1]) - ul[1]
+                # Image range
+                img_x = max(0, ul[0]), min(br[0], self.heatmap_size[0])
+                img_y = max(0, ul[1]), min(br[1], self.heatmap_size[1])
+
+                v = target_weight[joint_id]
+                if v > 0.5:
+                    target[joint_id][img_y[0]:img_y[1], img_x[0]:img_x[1]] = \
+                        g[g_y[0]:g_y[1], g_x[0]:g_x[1]]
+
+        return target, target_weight
diff --git a/lib/dataset/__init__.py b/lib/dataset/__init__.py
new file mode 100644
index 0000000..144268e
--- /dev/null
+++ b/lib/dataset/__init__.py
@@ -0,0 +1,14 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from .mpii import MPIIDataset as mpii
+from .coco import COCODataset as coco
+from .dripe import DriPEDataset as dripe
+from .demo_loader import DemoLoader as demo_loader
\ No newline at end of file
diff --git a/lib/dataset/coco.py b/lib/dataset/coco.py
new file mode 100644
index 0000000..37a2d52
--- /dev/null
+++ b/lib/dataset/coco.py
@@ -0,0 +1,412 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import logging
+import os
+import pickle
+from collections import defaultdict
+from collections import OrderedDict
+
+import json_tricks as json
+import numpy as np
+from pycocotools.coco import COCO
+from pycocotools.cocoeval import COCOeval
+
+from dataset.JointsDataset import JointsDataset
+from nms.nms import oks_nms
+
+logger = logging.getLogger(__name__)
+
+
+class COCODataset(JointsDataset):
+    '''
+    "keypoints": {
+        0: "nose",
+        1: "left_eye",
+        2: "right_eye",
+        3: "left_ear",
+        4: "right_ear",
+        5: "left_shoulder",
+        6: "right_shoulder",
+        7: "left_elbow",
+        8: "right_elbow",
+        9: "left_wrist",
+        10: "right_wrist",
+        11: "left_hip",
+        12: "right_hip",
+        13: "left_knee",
+        14: "right_knee",
+        15: "left_ankle",
+        16: "right_ankle"
+    },
+	"skeleton": [
+        [16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13], [6,7],[6,8],
+        [7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
+    '''
+
+    def __init__(self, cfg, root, image_set, is_train, transform=None):
+        super().__init__(cfg, root, image_set, is_train, transform)
+        self.nms_thre = cfg.TEST.NMS_THRE
+        self.image_thre = cfg.TEST.IMAGE_THRE
+        self.oks_thre = cfg.TEST.OKS_THRE
+        self.in_vis_thre = cfg.TEST.IN_VIS_THRE
+        self.bbox_file = cfg.TEST.COCO_BBOX_FILE
+        self.use_gt_bbox = cfg.TEST.USE_GT_BBOX
+        self.image_width = cfg.MODEL.IMAGE_SIZE[0]
+        self.image_height = cfg.MODEL.IMAGE_SIZE[1]
+        self.aspect_ratio = self.image_width * 1.0 / self.image_height
+        self.pixel_std = 200
+        self.coco = COCO(self._get_ann_file_keypoint())
+
+        # deal with class names
+        cats = [cat['name']
+                for cat in self.coco.loadCats(self.coco.getCatIds())]
+        self.classes = ['__background__'] + cats
+        logger.info('=> classes: {}'.format(self.classes))
+        self.num_classes = len(self.classes)
+        self._class_to_ind = dict(zip(self.classes, range(self.num_classes)))
+        self._class_to_coco_ind = dict(zip(cats, self.coco.getCatIds()))
+        self._coco_ind_to_class_ind = dict([(self._class_to_coco_ind[cls],
+                                             self._class_to_ind[cls])
+                                            for cls in self.classes[1:]])
+
+        # load image file names
+        self.image_set_index = self._load_image_set_index()
+        self.num_images = len(self.image_set_index)
+        logger.info('=> num_images: {}'.format(self.num_images))
+
+        self.num_joints = 17
+        self.flip_pairs = [[1, 2], [3, 4], [5, 6], [7, 8],
+                           [9, 10], [11, 12], [13, 14], [15, 16]]
+        self.parent_ids = None
+
+        self.db = self._get_db()
+
+        if is_train and cfg.DATASET.SELECT_DATA:
+            self.db = self.select_data(self.db)
+
+        logger.info('=> load {} samples'.format(len(self.db)))
+
+    def _get_ann_file_keypoint(self):
+        """ self.root / annotations / person_keypoints_train2017.json """
+        prefix = 'person_keypoints' \
+            if 'test' not in self.image_set else 'image_info'
+        return os.path.join(self.root, 'annotations',
+                            prefix + '_' + self.image_set + '.json')
+
+    def _load_image_set_index(self):
+        """ image id: int """
+        image_ids = self.coco.getImgIds()
+        return image_ids
+
+    def _get_db(self):
+        if self.is_train or self.use_gt_bbox:
+            # use ground truth bbox
+            gt_db = self._load_coco_keypoint_annotations()
+        else:
+            # use bbox from detection
+            gt_db = self._load_coco_person_detection_results()
+        return gt_db
+
+    def _load_coco_keypoint_annotations(self):
+        """ ground truth bbox and keypoints """
+        gt_db = []
+        for index in self.image_set_index:
+            gt_db.extend(self._load_coco_keypoint_annotation_kernal(index))
+        return gt_db
+
+    def _load_coco_keypoint_annotation_kernal(self, index):
+        """
+        coco ann: [u'segmentation', u'area', u'iscrowd', u'image_id', u'bbox', u'category_id', u'id']
+        iscrowd:
+            crowd instances are handled by marking their overlaps with all categories to -1
+            and later excluded in training
+        bbox:
+            [x1, y1, w, h]
+        :param index: coco image id
+        :return: db entry
+        """
+        im_ann = self.coco.loadImgs(index)[0]
+        width = im_ann['width']
+        height = im_ann['height']
+
+        annIds = self.coco.getAnnIds(imgIds=index, iscrowd=False)
+        objs = self.coco.loadAnns(annIds)
+
+        # sanitize bboxes
+        valid_objs = []
+        for obj in objs:
+            x, y, w, h = obj['bbox']
+            x1 = np.max((0, x))
+            y1 = np.max((0, y))
+            x2 = np.min((width - 1, x1 + np.max((0, w - 1))))
+            y2 = np.min((height - 1, y1 + np.max((0, h - 1))))
+            if obj['area'] > 0 and x2 >= x1 and y2 >= y1:
+                # obj['clean_bbox'] = [x1, y1, x2, y2]
+                obj['clean_bbox'] = [x1, y1, x2 - x1, y2 - y1]
+                valid_objs.append(obj)
+        objs = valid_objs
+
+        rec = []
+        for obj in objs:
+            cls = self._coco_ind_to_class_ind[obj['category_id']]
+            if cls != 1:
+                continue
+
+            # ignore objs without keypoints annotation
+            if max(obj['keypoints']) == 0:
+                continue
+
+            joints_3d = np.zeros((self.num_joints, 3), dtype=np.float)
+            joints_3d_vis = np.zeros((self.num_joints, 3), dtype=np.float)
+            for ipt in range(self.num_joints):
+                joints_3d[ipt, 0] = obj['keypoints'][ipt * 3 + 0]
+                joints_3d[ipt, 1] = obj['keypoints'][ipt * 3 + 1]
+                joints_3d[ipt, 2] = 0
+                t_vis = obj['keypoints'][ipt * 3 + 2]
+                # if t_vis > 1:
+                #     t_vis = 1
+                joints_3d_vis[ipt, 0] = t_vis
+                joints_3d_vis[ipt, 1] = t_vis
+                joints_3d_vis[ipt, 2] = 0
+
+            center, scale = self._box2cs(obj['clean_bbox'][:4])
+            rec.append({
+                'image': self.image_path_from_index(index),
+                'center': center,
+                'scale': scale,
+                'joints_3d': joints_3d,
+                'joints_3d_vis': joints_3d_vis,
+                'filename': '',
+                'imgnum': 0,
+            })
+
+        return rec
+
+    def _box2cs(self, box):
+        x, y, w, h = box[:4]
+        return self._xywh2cs(x, y, w, h)
+
+    def _xywh2cs(self, x, y, w, h):
+        center = np.zeros((2), dtype=np.float32)
+        center[0] = x + w * 0.5
+        center[1] = y + h * 0.5
+
+        if w > self.aspect_ratio * h:
+            h = w * 1.0 / self.aspect_ratio
+        elif w < self.aspect_ratio * h:
+            w = h * self.aspect_ratio
+        scale = np.array(
+            [w * 1.0 / self.pixel_std, h * 1.0 / self.pixel_std],
+            dtype=np.float32)
+        if center[0] != -1:
+            scale = scale * 1.25
+
+        return center, scale
+
+    def image_path_from_index(self, index):
+        """ example: images / train2017 / 000000119993.jpg """
+        file_name = '%012d.jpg' % index
+        if '2014' in self.image_set:
+            file_name = 'COCO_%s_' % self.image_set + file_name
+
+        prefix = 'test2017' if 'test' in self.image_set else self.image_set
+
+        data_name = prefix + '.zip@' if self.data_format == 'zip' else prefix
+
+        image_path = os.path.join(
+            self.root, 'images', data_name, file_name)
+
+        return image_path
+
+    def _load_coco_person_detection_results(self):
+        all_boxes = None
+        with open(self.bbox_file, 'r') as f:
+            all_boxes = json.load(f)
+
+        if not all_boxes:
+            logger.error('=> Load %s fail!' % self.bbox_file)
+            return None
+
+        logger.info('=> Total boxes: {}'.format(len(all_boxes)))
+
+        kpt_db = []
+        num_boxes = 0
+        for n_img in range(0, len(all_boxes)):
+            det_res = all_boxes[n_img]
+            if det_res['category_id'] != 1:
+                continue
+            img_name = self.image_path_from_index(det_res['image_id'])
+            box = det_res['bbox']
+            score = det_res['score']
+
+            if score < self.image_thre:
+                continue
+
+            num_boxes = num_boxes + 1
+
+            center, scale = self._box2cs(box)
+            joints_3d = np.zeros((self.num_joints, 3), dtype=np.float)
+            joints_3d_vis = np.ones(
+                (self.num_joints, 3), dtype=np.float)
+            kpt_db.append({
+                'image': img_name,
+                'center': center,
+                'scale': scale,
+                'score': score,
+                'joints_3d': joints_3d,
+                'joints_3d_vis': joints_3d_vis,
+            })
+
+        logger.info('=> Total boxes after filter low score@{}: {}'.format(
+            self.image_thre, num_boxes))
+        return kpt_db
+
+    # need double check this API and classes field
+    def evaluate(self, cfg, preds, output_dir, all_boxes, img_path,
+                 *args, **kwargs):
+        res_folder = os.path.join(output_dir, 'results')
+        if not os.path.exists(res_folder):
+            os.makedirs(res_folder)
+        res_file = os.path.join(
+            res_folder, 'keypoints_%s_results.json' % self.image_set)
+        if 'res_file' in kwargs:
+            res_file = kwargs['res_file']
+
+        # person x (keypoints)
+        _kpts = []
+        for idx, kpt in enumerate(preds):
+            _kpts.append({
+                'keypoints': kpt,
+                'center': all_boxes[idx][0:2],
+                'scale': all_boxes[idx][2:4],
+                'area': all_boxes[idx][4],
+                'score': all_boxes[idx][5],
+                'image': int(img_path[idx][-16:-4])
+            })
+        # image x person x (keypoints)
+        kpts = defaultdict(list)
+        for kpt in _kpts:
+            kpts[kpt['image']].append(kpt)
+
+        # rescoring and oks nms
+        num_joints = self.num_joints
+        in_vis_thre = self.in_vis_thre
+        oks_thre = self.oks_thre
+        oks_nmsed_kpts = []
+
+        for img in kpts.keys():
+            img_kpts = kpts[img]
+            for n_p in img_kpts:
+                box_score = n_p['score']
+                kpt_score = 0
+                valid_num = 0
+                for n_jt in range(0, num_joints):
+                    t_s = n_p['keypoints'][n_jt][2]
+                    if t_s > in_vis_thre:
+                        kpt_score = kpt_score + t_s
+                        valid_num = valid_num + 1
+                if valid_num != 0:
+                    kpt_score = kpt_score / valid_num
+                # rescoring
+                n_p['score'] = kpt_score * box_score
+            keep = oks_nms([img_kpts[i] for i in range(len(img_kpts))],
+                           oks_thre)
+            if len(keep) == 0:
+                oks_nmsed_kpts.append(img_kpts)
+            else:
+                oks_nmsed_kpts.append([img_kpts[_keep] for _keep in keep])
+
+        self._write_coco_keypoint_results(
+            oks_nmsed_kpts, res_file)
+        if 'test' not in self.image_set:
+            info_str = self._do_python_keypoint_eval(
+                res_file, res_folder)
+            name_value = OrderedDict(info_str)
+            return name_value, name_value['AP']
+        else:
+            return {'Null': 0}, 0
+
+    def _write_coco_keypoint_results(self, keypoints, res_file):
+        data_pack = [{'cat_id': self._class_to_coco_ind[cls],
+                      'cls_ind': cls_ind,
+                      'cls': cls,
+                      'ann_type': 'keypoints',
+                      'keypoints': keypoints
+                      }
+                     for cls_ind, cls in enumerate(self.classes) if not cls == '__background__']
+
+        results = self._coco_keypoint_results_one_category_kernel(data_pack[0])
+        logger.info('=> Writing results json to %s' % res_file)
+        with open(res_file, 'w') as f:
+            json.dump(results, f, sort_keys=True, indent=4)
+        try:
+            json.load(open(res_file))
+        except Exception:
+            content = []
+            with open(res_file, 'r') as f:
+                for line in f:
+                    content.append(line)
+            content[-1] = ']'
+            with open(res_file, 'w') as f:
+                for c in content:
+                    f.write(c)
+
+    def _coco_keypoint_results_one_category_kernel(self, data_pack):
+        cat_id = data_pack['cat_id']
+        keypoints = data_pack['keypoints']
+        cat_results = []
+
+        for img_kpts in keypoints:
+            if len(img_kpts) == 0:
+                continue
+
+            _key_points = np.array([img_kpts[k]['keypoints']
+                                    for k in range(len(img_kpts))])
+            key_points = np.zeros(
+                (_key_points.shape[0], self.num_joints * 3), dtype=np.float)
+
+            for ipt in range(self.num_joints):
+                key_points[:, ipt * 3 + 0] = _key_points[:, ipt, 0]
+                key_points[:, ipt * 3 + 1] = _key_points[:, ipt, 1]
+                key_points[:, ipt * 3 + 2] = _key_points[:, ipt, 2]  # keypoints score.
+
+            result = [{'image_id': img_kpts[k]['image'],
+                       'category_id': cat_id,
+                       'keypoints': list(key_points[k]),
+                       'score': img_kpts[k]['score'],
+                       'center': list(img_kpts[k]['center']),
+                       'scale': list(img_kpts[k]['scale'])
+                       } for k in range(len(img_kpts))]
+            cat_results.extend(result)
+
+        return cat_results
+
+    def _do_python_keypoint_eval(self, res_file, res_folder):
+        coco_dt = self.coco.loadRes(res_file)
+        coco_eval = COCOeval(self.coco, coco_dt, 'keypoints')
+        coco_eval.params.useSegm = None
+        coco_eval.evaluate()
+        coco_eval.accumulate()
+        coco_eval.summarize()
+        stats_names = ['AP', 'Ap .5', 'AP .75', 'AP (M)', 'AP (L)', 'AR', 'AR .5', 'AR .75', 'AR (M)', 'AR (L)']
+
+        info_str = []
+        for ind, name in enumerate(stats_names):
+            info_str.append((name, coco_eval.stats[ind]))
+
+        eval_file = os.path.join(
+            res_folder, 'keypoints_%s_results.pkl' % self.image_set)
+
+        with open(eval_file, 'wb') as f:
+            pickle.dump(coco_eval, f, pickle.HIGHEST_PROTOCOL)
+        logger.info('=> coco eval results saved to %s' % eval_file)
+
+        return info_str
diff --git a/lib/dataset/demo_loader.py b/lib/dataset/demo_loader.py
new file mode 100644
index 0000000..f317fdf
--- /dev/null
+++ b/lib/dataset/demo_loader.py
@@ -0,0 +1,188 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import logging
+import copy
+import os
+import pickle
+from collections import defaultdict
+from collections import OrderedDict
+import glob
+import json_tricks as json
+import random
+
+import numpy as np
+import cv2
+import torch
+from torch.utils.data import Dataset
+
+from dataset.JointsDataset import get_affine_transform
+from utils.transforms import get_affine_transform
+from utils.transforms import affine_transform
+
+logger = logging.getLogger(__name__)
+
+
+class DemoLoader(Dataset):
+    '''
+    "keypoints": {
+        0: "nose",
+        1: "left_eye",
+        2: "right_eye",
+        3: "left_ear",
+        4: "right_ear",
+        5: "left_shoulder",
+        6: "right_shoulder",
+        7: "left_elbow",
+        8: "right_elbow",
+        9: "left_wrist",
+        10: "right_wrist",
+        11: "left_hip",
+        12: "right_hip",
+        13: "left_knee",
+        14: "right_knee",
+        15: "left_ankle",
+        16: "right_ankle"
+    },
+	"skeleton": [
+        [16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13], [6,7],[6,8],
+        [7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
+    '''
+
+    def __init__(self, cfg, root, image_set, is_train, transform=None):
+        self.nms_thre = cfg.TEST.NMS_THRE
+        self.image_thre = cfg.TEST.IMAGE_THRE
+        self.oks_thre = cfg.TEST.OKS_THRE
+        self.in_vis_thre = cfg.TEST.IN_VIS_THRE
+        self.bbox_file = cfg.TEST.COCO_BBOX_FILE
+        self.use_gt_bbox = cfg.TEST.USE_GT_BBOX
+        self.image_width = cfg.MODEL.IMAGE_SIZE[0]
+        self.image_height = cfg.MODEL.IMAGE_SIZE[1]
+        self.aspect_ratio = self.image_width * 1.0 / self.image_height
+        self.pixel_std = 200
+
+        # load image file names
+        self.image_size = cfg.MODEL.IMAGE_SIZE
+        self.image_list = glob.glob('demo/*.png') + glob.glob('demo/*.jpg') + glob.glob('demo/*.jpeg')
+        self.num_images = len(self.image_list)
+        logger.info('=> num_images: {}'.format(self.num_images))
+
+        self.is_train = False
+        self.root = root
+        self.image_set = image_set
+        self.transform = transform
+        self.num_joints = 17
+
+    def __len__(self, ):
+        return len(self.image_list)
+
+    def __getitem__(self, idx):
+        image_file = self.image_list[idx]
+        image_file = image_file.replace('\\', '/')
+
+        data_numpy = cv2.imread(
+            image_file, cv2.IMREAD_COLOR | cv2.IMREAD_IGNORE_ORIENTATION)
+
+        if data_numpy is None:
+            logger.error('=> fail to read {}'.format(image_file))
+            raise ValueError('Fail to read {}'.format(image_file))
+
+        c, s = self._get_cs(data_numpy.shape)
+        r = 0
+
+        trans = get_affine_transform(c, s, r, self.image_size)
+        input = cv2.warpAffine(
+            data_numpy,
+            trans,
+            (int(self.image_size[0]), int(self.image_size[1])),
+            flags=cv2.INTER_LINEAR)
+
+        if self.transform:
+            input = self.transform(input)
+
+        meta = {
+            'image': image_file,
+            'center': c,
+            'scale': s,
+            'rotation': r,
+        }
+
+        return input, meta
+
+    def _get_cs(self, img_shape):
+        h, w = img_shape[:2]
+
+        center = np.zeros((2), dtype=np.float32)
+        center[0] = w * 0.5
+        center[1] = h * 0.5
+
+        if w > self.aspect_ratio * h:
+            h = w * 1.0 / self.aspect_ratio
+        elif w < self.aspect_ratio * h:
+            w = h * self.aspect_ratio
+        scale = np.array(
+            [w * 1.0 / self.pixel_std, h * 1.0 / self.pixel_std],
+            dtype=np.float32)
+        if center[0] != -1:
+            scale = scale * 1.25
+
+        return center, scale
+
+    def _write_coco_keypoint_results(self, keypoints, res_file):
+        data_pack = [
+            {
+                'ann_type': 'keypoints',
+                'keypoints': keypoints
+            }
+        ]
+
+        results = self._coco_keypoint_results_one_category_kernel(data_pack[0])
+        logger.info('=> Writing results json to %s' % res_file)
+        with open(res_file, 'w') as f:
+            json.dump(results, f, sort_keys=True, indent=4)
+        try:
+            json.load(open(res_file))
+        except Exception:
+            content = []
+            with open(res_file, 'r') as f:
+                for line in f:
+                    content.append(line)
+            content[-1] = ']'
+            with open(res_file, 'w') as f:
+                for c in content:
+                    f.write(c)
+
+    def _coco_keypoint_results_one_category_kernel(self, data_pack):
+        keypoints = data_pack['keypoints']
+        cat_results = []
+
+        for img_kpts in keypoints:
+            if len(img_kpts) == 0:
+                continue
+
+            _key_points = np.array([img_kpts[k]['keypoints']
+                                    for k in range(len(img_kpts))])
+            key_points = np.zeros(
+                (_key_points.shape[0], self.num_joints * 3), dtype=np.float)
+
+            for ipt in range(self.num_joints):
+                key_points[:, ipt * 3 + 0] = _key_points[:, ipt, 0]
+                key_points[:, ipt * 3 + 1] = _key_points[:, ipt, 1]
+                key_points[:, ipt * 3 + 2] = _key_points[:, ipt, 2]  # keypoints score.
+
+            result = [{'image_id': img_kpts[k]['image'],
+                       'keypoints': list(key_points[k]),
+                       'score': img_kpts[k]['score'],
+                       'center': list(img_kpts[k]['center']),
+                       'scale': list(img_kpts[k]['scale'])
+                       } for k in range(len(img_kpts))]
+            cat_results.extend(result)
+
+        return cat_results
diff --git a/lib/dataset/dripe.py b/lib/dataset/dripe.py
new file mode 100644
index 0000000..7705945
--- /dev/null
+++ b/lib/dataset/dripe.py
@@ -0,0 +1,417 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import logging
+import os
+import pickle
+from collections import defaultdict
+from collections import OrderedDict
+
+import json_tricks as json
+import numpy as np
+from pycocotools.coco import COCO
+from pycocotools.cocoeval import COCOeval
+
+from dataset.JointsDataset import JointsDataset
+from nms.nms import oks_nms
+
+
+logger = logging.getLogger(__name__)
+
+
+class DriPEDataset(JointsDataset):
+    '''
+    "keypoints": {
+        0: "nose",
+        1: "left_eye",
+        2: "right_eye",
+        3: "left_ear",
+        4: "right_ear",
+        5: "left_shoulder",
+        6: "right_shoulder",
+        7: "left_elbow",
+        8: "right_elbow",
+        9: "left_wrist",
+        10: "right_wrist",
+        11: "left_hip",
+        12: "right_hip",
+        13: "left_knee",
+        14: "right_knee",
+        15: "left_ankle",
+        16: "right_ankle"
+    },
+	"skeleton": [
+        [16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13], [6,7],[6,8],
+        [7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
+    '''
+    def __init__(self, cfg, root, image_set, is_train, transform=None):
+        super().__init__(cfg, root, image_set, is_train, transform)
+        self.nms_thre = cfg.TEST.NMS_THRE
+        self.image_thre = cfg.TEST.IMAGE_THRE
+        self.oks_thre = cfg.TEST.OKS_THRE
+        self.in_vis_thre = cfg.TEST.IN_VIS_THRE
+        self.bbox_file = cfg.TEST.COCO_BBOX_FILE
+        self.use_gt_bbox = cfg.TEST.USE_GT_BBOX
+        self.image_width = cfg.MODEL.IMAGE_SIZE[0]
+        self.image_height = cfg.MODEL.IMAGE_SIZE[1]
+        self.aspect_ratio = self.image_width * 1.0 / self.image_height
+        self.pixel_std = 200
+        self.coco = COCO(self._get_ann_file_keypoint())
+        self.ids_to_name = dict([(im['id'], im['file_name']) for im in self.coco.imgs.values()])
+        self.name_to_ids = dict([(im['file_name'], im['id']) for im in self.coco.imgs.values()])
+        
+
+        # deal with class names
+        cats = [cat['name']
+                for cat in self.coco.loadCats(self.coco.getCatIds())]
+        self.classes = ['__background__'] + cats
+        logger.info('=> classes: {}'.format(self.classes))
+        self.num_classes = len(self.classes)
+        self._class_to_ind = dict(zip(self.classes, range(self.num_classes)))
+        self._class_to_coco_ind = dict(zip(cats, self.coco.getCatIds()))
+        self._coco_ind_to_class_ind = dict([(self._class_to_coco_ind[cls],
+                                             self._class_to_ind[cls])
+                                            for cls in self.classes[1:]])
+
+        # load image file names
+        self.image_set_index = self._load_image_set_index()
+        self.num_images = len(self.image_set_index)
+        logger.info('=> num_images: {}'.format(self.num_images))
+
+        self.num_joints = 17
+        self.flip_pairs = [[1, 2], [3, 4], [5, 6], [7, 8],
+                           [9, 10], [11, 12], [13, 14], [15, 16]]
+        self.parent_ids = None
+
+        self.db = self._get_db()
+
+        if is_train and cfg.DATASET.SELECT_DATA:
+            self.db = self.select_data(self.db)
+
+        logger.info('=> load {} samples'.format(len(self.db)))
+
+    def _get_ann_file_keypoint(self):
+        """ self.root / annotations / person_keypoints_train2017.json """
+        prefix = 'dripe_coco'
+
+        return os.path.join(self.root, 'annotations', self.image_set + '.json')
+
+    def _load_image_set_index(self):
+        """ image id: int """
+        image_ids = self.coco.getImgIds()
+        return image_ids
+
+    def _get_db(self):
+        if self.is_train or self.use_gt_bbox:
+            # use ground truth bbox
+            gt_db = self._load_coco_keypoint_annotations()
+        else:
+            # use bbox from detection            
+            gt_db = self._load_coco_person_detection_results()
+        return gt_db
+
+    def _load_coco_keypoint_annotations(self):
+        """ ground truth bbox and keypoints """
+        gt_db = []
+        for index in self.image_set_index:
+            gt_db.extend(self._load_coco_keypoint_annotation_kernal(index))
+        return gt_db
+
+    def _load_coco_keypoint_annotation_kernal(self, index):
+        """
+        coco ann: [u'segmentation', u'area', u'iscrowd', u'image_id', u'bbox', u'category_id', u'id']
+        iscrowd:
+            crowd instances are handled by marking their overlaps with all categories to -1
+            and later excluded in training
+        bbox:
+            [x1, y1, w, h]
+        :param index: coco image id
+        :return: db entry
+        """
+        im_ann = self.coco.loadImgs(index)[0]
+        width = im_ann['width']
+        height = im_ann['height']
+
+        annIds = self.coco.getAnnIds(imgIds=index, iscrowd=False)
+        objs = self.coco.loadAnns(annIds)
+
+        # sanitize bboxes
+        valid_objs = []
+        for obj in objs:
+            x, y, w, h = obj['bbox']
+            x1 = np.max((0, x))
+            y1 = np.max((0, y))
+            x2 = np.min((width - 1, x1 + np.max((0, w - 1))))
+            y2 = np.min((height - 1, y1 + np.max((0, h - 1))))
+            if obj['area'] > 0 and x2 >= x1 and y2 >= y1:
+                # obj['clean_bbox'] = [x1, y1, x2, y2]
+                obj['clean_bbox'] = [x1, y1, x2-x1, y2-y1]
+                valid_objs.append(obj)
+        objs = valid_objs
+
+        rec = []
+        for obj in objs:
+            cls = self._coco_ind_to_class_ind[obj['category_id']]
+            if cls != 1:
+                continue
+
+            # ignore objs without keypoints annotation
+            if max(obj['keypoints']) == 0:
+                continue
+
+            joints_3d = np.zeros((self.num_joints, 3), dtype=np.float)
+            joints_3d_vis = np.zeros((self.num_joints, 3), dtype=np.float)
+            for ipt in range(self.num_joints):
+                joints_3d[ipt, 0] = obj['keypoints'][ipt * 3 + 0]
+                joints_3d[ipt, 1] = obj['keypoints'][ipt * 3 + 1]
+                joints_3d[ipt, 2] = 0
+                t_vis = obj['keypoints'][ipt * 3 + 2]
+                # if t_vis > 1:
+                #     t_vis = 1
+                joints_3d_vis[ipt, 0] = t_vis
+                joints_3d_vis[ipt, 1] = t_vis
+                joints_3d_vis[ipt, 2] = 0
+
+            center, scale = self._box2cs(obj['clean_bbox'][:4])
+            rec.append({
+                'image': self.image_path_from_index(index),
+                'center': center,
+                'scale': scale,
+                'joints_3d': joints_3d,
+                'joints_3d_vis': joints_3d_vis,
+                'filename': '',
+                'imgnum': 0,
+            })
+
+        return rec
+
+    def _box2cs(self, box):
+        x, y, w, h = box[:4]
+        return self._xywh2cs(x, y, w, h)
+
+    def _xywh2cs(self, x, y, w, h):
+        center = np.zeros((2), dtype=np.float32)
+        center[0] = x + w * 0.5
+        center[1] = y + h * 0.5
+
+        if w > self.aspect_ratio * h:
+            h = w * 1.0 / self.aspect_ratio
+        elif w < self.aspect_ratio * h:
+            w = h * self.aspect_ratio
+        scale = np.array(
+            [w * 1.0 / self.pixel_std, h * 1.0 / self.pixel_std],
+            dtype=np.float32)
+        if center[0] != -1:
+            scale = scale * 1.25
+
+        return center, scale
+
+    def image_path_from_index(self, index):
+        """ example: images / train2017 / 000000119993.jpg """
+        file_name = self.ids_to_name[index]
+        data_name = self.image_set  
+
+        image_path = os.path.join(
+            # self.root, 'images', file_name)
+            self.root, 'images', file_name)
+
+        return image_path
+
+    def _load_coco_person_detection_results(self):
+        all_boxes = None
+        with open(self.bbox_file, 'r') as f:
+            all_boxes = json.load(f)
+
+        if not all_boxes:
+            logger.error('=> Load %s fail!' % self.bbox_file)
+            return None
+
+        logger.info('=> Total boxes: {}'.format(len(all_boxes)))
+
+        kpt_db = []
+        num_boxes = 0
+        for n_img in range(0, len(all_boxes)):
+            det_res = all_boxes[n_img]
+            if det_res['category_id'] != 1:
+                continue
+            img_name = self.image_path_from_index(det_res['image_id'])
+            box = det_res['bbox']
+            score = det_res['score']
+
+            if score < self.image_thre:
+                continue
+
+            num_boxes = num_boxes + 1
+
+            center, scale = self._box2cs(box)
+            joints_3d = np.zeros((self.num_joints, 3), dtype=np.float)
+            joints_3d_vis = np.ones(
+                (self.num_joints, 3), dtype=np.float)
+            kpt_db.append({
+                'image': img_name,
+                'center': center,
+                'scale': scale,
+                'score': score,
+                'joints_3d': joints_3d,
+                'joints_3d_vis': joints_3d_vis,
+            })
+
+        logger.info('=> Total boxes after fiter low score@{}: {}'.format(
+            self.image_thre, num_boxes))
+        return kpt_db
+
+    # need double check this API and classes field
+    def evaluate(self, cfg, preds, output_dir, all_boxes, img_path,
+                 *args, **kwargs):
+        res_folder = os.path.join(output_dir, 'results')
+        if not os.path.exists(res_folder):
+            os.makedirs(res_folder)
+        res_file = os.path.join(
+            res_folder, 'keypoints_%s_results.json' % self.image_set)
+        if 'res_file' in kwargs:
+            res_file = kwargs['res_file']
+
+        # person x (keypoints)
+        _kpts = []
+        for idx, kpt in enumerate(preds):
+            _kpts.append({
+                'keypoints': kpt,
+                'center': all_boxes[idx][0:2],
+                'scale': all_boxes[idx][2:4],
+                'area': all_boxes[idx][4],
+                'score': all_boxes[idx][5],
+                'image': int(self.name_to_ids[img_path[idx].split('/')[-1]])
+            })
+        # image x person x (keypoints)
+        kpts = defaultdict(list)
+        
+        for kpt in _kpts:
+            kpts[kpt['image']].append(kpt)
+            
+        print('Welcome to evaluate\nLen pred: {}\tLen _kpts: {}\tLen kpts: {}'.format(len(preds), len(_kpts), len(kpts)))
+
+        # rescoring and oks nms
+        num_joints = self.num_joints
+        in_vis_thre = self.in_vis_thre
+        oks_thre = self.oks_thre
+        oks_nmsed_kpts = []
+        for img in kpts.keys():
+            img_kpts = kpts[img]
+            for n_p in img_kpts:
+                box_score = n_p['score']
+                kpt_score = 0
+                valid_num = 0
+                for n_jt in range(0, num_joints):
+                    t_s = n_p['keypoints'][n_jt][2]
+                    if t_s > in_vis_thre:
+                        kpt_score = kpt_score + t_s
+                        valid_num = valid_num + 1
+                if valid_num != 0:
+                    kpt_score = kpt_score / valid_num
+                
+                # rescoring
+                n_p['score'] = kpt_score * box_score
+            keep = oks_nms([img_kpts[i] for i in range(len(img_kpts))],
+                           oks_thre)
+            if len(keep) == 0:
+                oks_nmsed_kpts.append(img_kpts)
+            else:
+                oks_nmsed_kpts.append([img_kpts[_keep] for _keep in keep])
+        
+        self._write_coco_keypoint_results(
+            oks_nmsed_kpts, res_file)
+
+        '''
+        if 'test' not in self.image_set:
+        
+        else:
+            return {'Null': 0}, 0
+        '''                
+        info_str = self._do_python_keypoint_eval(
+            res_file, res_folder)
+        name_value = OrderedDict(info_str)
+        return name_value, name_value['AP']
+        
+    def _write_coco_keypoint_results(self, keypoints, res_file):
+        data_pack = [{'cat_id': self._class_to_coco_ind[cls],
+                      'cls_ind': cls_ind,
+                      'cls': cls,
+                      'ann_type': 'keypoints',
+                      'keypoints': keypoints
+                      }
+                     for cls_ind, cls in enumerate(self.classes) if not cls == '__background__']
+
+        results = self._coco_keypoint_results_one_category_kernel(data_pack[0])
+        logger.info('=> Writing results json to %s' % res_file)
+        with open(res_file, 'w') as f:
+            json.dump(results, f, sort_keys=True, indent=4)
+        try:
+            json.load(open(res_file))
+        except Exception:
+            content = []
+            with open(res_file, 'r') as f:
+                for line in f:
+                    content.append(line)
+            content[-1] = ']'
+            with open(res_file, 'w') as f:
+                for c in content:
+                    f.write(c)
+
+    def _coco_keypoint_results_one_category_kernel(self, data_pack):
+        cat_id = data_pack['cat_id']
+        keypoints = data_pack['keypoints']
+        cat_results = []
+
+        for img_kpts in keypoints:
+            if len(img_kpts) == 0:
+                continue
+
+            _key_points = np.array([img_kpts[k]['keypoints']
+                                    for k in range(len(img_kpts))])
+            key_points = np.zeros(
+                (_key_points.shape[0], self.num_joints * 3), dtype=np.float)
+
+            for ipt in range(self.num_joints):
+                key_points[:, ipt * 3 + 0] = _key_points[:, ipt, 0]
+                key_points[:, ipt * 3 + 1] = _key_points[:, ipt, 1]
+                key_points[:, ipt * 3 + 2] = _key_points[:, ipt, 2]  # keypoints score.
+
+            result = [{'image_id': img_kpts[k]['image'],
+                       'category_id': cat_id,
+                       'keypoints': list(key_points[k]),
+                       'score': img_kpts[k]['score'],
+                       'center': list(img_kpts[k]['center']),
+                       'scale': list(img_kpts[k]['scale'])
+                       } for k in range(len(img_kpts))]
+            cat_results.extend(result)
+
+        return cat_results
+
+    def _do_python_keypoint_eval(self, res_file, res_folder):
+        coco_dt = self.coco.loadRes(res_file)
+        coco_eval = COCOeval(self.coco, coco_dt, 'keypoints')
+        coco_eval.params.useSegm = None
+        coco_eval.evaluate()
+        coco_eval.accumulate()
+        coco_eval.summarize()
+        stats_names = ['AP', 'Ap .5', 'AP .75', 'AP (M)', 'AP (L)', 'AR', 'AR .5', 'AR .75', 'AR (M)', 'AR (L)']
+
+        info_str = []
+        for ind, name in enumerate(stats_names):
+            info_str.append((name, coco_eval.stats[ind]))
+
+        eval_file = os.path.join(
+            res_folder, 'keypoints_%s_results.pkl' % self.image_set)
+
+        with open(eval_file, 'wb') as f:
+            pickle.dump(coco_eval, f, pickle.HIGHEST_PROTOCOL)
+        logger.info('=> dripe eval results saved to %s' % eval_file)
+
+        return info_str
diff --git a/lib/dataset/mpii.py b/lib/dataset/mpii.py
new file mode 100644
index 0000000..2cadb1a
--- /dev/null
+++ b/lib/dataset/mpii.py
@@ -0,0 +1,176 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from collections import OrderedDict
+import logging
+import os
+import json_tricks as json
+
+import numpy as np
+from scipy.io import loadmat, savemat
+
+from dataset.JointsDataset import JointsDataset
+
+
+logger = logging.getLogger(__name__)
+
+
+class MPIIDataset(JointsDataset):
+    def __init__(self, cfg, root, image_set, is_train, transform=None):
+        super().__init__(cfg, root, image_set, is_train, transform)
+
+        self.num_joints = 16
+        self.flip_pairs = [[0, 5], [1, 4], [2, 3], [10, 15], [11, 14], [12, 13]]
+        self.parent_ids = [1, 2, 6, 6, 3, 4, 6, 6, 7, 8, 11, 12, 7, 7, 13, 14]
+
+        self.db = self._get_db()
+
+        if is_train and cfg.DATASET.SELECT_DATA:
+            self.db = self.select_data(self.db)
+
+        logger.info('=> load {} samples'.format(len(self.db)))
+
+    def _get_db(self):
+        # create train/val split
+        file_name = os.path.join(self.root,
+                                 'annot',
+                                 self.image_set+'.json')
+        with open(file_name) as anno_file:
+            anno = json.load(anno_file)
+
+        gt_db = []
+        for a in anno:
+            image_name = a['image']
+
+            c = np.array(a['center'], dtype=np.float)
+            s = np.array([a['scale'], a['scale']], dtype=np.float)
+
+            # Adjust center/scale slightly to avoid cropping limbs
+            if c[0] != -1:
+                c[1] = c[1] + 15 * s[1]
+                s = s * 1.25
+
+            # MPII uses matlab format, index is based 1,
+            # we should first convert to 0-based index
+            c = c - 1
+
+            joints_3d = np.zeros((self.num_joints, 3), dtype=np.float)
+            joints_3d_vis = np.zeros((self.num_joints,  3), dtype=np.float)
+            if self.image_set != 'test':
+                joints = np.array(a['joints'])
+                joints[:, 0:2] = joints[:, 0:2] - 1
+                joints_vis = np.array(a['joints_vis'])
+                assert len(joints) == self.num_joints, \
+                    'joint num diff: {} vs {}'.format(len(joints),
+                                                      self.num_joints)
+
+                joints_3d[:, 0:2] = joints[:, 0:2]
+                joints_3d_vis[:, 0] = joints_vis[:]
+                joints_3d_vis[:, 1] = joints_vis[:]
+
+            image_dir = 'images.zip@' if self.data_format == 'zip' else 'images'
+            gt_db.append({
+                'image': os.path.join(self.root, image_dir, image_name),
+                'center': c,
+                'scale': s,
+                'joints_3d': joints_3d,
+                'joints_3d_vis': joints_3d_vis,
+                'filename': '',
+                'imgnum': 0,
+                })
+
+        return gt_db
+
+    def evaluate(self, cfg, preds, output_dir, *args, **kwargs):
+        # convert 0-based index to 1-based index
+        preds = preds[:, :, 0:2] + 1.0
+
+        if output_dir:
+            pred_file = os.path.join(output_dir, 'pred.mat')
+            savemat(pred_file, mdict={'preds': preds})
+
+        if 'test' in cfg.DATASET.TEST_SET:
+            return {'Null': 0.0}, 0.0
+
+        SC_BIAS = 0.6
+        threshold = 0.5
+
+        gt_file = os.path.join(cfg.DATASET.ROOT,
+                               'annot',
+                               'gt_{}.mat'.format(cfg.DATASET.TEST_SET))
+        gt_dict = loadmat(gt_file)
+        dataset_joints = gt_dict['dataset_joints']
+        jnt_missing = gt_dict['jnt_missing']
+        pos_gt_src = gt_dict['pos_gt_src']
+        headboxes_src = gt_dict['headboxes_src']
+
+        pos_pred_src = np.transpose(preds, [1, 2, 0])
+
+        head = np.where(dataset_joints == 'head')[1][0]
+        lsho = np.where(dataset_joints == 'lsho')[1][0]
+        lelb = np.where(dataset_joints == 'lelb')[1][0]
+        lwri = np.where(dataset_joints == 'lwri')[1][0]
+        lhip = np.where(dataset_joints == 'lhip')[1][0]
+        lkne = np.where(dataset_joints == 'lkne')[1][0]
+        lank = np.where(dataset_joints == 'lank')[1][0]
+
+        rsho = np.where(dataset_joints == 'rsho')[1][0]
+        relb = np.where(dataset_joints == 'relb')[1][0]
+        rwri = np.where(dataset_joints == 'rwri')[1][0]
+        rkne = np.where(dataset_joints == 'rkne')[1][0]
+        rank = np.where(dataset_joints == 'rank')[1][0]
+        rhip = np.where(dataset_joints == 'rhip')[1][0]
+
+        jnt_visible = 1 - jnt_missing
+        uv_error = pos_pred_src - pos_gt_src
+        uv_err = np.linalg.norm(uv_error, axis=1)
+        headsizes = headboxes_src[1, :, :] - headboxes_src[0, :, :]
+        headsizes = np.linalg.norm(headsizes, axis=0)
+        headsizes *= SC_BIAS
+        scale = np.multiply(headsizes, np.ones((len(uv_err), 1)))
+        scaled_uv_err = np.divide(uv_err, scale)
+        scaled_uv_err = np.multiply(scaled_uv_err, jnt_visible)
+        jnt_count = np.sum(jnt_visible, axis=1)
+        less_than_threshold = np.multiply((scaled_uv_err <= threshold),
+                                          jnt_visible)
+        PCKh = np.divide(100.*np.sum(less_than_threshold, axis=1), jnt_count)
+
+        # save
+        rng = np.arange(0, 0.5+0.01, 0.01)
+        pckAll = np.zeros((len(rng), 16))
+
+        for r in range(len(rng)):
+            threshold = rng[r]
+            less_than_threshold = np.multiply(scaled_uv_err <= threshold,
+                                              jnt_visible)
+            pckAll[r, :] = np.divide(100.*np.sum(less_than_threshold, axis=1),
+                                     jnt_count)
+
+        PCKh = np.ma.array(PCKh, mask=False)
+        PCKh.mask[6:8] = True
+
+        jnt_count = np.ma.array(jnt_count, mask=False)
+        jnt_count.mask[6:8] = True
+        jnt_ratio = jnt_count / np.sum(jnt_count).astype(np.float64)
+
+        name_value = [
+            ('Head', PCKh[head]),
+            ('Shoulder', 0.5 * (PCKh[lsho] + PCKh[rsho])),
+            ('Elbow', 0.5 * (PCKh[lelb] + PCKh[relb])),
+            ('Wrist', 0.5 * (PCKh[lwri] + PCKh[rwri])),
+            ('Hip', 0.5 * (PCKh[lhip] + PCKh[rhip])),
+            ('Knee', 0.5 * (PCKh[lkne] + PCKh[rkne])),
+            ('Ankle', 0.5 * (PCKh[lank] + PCKh[rank])),
+            ('Mean', np.sum(PCKh * jnt_ratio)),
+            ('Mean@0.1', np.sum(pckAll[11, :] * jnt_ratio))
+        ]
+        name_value = OrderedDict(name_value)
+
+        return name_value, name_value['Mean']
diff --git a/lib/models/__init__.py b/lib/models/__init__.py
new file mode 100644
index 0000000..b695778
--- /dev/null
+++ b/lib/models/__init__.py
@@ -0,0 +1,12 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import models.pose_resnet
+import models.pose_vis
\ No newline at end of file
diff --git a/lib/models/modules.py b/lib/models/modules.py
new file mode 100644
index 0000000..c77da9d
--- /dev/null
+++ b/lib/models/modules.py
@@ -0,0 +1,196 @@
+import os
+import logging
+
+import torch
+import torch.nn as nn
+from collections import OrderedDict
+from .resnet import Bottleneck, BN_MOMENTUM
+
+logger = logging.getLogger(__name__)
+
+
+class DeconvStage(nn.Module):
+    def __init__(self, inplanes, cfg):
+        super(DeconvStage, self).__init__()
+
+        self.inplanes = inplanes
+        extra = cfg.MODEL.EXTRA
+        self.deconv_with_bias = extra.DECONV_WITH_BIAS
+        self.nb_joints = cfg.MODEL.NUM_JOINTS
+
+        self.deconv_layers = self._make_deconv_layer(
+            extra.NUM_DECONV_LAYERS,
+            extra.NUM_DECONV_FILTERS,
+            extra.NUM_DECONV_KERNELS,
+        )
+
+        self.final_layer = nn.Conv2d(
+            in_channels=extra.NUM_DECONV_FILTERS[-1],
+            out_channels=self.nb_joints,
+            kernel_size=extra.FINAL_CONV_KERNEL,
+            stride=1,
+            padding=1 if extra.FINAL_CONV_KERNEL == 3 else 0
+        )
+
+    def _get_deconv_cfg(self, deconv_kernel, index):
+        if deconv_kernel == 4:
+            padding = 1
+            output_padding = 0
+        elif deconv_kernel == 3:
+            padding = 1
+            output_padding = 1
+        elif deconv_kernel == 2:
+            padding = 0
+            output_padding = 0
+
+        return deconv_kernel, padding, output_padding
+
+    def _make_deconv_layer(self, num_layers, num_filters, num_kernels):
+        assert num_layers == len(num_filters), \
+            'ERROR: num_deconv_layers is different len(num_deconv_filters)'
+        assert num_layers == len(num_kernels), \
+            'ERROR: num_deconv_layers is different len(num_deconv_filters)'
+
+        layers = []
+        for i in range(num_layers):
+            kernel, padding, output_padding = \
+                self._get_deconv_cfg(num_kernels[i], i)
+
+            planes = num_filters[i]
+            layers.append(
+                nn.ConvTranspose2d(
+                    in_channels=self.inplanes,
+                    out_channels=planes,
+                    kernel_size=kernel,
+                    stride=2,
+                    padding=padding,
+                    output_padding=output_padding,
+                    bias=self.deconv_with_bias))
+            layers.append(nn.BatchNorm2d(planes, momentum=BN_MOMENTUM))
+            layers.append(nn.ReLU(inplace=True))
+            self.inplanes = planes
+
+        return nn.Sequential(*layers)
+
+    def forward(self, feats):
+        x = self.deconv_layers(feats)
+        x = self.final_layer(x)
+
+        return x
+
+    def freeze(self, freeze=True):
+        for layer in [
+            self.deconv_layers,
+            self.final_layer,
+        ]:
+            for p in layer.parameters():
+                p.requires_grad = not freeze
+
+
+class DeconvStageVis(DeconvStage):
+    def __init__(self, inplanes, block, cfg):
+        super(DeconvStageVis, self).__init__(inplanes, cfg)
+
+        self.nb_vis = cfg.MODEL.NB_VIS
+        extra = cfg.MODEL.EXTRA
+
+        # New visibility deductor
+        self.fc = self._make_fc(512 * block.expansion,
+                                extra.HEATMAP_SIZE,
+                                extra.NUM_DECONV_LAYERS,
+                                fc_sizes=cfg.MODEL.EXTRA.NUM_LINEAR_LAYERS
+                                )
+
+    def _make_fc(self, input_channel=512 * 4, hm_size=[64, 48], deconv_ratio=3, fc_sizes=[4096, 2048, 1024]):
+        out_conv = 512
+        max_pool = 2
+        layers = [
+            Bottleneck(input_channel, int(out_conv / Bottleneck.expansion),
+                       downsample=nn.Conv2d(input_channel, out_conv, kernel_size=1, stride=1, padding=0, bias=False)),
+            nn.BatchNorm2d(out_conv, momentum=BN_MOMENTUM), nn.ReLU(inplace=True),
+            nn.MaxPool2d(kernel_size=max_pool, stride=max_pool, padding=0), nn.Flatten(), ]
+
+        # input layer
+        layers += [
+            nn.Linear(int(out_conv * hm_size[0] * hm_size[1] / (max_pool * 2 ** deconv_ratio) ** 2), fc_sizes[0]),
+            nn.ReLU()]
+
+        # hidden layers
+        for i in range(len(fc_sizes) - 1):
+            layers.append(nn.Linear(fc_sizes[i], fc_sizes[i + 1]))
+            layers.append(nn.ReLU())
+
+        # output layers
+        layers.append(nn.Linear(fc_sizes[-1], self.nb_vis * self.nb_joints))
+        layers.append(nn.ReLU())
+
+        return nn.Sequential(*layers)
+
+    def forward(self, feats):
+        x = self.deconv_layers(feats)
+        x = self.final_layer(x)
+
+        vis_feats = self.fc(feats)
+        vis_preds = vis_feats.reshape((vis_feats.shape[0], self.nb_joints, self.nb_vis))
+
+        return x, vis_preds
+
+
+class PoseNet(nn.Module):
+    def __init__(self):
+        super(PoseNet, self).__init__()
+
+        self.final_stage = None
+
+    def forward(self, x):
+        raise NotImplementedError()
+
+    def init_weights(self, pretrained_pth=''):
+        if os.path.isfile(pretrained_pth):
+            logger.info('=> init deconv weights from normal distribution')
+            for name, m in self.final_stage.deconv_layers.named_modules():
+                if isinstance(m, nn.ConvTranspose2d):
+                    logger.info('=> init {}.weight as normal(0, 0.001)'.format(name))
+                    logger.info('=> init {}.bias as 0'.format(name))
+                    nn.init.normal_(m.weight, std=0.001)
+                    if self.final_stage.deconv_with_bias:
+                        nn.init.constant_(m.bias, 0)
+                elif isinstance(m, nn.BatchNorm2d):
+                    logger.info('=> init {}.weight as 1'.format(name))
+                    logger.info('=> init {}.bias as 0'.format(name))
+                    nn.init.constant_(m.weight, 1)
+                    nn.init.constant_(m.bias, 0)
+            logger.info('=> init final conv weights from normal distribution')
+            for m in self.final_stage.final_layer.modules():
+                if isinstance(m, nn.Conv2d):
+                    # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
+                    logger.info('=> init {}.weight as normal(0, 0.001)'.format(name))
+                    logger.info('=> init {}.bias as 0'.format(name))
+                    nn.init.normal_(m.weight, std=0.001)
+                    nn.init.constant_(m.bias, 0)
+
+            # pretrained_state_dict = torch.load(pretrained)
+            logger.info('=> loading pretrained model {}'.format(pretrained_pth))
+            # self.load_state_dict(pretrained_state_dict, strict=False)
+            checkpoint = torch.load(pretrained_pth)
+            if isinstance(checkpoint, OrderedDict):
+                state_dict = checkpoint
+            elif isinstance(checkpoint, dict) and 'state_dict' in checkpoint:
+                state_dict_old = checkpoint['state_dict']
+                state_dict = OrderedDict()
+                # delete 'module.' because it is saved from DataParallel module
+                for key in state_dict_old.keys():
+                    if key.startswith('module.'):
+                        # state_dict[key[7:]] = state_dict[key]
+                        # state_dict.pop(key)
+                        state_dict[key[7:]] = state_dict_old[key]
+                    else:
+                        state_dict[key] = state_dict_old[key]
+            else:
+                raise RuntimeError(
+                    'No state_dict found in checkpoint file {}'.format(pretrained_pth))
+            self.load_state_dict(state_dict, strict=False)
+        else:
+            logger.error(f'=> imagenet pretrained model dose not exist : {pretrained_pth}')
+            logger.error('=> please download it first')
+            raise ValueError('imagenet pretrained model does not exist')
diff --git a/lib/models/pose_resnet.py b/lib/models/pose_resnet.py
new file mode 100644
index 0000000..206aed9
--- /dev/null
+++ b/lib/models/pose_resnet.py
@@ -0,0 +1,80 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
+import logging
+
+import torch
+import torch.nn as nn
+from collections import OrderedDict
+
+from .modules import DeconvStage, PoseNet
+from .resnet import ResNet, BasicBlock, Bottleneck
+from utils.utils import convert_state_dict
+
+logger = logging.getLogger(__name__)
+
+
+class PoseResNet(PoseNet):
+    def __init__(self, block, layers, cfg, **kwargs):
+        super(PoseResNet, self).__init__()
+
+        self.resnet = ResNet(block, layers, cfg, **kwargs)
+        self.final_stage = DeconvStage(self.resnet.inplanes, cfg)
+
+    def forward(self, x):
+        x = self.resnet(x)
+        x = self.final_stage(x)
+        return x
+
+    def freeze_encoder(self, freeze=True):
+        self.resnet.freeze(freeze=freeze)
+        logger.info("Encoder frozen")
+
+    def freeze_deconv(self, freeze=True):
+        self.final_stage.freeze(freeze=freeze)
+        logger.info("Deconv frozen")
+
+    def load_state_dict(self, state_dict, strict=True):
+        state_dict = OrderedDict({k.replace('module.', ''): v
+                                  for k, v in state_dict.items()})
+        try:
+            nn.Module.load_state_dict(self, state_dict=state_dict, strict=True)
+        except RuntimeError as err:
+            str_err = str(err)
+            if 'Missing key(s)' not in str_err and 'Unexpected key(s)' not in str_err:
+                raise err
+            if strict:
+                new_dict = convert_state_dict(state_dict, ['resnet', 'final_stage'], err)
+            else:
+                print('\n'.join(str(err).split('\n')[1:]))
+                new_dict = state_dict
+            nn.Module.load_state_dict(self, state_dict=new_dict, strict=strict)
+
+
+resnet_spec = {18: (BasicBlock, [2, 2, 2, 2]),
+               34: (BasicBlock, [3, 4, 6, 3]),
+               50: (Bottleneck, [3, 4, 6, 3]),
+               101: (Bottleneck, [3, 4, 23, 3]),
+               152: (Bottleneck, [3, 8, 36, 3])}
+
+
+def get_pose_net(cfg, is_train, **kwargs):
+    num_layers = cfg.MODEL.EXTRA.NUM_LAYERS
+    style = cfg.MODEL.STYLE
+
+    block_class, layers = resnet_spec[num_layers]
+
+    model = PoseResNet(block_class, layers, cfg, **kwargs)
+
+    if is_train and cfg.MODEL.INIT_WEIGHTS:
+        model.init_weights(cfg.MODEL.PRETRAINED)
+
+    return model
diff --git a/lib/models/pose_vis.py b/lib/models/pose_vis.py
new file mode 100644
index 0000000..a0aaa5a
--- /dev/null
+++ b/lib/models/pose_vis.py
@@ -0,0 +1,39 @@
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+from .modules import DeconvStageVis
+from .resnet import ResNet
+from .pose_resnet import PoseResNet, resnet_spec
+
+
+class PoseResNetVis(PoseResNet):
+    def __init__(self, block, layers, cfg, **kwargs):
+        super(PoseResNetVis, self).__init__(block, layers, cfg, **kwargs)
+        self.nb_vis = 3
+
+        self.resnet = ResNet(block, layers, cfg, **kwargs)
+        self.final_stage = DeconvStageVis(self.resnet.inplanes, block, cfg)
+
+    def forward(self, x):
+        x = self.resnet(x)
+        x, vis_preds = self.final_stage(x)
+
+        return x, vis_preds
+
+
+def get_pose_net(cfg, is_train, **kwargs):
+    num_layers = cfg.MODEL.EXTRA.NUM_LAYERS
+    style = cfg.MODEL.STYLE
+
+    block_class, layers = resnet_spec[num_layers]
+
+    if style == 'caffe':
+        raise NotImplementedError('Caffe not handled')
+
+    model = PoseResNetVis(block_class, layers, cfg, **kwargs)
+
+    if is_train and cfg.MODEL.INIT_WEIGHTS:
+        model.init_weights(cfg.MODEL.PRETRAINED)
+
+    return model
diff --git a/lib/models/resnet.py b/lib/models/resnet.py
new file mode 100644
index 0000000..51ded25
--- /dev/null
+++ b/lib/models/resnet.py
@@ -0,0 +1,145 @@
+import torch.nn as nn
+BN_MOMENTUM = 0.1
+
+
+def conv3x3(in_planes, out_planes, stride=1):
+    """3x3 convolution with padding"""
+    return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride,
+                     padding=1, bias=False)
+
+
+class BasicBlock(nn.Module):
+    expansion = 1
+
+    def __init__(self, inplanes, planes, stride=1, downsample=None):
+        super(BasicBlock, self).__init__()
+        self.conv1 = conv3x3(inplanes, planes, stride)
+        self.bn1 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
+        self.relu = nn.ReLU(inplace=True)
+        self.conv2 = conv3x3(planes, planes)
+        self.bn2 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
+        self.downsample = downsample
+        self.stride = stride
+
+    def forward(self, x):
+        residual = x
+
+        out = self.conv1(x)
+        out = self.bn1(out)
+        out = self.relu(out)
+
+        out = self.conv2(out)
+        out = self.bn2(out)
+
+        if self.downsample is not None:
+            residual = self.downsample(x)
+
+        out += residual
+        out = self.relu(out)
+
+        return out
+
+
+class Bottleneck(nn.Module):
+    expansion = 4
+
+    def __init__(self, inplanes, planes, stride=1, downsample=None):
+        super(Bottleneck, self).__init__()
+        self.conv1 = nn.Conv2d(inplanes, planes, kernel_size=1, bias=False)
+        self.bn1 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
+        self.conv2 = nn.Conv2d(planes, planes, kernel_size=3, stride=stride,
+                               padding=1, bias=False)
+        self.bn2 = nn.BatchNorm2d(planes, momentum=BN_MOMENTUM)
+        self.conv3 = nn.Conv2d(planes, planes * self.expansion, kernel_size=1,
+                               bias=False)
+        self.bn3 = nn.BatchNorm2d(planes * self.expansion,
+                                  momentum=BN_MOMENTUM)
+        self.relu = nn.ReLU(inplace=True)
+        self.downsample = downsample
+        self.stride = stride
+
+    def forward(self, x):
+        residual = x
+
+        out = self.conv1(x)
+        out = self.bn1(out)
+        out = self.relu(out)
+
+        out = self.conv2(out)
+        out = self.bn2(out)
+        out = self.relu(out)
+
+        out = self.conv3(out)
+        out = self.bn3(out)
+
+        if self.downsample is not None:
+            residual = self.downsample(x)
+
+        out += residual
+        out = self.relu(out)
+
+        return out
+
+
+
+class ResNet(nn.Module):
+    def __init__(self, block, layers, cfg, **kwargs):
+        super(ResNet, self).__init__()
+
+        self.inplanes = 64
+        extra = cfg.MODEL.EXTRA
+
+        self.conv1 = nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3,
+                               bias=False)
+        self.bn1 = nn.BatchNorm2d(64, momentum=BN_MOMENTUM)
+        self.relu = nn.ReLU(inplace=True)
+        self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)
+        self.layer1 = self._make_layer(block, 64, layers[0])
+        self.layer2 = self._make_layer(block, 128, layers[1], stride=2)
+        self.layer3 = self._make_layer(block, 256, layers[2], stride=2)
+        self.layer4 = self._make_layer(block, 512, layers[3], stride=2)
+
+    def _make_layer(self, block, planes, blocks, stride=1):
+        downsample = None
+        if stride != 1 or self.inplanes != planes * block.expansion:
+            downsample = nn.Sequential(
+                nn.Conv2d(self.inplanes, planes * block.expansion,
+                          kernel_size=1, stride=stride, bias=False),
+                nn.BatchNorm2d(planes * block.expansion, momentum=BN_MOMENTUM),
+            )
+
+        layers = []
+        layers.append(block(self.inplanes, planes, stride, downsample))
+        self.inplanes = planes * block.expansion
+        for i in range(1, blocks):
+            layers.append(block(self.inplanes, planes))
+
+        return nn.Sequential(*layers)
+
+    def forward(self, x):
+        x = self.conv1(x)
+        x = self.bn1(x)
+        x = self.relu(x)
+        x = self.maxpool(x)
+
+        x = self.layer1(x)
+        x = self.layer2(x)
+        x = self.layer3(x)
+        x = self.layer4(x)
+
+        return x
+
+    def freeze(self, freeze=True):
+        for layer in [
+            self.conv1,
+            self.bn1,
+            self.relu,
+            self.maxpool,
+            self.layer1,
+            self.layer2,
+            self.layer3,
+            self.layer4,
+        ]:
+            for p in layer.parameters():
+                p.requires_grad = not freeze
+
diff --git a/lib/nms/__init__.py b/lib/nms/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/lib/nms/cpu_nms.pyx b/lib/nms/cpu_nms.pyx
new file mode 100644
index 0000000..59388fe
--- /dev/null
+++ b/lib/nms/cpu_nms.pyx
@@ -0,0 +1,67 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Modified from py-faster-rcnn (https://github.com/rbgirshick/py-faster-rcnn)
+# ------------------------------------------------------------------------------
+
+import numpy as np
+cimport numpy as np
+
+cdef inline np.float32_t max(np.float32_t a, np.float32_t b):
+    return a if a >= b else b
+
+cdef inline np.float32_t min(np.float32_t a, np.float32_t b):
+    return a if a <= b else b
+
+def cpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh):
+    cdef np.ndarray[np.float32_t, ndim=1] x1 = dets[:, 0]
+    cdef np.ndarray[np.float32_t, ndim=1] y1 = dets[:, 1]
+    cdef np.ndarray[np.float32_t, ndim=1] x2 = dets[:, 2]
+    cdef np.ndarray[np.float32_t, ndim=1] y2 = dets[:, 3]
+    cdef np.ndarray[np.float32_t, ndim=1] scores = dets[:, 4]
+
+    cdef np.ndarray[np.float32_t, ndim=1] areas = (x2 - x1 + 1) * (y2 - y1 + 1)
+    cdef np.ndarray[np.int_t, ndim=1] order = scores.argsort()[::-1].astype('i')
+
+    cdef int ndets = dets.shape[0]
+    cdef np.ndarray[np.int_t, ndim=1] suppressed = \
+            np.zeros((ndets), dtype=np.int)
+
+    # nominal indices
+    cdef int _i, _j
+    # sorted indices
+    cdef int i, j
+    # temp variables for box i's (the box currently under consideration)
+    cdef np.float32_t ix1, iy1, ix2, iy2, iarea
+    # variables for computing overlap with box j (lower scoring box)
+    cdef np.float32_t xx1, yy1, xx2, yy2
+    cdef np.float32_t w, h
+    cdef np.float32_t inter, ovr
+
+    keep = []
+    for _i in range(ndets):
+        i = order[_i]
+        if suppressed[i] == 1:
+            continue
+        keep.append(i)
+        ix1 = x1[i]
+        iy1 = y1[i]
+        ix2 = x2[i]
+        iy2 = y2[i]
+        iarea = areas[i]
+        for _j in range(_i + 1, ndets):
+            j = order[_j]
+            if suppressed[j] == 1:
+                continue
+            xx1 = max(ix1, x1[j])
+            yy1 = max(iy1, y1[j])
+            xx2 = min(ix2, x2[j])
+            yy2 = min(iy2, y2[j])
+            w = max(0.0, xx2 - xx1 + 1)
+            h = max(0.0, yy2 - yy1 + 1)
+            inter = w * h
+            ovr = inter / (iarea + areas[j] - inter)
+            if ovr >= thresh:
+                suppressed[j] = 1
+
+    return keep
diff --git a/lib/nms/gpu_nms.hpp b/lib/nms/gpu_nms.hpp
new file mode 100644
index 0000000..68b6d42
--- /dev/null
+++ b/lib/nms/gpu_nms.hpp
@@ -0,0 +1,2 @@
+void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num,
+          int boxes_dim, float nms_overlap_thresh, int device_id);
diff --git a/lib/nms/gpu_nms.pyx b/lib/nms/gpu_nms.pyx
new file mode 100644
index 0000000..b6ff660
--- /dev/null
+++ b/lib/nms/gpu_nms.pyx
@@ -0,0 +1,30 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Modified from py-faster-rcnn (https://github.com/rbgirshick/py-faster-rcnn)
+# ------------------------------------------------------------------------------
+
+import numpy as np
+cimport numpy as np
+
+assert sizeof(int) == sizeof(np.int32_t)
+
+cdef extern from "gpu_nms.hpp":
+    void _nms(np.int32_t*, int*, np.float32_t*, int, int, float, int)
+
+def gpu_nms(np.ndarray[np.float32_t, ndim=2] dets, np.float thresh,
+            np.int32_t device_id=0):
+    cdef int boxes_num = dets.shape[0]
+    cdef int boxes_dim = dets.shape[1]
+    cdef int num_out
+    cdef np.ndarray[np.int32_t, ndim=1] \
+        keep = np.zeros(boxes_num, dtype=np.int32)
+    cdef np.ndarray[np.float32_t, ndim=1] \
+        scores = dets[:, 4]
+    cdef np.ndarray[np.int32_t, ndim=1] \
+        order = scores.argsort()[::-1].astype(np.int32)
+    cdef np.ndarray[np.float32_t, ndim=2] \
+        sorted_dets = dets[order, :]
+    _nms(&keep[0], &num_out, &sorted_dets[0, 0], boxes_num, boxes_dim, thresh, device_id)
+    keep = keep[:num_out]
+    return list(order[keep])
diff --git a/lib/nms/nms.py b/lib/nms/nms.py
new file mode 100644
index 0000000..e02850d
--- /dev/null
+++ b/lib/nms/nms.py
@@ -0,0 +1,123 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Modified from py-faster-rcnn (https://github.com/rbgirshick/py-faster-rcnn)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import numpy as np
+
+from .cpu_nms import cpu_nms
+from .gpu_nms import gpu_nms
+
+
+def py_nms_wrapper(thresh):
+    def _nms(dets):
+        return nms(dets, thresh)
+    return _nms
+
+
+def cpu_nms_wrapper(thresh):
+    def _nms(dets):
+        return cpu_nms(dets, thresh)
+    return _nms
+
+
+def gpu_nms_wrapper(thresh, device_id):
+    def _nms(dets):
+        return gpu_nms(dets, thresh, device_id)
+    return _nms
+
+
+def nms(dets, thresh):
+    """
+    greedily select boxes with high confidence and overlap with current maximum <= thresh
+    rule out overlap >= thresh
+    :param dets: [[x1, y1, x2, y2 score]]
+    :param thresh: retain overlap < thresh
+    :return: indexes to keep
+    """
+    if dets.shape[0] == 0:
+        return []
+
+    x1 = dets[:, 0]
+    y1 = dets[:, 1]
+    x2 = dets[:, 2]
+    y2 = dets[:, 3]
+    scores = dets[:, 4]
+
+    areas = (x2 - x1 + 1) * (y2 - y1 + 1)
+    order = scores.argsort()[::-1]
+
+    keep = []
+    while order.size > 0:
+        i = order[0]
+        keep.append(i)
+        xx1 = np.maximum(x1[i], x1[order[1:]])
+        yy1 = np.maximum(y1[i], y1[order[1:]])
+        xx2 = np.minimum(x2[i], x2[order[1:]])
+        yy2 = np.minimum(y2[i], y2[order[1:]])
+
+        w = np.maximum(0.0, xx2 - xx1 + 1)
+        h = np.maximum(0.0, yy2 - yy1 + 1)
+        inter = w * h
+        ovr = inter / (areas[i] + areas[order[1:]] - inter)
+
+        inds = np.where(ovr <= thresh)[0]
+        order = order[inds + 1]
+
+    return keep
+
+def oks_iou(g, d, a_g, a_d, sigmas=None, in_vis_thre=None):
+    if not isinstance(sigmas, np.ndarray):
+        sigmas = np.array([.26, .25, .25, .35, .35, .79, .79, .72, .72, .62, .62, 1.07, 1.07, .87, .87, .89, .89]) / 10.0
+    vars = (sigmas * 2) ** 2
+    xg = g[0::3]
+    yg = g[1::3]
+    vg = g[2::3]
+    ious = np.zeros((d.shape[0]))
+    for n_d in range(0, d.shape[0]):
+        xd = d[n_d, 0::3]
+        yd = d[n_d, 1::3]
+        vd = d[n_d, 2::3]
+        dx = xd - xg
+        dy = yd - yg
+        e = (dx ** 2 + dy ** 2) / vars / ((a_g + a_d[n_d]) / 2 + np.spacing(1)) / 2
+        if in_vis_thre is not None:
+            ind = list(vg > in_vis_thre) and list(vd > in_vis_thre)
+            e = e[ind]
+        ious[n_d] = np.sum(np.exp(-e)) / e.shape[0] if e.shape[0] != 0 else 0.0
+    return ious
+
+def oks_nms(kpts_db, thresh, sigmas=None, in_vis_thre=None):
+    """
+    greedily select boxes with high confidence and overlap with current maximum <= thresh
+    rule out overlap >= thresh, overlap = oks
+    :param kpts_db
+    :param thresh: retain overlap < thresh
+    :return: indexes to keep
+    """
+    if len(kpts_db) == 0:
+        return []
+
+    scores = np.array([kpts_db[i]['score'] for i in range(len(kpts_db))])
+    kpts = np.array([kpts_db[i]['keypoints'].flatten() for i in range(len(kpts_db))])
+    areas = np.array([kpts_db[i]['area'] for i in range(len(kpts_db))])
+
+    order = scores.argsort()[::-1]
+
+    keep = []
+    while order.size > 0:
+        i = order[0]
+        keep.append(i)
+
+        oks_ovr = oks_iou(kpts[i], kpts[order[1:]], areas[i], areas[order[1:]], sigmas, in_vis_thre)
+
+        inds = np.where(oks_ovr <= thresh)[0]
+        order = order[inds + 1]
+
+    return keep
+
diff --git a/lib/nms/nms_kernel.cu b/lib/nms/nms_kernel.cu
new file mode 100644
index 0000000..f6176c6
--- /dev/null
+++ b/lib/nms/nms_kernel.cu
@@ -0,0 +1,143 @@
+// ------------------------------------------------------------------
+// Copyright (c) Microsoft
+// Licensed under The MIT License
+// Modified from MATLAB Faster R-CNN (https://github.com/shaoqingren/faster_rcnn)
+// ------------------------------------------------------------------
+
+#include "gpu_nms.hpp"
+#include <vector>
+#include <iostream>
+
+#define CUDA_CHECK(condition) \
+  /* Code block avoids redefinition of cudaError_t error */ \
+  do { \
+    cudaError_t error = condition; \
+    if (error != cudaSuccess) { \
+      std::cout << cudaGetErrorString(error) << std::endl; \
+    } \
+  } while (0)
+
+#define DIVUP(m,n) ((m) / (n) + ((m) % (n) > 0))
+int const threadsPerBlock = sizeof(unsigned long long) * 8;
+
+__device__ inline float devIoU(float const * const a, float const * const b) {
+  float left = max(a[0], b[0]), right = min(a[2], b[2]);
+  float top = max(a[1], b[1]), bottom = min(a[3], b[3]);
+  float width = max(right - left + 1, 0.f), height = max(bottom - top + 1, 0.f);
+  float interS = width * height;
+  float Sa = (a[2] - a[0] + 1) * (a[3] - a[1] + 1);
+  float Sb = (b[2] - b[0] + 1) * (b[3] - b[1] + 1);
+  return interS / (Sa + Sb - interS);
+}
+
+__global__ void nms_kernel(const int n_boxes, const float nms_overlap_thresh,
+                           const float *dev_boxes, unsigned long long *dev_mask) {
+  const int row_start = blockIdx.y;
+  const int col_start = blockIdx.x;
+
+  // if (row_start > col_start) return;
+
+  const int row_size =
+        min(n_boxes - row_start * threadsPerBlock, threadsPerBlock);
+  const int col_size =
+        min(n_boxes - col_start * threadsPerBlock, threadsPerBlock);
+
+  __shared__ float block_boxes[threadsPerBlock * 5];
+  if (threadIdx.x < col_size) {
+    block_boxes[threadIdx.x * 5 + 0] =
+        dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 0];
+    block_boxes[threadIdx.x * 5 + 1] =
+        dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 1];
+    block_boxes[threadIdx.x * 5 + 2] =
+        dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 2];
+    block_boxes[threadIdx.x * 5 + 3] =
+        dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 3];
+    block_boxes[threadIdx.x * 5 + 4] =
+        dev_boxes[(threadsPerBlock * col_start + threadIdx.x) * 5 + 4];
+  }
+  __syncthreads();
+
+  if (threadIdx.x < row_size) {
+    const int cur_box_idx = threadsPerBlock * row_start + threadIdx.x;
+    const float *cur_box = dev_boxes + cur_box_idx * 5;
+    int i = 0;
+    unsigned long long t = 0;
+    int start = 0;
+    if (row_start == col_start) {
+      start = threadIdx.x + 1;
+    }
+    for (i = start; i < col_size; i++) {
+      if (devIoU(cur_box, block_boxes + i * 5) > nms_overlap_thresh) {
+        t |= 1ULL << i;
+      }
+    }
+    const int col_blocks = DIVUP(n_boxes, threadsPerBlock);
+    dev_mask[cur_box_idx * col_blocks + col_start] = t;
+  }
+}
+
+void _set_device(int device_id) {
+  int current_device;
+  CUDA_CHECK(cudaGetDevice(&current_device));
+  if (current_device == device_id) {
+    return;
+  }
+  // The call to cudaSetDevice must come before any calls to Get, which
+  // may perform initialization using the GPU.
+  CUDA_CHECK(cudaSetDevice(device_id));
+}
+
+void _nms(int* keep_out, int* num_out, const float* boxes_host, int boxes_num,
+          int boxes_dim, float nms_overlap_thresh, int device_id) {
+  _set_device(device_id);
+
+  float* boxes_dev = NULL;
+  unsigned long long* mask_dev = NULL;
+
+  const int col_blocks = DIVUP(boxes_num, threadsPerBlock);
+
+  CUDA_CHECK(cudaMalloc(&boxes_dev,
+                        boxes_num * boxes_dim * sizeof(float)));
+  CUDA_CHECK(cudaMemcpy(boxes_dev,
+                        boxes_host,
+                        boxes_num * boxes_dim * sizeof(float),
+                        cudaMemcpyHostToDevice));
+
+  CUDA_CHECK(cudaMalloc(&mask_dev,
+                        boxes_num * col_blocks * sizeof(unsigned long long)));
+
+  dim3 blocks(DIVUP(boxes_num, threadsPerBlock),
+              DIVUP(boxes_num, threadsPerBlock));
+  dim3 threads(threadsPerBlock);
+  nms_kernel<<<blocks, threads>>>(boxes_num,
+                                  nms_overlap_thresh,
+                                  boxes_dev,
+                                  mask_dev);
+
+  std::vector<unsigned long long> mask_host(boxes_num * col_blocks);
+  CUDA_CHECK(cudaMemcpy(&mask_host[0],
+                        mask_dev,
+                        sizeof(unsigned long long) * boxes_num * col_blocks,
+                        cudaMemcpyDeviceToHost));
+
+  std::vector<unsigned long long> remv(col_blocks);
+  memset(&remv[0], 0, sizeof(unsigned long long) * col_blocks);
+
+  int num_to_keep = 0;
+  for (int i = 0; i < boxes_num; i++) {
+    int nblock = i / threadsPerBlock;
+    int inblock = i % threadsPerBlock;
+
+    if (!(remv[nblock] & (1ULL << inblock))) {
+      keep_out[num_to_keep++] = i;
+      unsigned long long *p = &mask_host[0] + i * col_blocks;
+      for (int j = nblock; j < col_blocks; j++) {
+        remv[j] |= p[j];
+      }
+    }
+  }
+  *num_out = num_to_keep;
+
+  CUDA_CHECK(cudaFree(boxes_dev));
+  CUDA_CHECK(cudaFree(mask_dev));
+}
diff --git a/lib/nms/setup.py b/lib/nms/setup.py
new file mode 100644
index 0000000..faada13
--- /dev/null
+++ b/lib/nms/setup.py
@@ -0,0 +1,140 @@
+# --------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under The MIT License [see LICENSE for details]
+# Modified from py-faster-rcnn (https://github.com/rbgirshick/py-faster-rcnn)
+# --------------------------------------------------------
+
+import os
+from os.path import join as pjoin
+from setuptools import setup
+from distutils.extension import Extension
+from Cython.Distutils import build_ext
+import numpy as np
+
+
+def find_in_path(name, path):
+    "Find a file in a search path"
+    # Adapted fom
+    # http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/
+    for dir in path.split(os.pathsep):
+        binpath = pjoin(dir, name)
+        if os.path.exists(binpath):
+            return os.path.abspath(binpath)
+    return None
+
+
+def locate_cuda():
+    """Locate the CUDA environment on the system
+    Returns a dict with keys 'home', 'nvcc', 'include', and 'lib64'
+    and values giving the absolute path to each directory.
+    Starts by looking for the CUDAHOME env variable. If not found, everything
+    is based on finding 'nvcc' in the PATH.
+    """
+
+    # first check if the CUDAHOME env variable is in use
+    if 'CUDAHOME' in os.environ:
+        home = os.environ['CUDAHOME']
+        nvcc = pjoin(home, 'bin', 'nvcc')
+    else:
+        # otherwise, search the PATH for NVCC
+        default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin')
+        nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path)
+        if nvcc is None:
+            raise EnvironmentError('The nvcc binary could not be '
+                'located in your $PATH. Either add it to your path, or set $CUDAHOME')
+        home = os.path.dirname(os.path.dirname(nvcc))
+
+    cudaconfig = {'home':home, 'nvcc':nvcc,
+                  'include': pjoin(home, 'include'),
+                  'lib64': pjoin(home, 'lib64')}
+    for k, v in cudaconfig.items():
+        if not os.path.exists(v):
+            raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v))
+
+    return cudaconfig
+CUDA = locate_cuda()
+
+
+# Obtain the numpy include directory.  This logic works across numpy versions.
+try:
+    numpy_include = np.get_include()
+except AttributeError:
+    numpy_include = np.get_numpy_include()
+
+
+def customize_compiler_for_nvcc(self):
+    """inject deep into distutils to customize how the dispatch
+    to gcc/nvcc works.
+    If you subclass UnixCCompiler, it's not trivial to get your subclass
+    injected in, and still have the right customizations (i.e.
+    distutils.sysconfig.customize_compiler) run on it. So instead of going
+    the OO route, I have this. Note, it's kindof like a wierd functional
+    subclassing going on."""
+
+    # tell the compiler it can processes .cu
+    self.src_extensions.append('.cu')
+
+    # save references to the default compiler_so and _comple methods
+    default_compiler_so = self.compiler_so
+    super = self._compile
+
+    # now redefine the _compile method. This gets executed for each
+    # object but distutils doesn't have the ability to change compilers
+    # based on source extension: we add it.
+    def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
+        if os.path.splitext(src)[1] == '.cu':
+            # use the cuda for .cu files
+            self.set_executable('compiler_so', CUDA['nvcc'])
+            # use only a subset of the extra_postargs, which are 1-1 translated
+            # from the extra_compile_args in the Extension class
+            postargs = extra_postargs['nvcc']
+        else:
+            postargs = extra_postargs['gcc']
+
+        super(obj, src, ext, cc_args, postargs, pp_opts)
+        # reset the default compiler_so, which we might have changed for cuda
+        self.compiler_so = default_compiler_so
+
+    # inject our redefined _compile method into the class
+    self._compile = _compile
+
+
+# run the customize_compiler
+class custom_build_ext(build_ext):
+    def build_extensions(self):
+        customize_compiler_for_nvcc(self.compiler)
+        build_ext.build_extensions(self)
+
+
+ext_modules = [
+    Extension(
+        "cpu_nms",
+        ["cpu_nms.pyx"],
+        extra_compile_args={'gcc': ["-Wno-cpp", "-Wno-unused-function"]},
+        include_dirs = [numpy_include]
+    ),
+    Extension('gpu_nms',
+        ['nms_kernel.cu', 'gpu_nms.pyx'],
+        library_dirs=[CUDA['lib64']],
+        libraries=['cudart'],
+        language='c++',
+        runtime_library_dirs=[CUDA['lib64']],
+        # this syntax is specific to this build system
+        # we're only going to use certain compiler args with nvcc and not with
+        # gcc the implementation of this trick is in customize_compiler() below
+        extra_compile_args={'gcc': ["-Wno-unused-function"],
+                            'nvcc': ['-arch=sm_35',
+                                     '--ptxas-options=-v',
+                                     '-c',
+                                     '--compiler-options',
+                                     "'-fPIC'"]},
+        include_dirs = [numpy_include, CUDA['include']]
+    ),
+]
+
+setup(
+    name='nms',
+    ext_modules=ext_modules,
+    # inject our custom trigger
+    cmdclass={'build_ext': custom_build_ext},
+)
diff --git a/lib/utils/__init__.py b/lib/utils/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/lib/utils/debug.py b/lib/utils/debug.py
new file mode 100644
index 0000000..ae6a69a
--- /dev/null
+++ b/lib/utils/debug.py
@@ -0,0 +1,84 @@
+import matplotlib.pyplot as plt
+import numpy as np
+import gc, torch
+
+
+class GradPlots:
+    def __init__(self, key=None):
+        self.layers = []
+        self.ave_grads = {}
+        self.epochs = 0
+        self.key = key
+
+    def save_grads(self, named_parameters):
+        ave_grads = []
+        layers = []
+        for n, p in named_parameters:
+            if self.key in n:
+                print(n)
+            if (p.requires_grad) and ("bias" not in n):
+                layers.append(n)
+                ave_grads.append(p.grad.abs().mean())
+
+        np_grads = np.asarray(ave_grads)
+        if self.key is None:
+            # Keep 10 greatest
+            idx = np_grads.argpartition(-10)[-10:]
+        else:
+            idx = [i for i, k in enumerate(layers) if self.key in k]
+        ave_grads = np_grads[idx].tolist()
+        layers = np.asarray(layers)[idx].tolist()
+
+        for l, layer in enumerate(layers):
+            if layer in self.layers:
+                self.ave_grads[layer].append(ave_grads[l])
+            else:
+                self.ave_grads[layer] = [ave_grads[l]]
+                self.layers.append(layer)
+
+        self.epochs += 1
+
+        for k in self.ave_grads:
+            while len(self.ave_grads[k]) < self.epochs:
+                self.ave_grads[k] = [0] + self.ave_grads[k]
+
+    def plot_graph(self):
+        for e in range(self.epochs):
+            ave_grad = [self.ave_grads[l][e] for l in self.layers]
+
+            plt.plot(ave_grad, alpha=0.3, label=f'{e}')
+
+        plt.hlines(0, 0, len(self.layers) + 1, linewidth=1, color="k")
+        plt.xticks(range(0, len(self.layers), 1), self.layers, rotation="vertical")
+        plt.xlim(xmin=0, xmax=len(self.layers))
+        plt.xlabel("Layers")
+        plt.ylabel("average gradient")
+        plt.title("Gradient flow")
+        plt.grid(True)
+        plt.legend()
+        plt.savefig('debug_grad.png', bbox_inches='tight')
+
+
+def print_tensors():
+    tensors = {}
+    for obj in gc.get_objects():
+        try:
+            if torch.is_tensor(obj) or (hasattr(obj, 'data') and torch.is_tensor(obj.data)):
+                lbl_type = type(obj)
+                if lbl_type == torch.nn.parameter.Parameter:
+                    lbl_type = 'parameter'
+                elif lbl_type == torch.Tensor:
+                    lbl_type = 'tensor'
+
+                mem_size = obj.element_size() * obj.nelement()
+                lbls_mem = ['', 'k', 'M', 'G', 'T', 'P']
+                i = 0
+                while mem_size >= 1024:
+                    mem_size /= 1024
+                    i += 1
+                tensors[
+                    obj.element_size() * obj.nelement()] = f'{lbl_type}: {tuple(obj.size())}, {mem_size:.2}{lbls_mem[i]}b'
+        except:
+            pass
+    for k in sorted(tensors, reverse=True):
+        print(tensors[k])
diff --git a/lib/utils/tabs.py b/lib/utils/tabs.py
new file mode 100644
index 0000000..7019e72
--- /dev/null
+++ b/lib/utils/tabs.py
@@ -0,0 +1,103 @@
+import numpy as np
+
+
+def text_from_data(data, lbls_r=None, lbls_c=None):
+    text = ''
+    if not data:
+        return text
+
+    if not type(data[0]) in (list, dict, np.ndarray):
+        data = [data]
+
+    if lbls_c:
+        text = '\t' if lbls_r else ''
+        text += '\t'.join(lbls_c)
+
+    for r, row in enumerate(data):
+        if lbls_c or r:
+            text += '\n'
+        if lbls_r:
+            text += lbls_r[r] + '\t'
+
+        text += '\t'.join([f'{x:0.2f}' if type(x) in [float, np.float_] else f'{x}' for x in row])
+
+    return text
+
+
+class Tabs:
+    def __init__(self, data, lbls_r=None, lbls_c=None, logger=None):
+        if not data:
+            return
+        self.text = data if type(data) == str else text_from_data(data, lbls_r=lbls_r, lbls_c=lbls_c)
+
+        self.rows = [l.split('\t') for l in self.text.split('\n')]
+        if self.text[-1] == '\n':
+            self.rows.pop()
+
+        self.num_l = len(self.rows)
+        self.num_c = len(self.rows[0]) if self.rows else 0
+
+        self.cols = [[l[i] if len(l) > i else '' for l in self.rows] for i in range(self.num_c)]
+
+        self.len_c = [max([len(x) for x in c]) for c in self.cols]
+
+        self.logger = logger
+        self.disp_text = self.disp()
+
+    def disp(self):
+        disp_text = ''
+        for row in self.rows:
+            for c, w in enumerate(row):
+                disp_text += '\t' if c > 0 else ''
+                disp_text += w + ' ' * (self.len_c[c] - len(w))
+            disp_text += '\n'
+
+        if self.logger:
+            self.logger.info('\n' + disp_text)
+        else:
+            print(disp_text)
+        return disp_text
+
+    def to_latex(self):
+        header = """
+        \\begin{table}[!htb]
+        \\centering
+        \\small
+        \\renewcommand{\\tabcolsep}{2pt}
+        \\begin{tabular}{"""
+
+        header2 = ''.join(['c' + (' ' if c else '|') for c in range(self.num_c)])
+        header3 = """}
+        \\hline
+        """
+
+        header = header + header2 + header3
+
+        feat = """\\hline        
+        \\multicolumn{9}{c}{}
+        \\end{tabular}
+        \\caption{Comparisons of AP scores on the COCO 2017 val set with AP OKS.}
+        \\label{tab:cocotest}
+        \\end{table}"""
+
+        mid = ''
+        for r, row in enumerate(self.rows):
+            for c, w in enumerate(row):
+                mid += ' & ' if c > 0 else ''
+                mid += w
+            mid += '\\\\\n'
+            if not r:
+                mid += "\\hline\n"
+
+        tab = header + mid + feat
+        print(tab.replace('        ', ''))
+
+
+if __name__ == '__main__':
+    lbl_c = ['AP', 'AP$^{50}$', 'AP$^{75}$', 'AP$^L$', 'AR', 'AR$^{50}$', 'AR$^{75}$', 'AR$^L$']
+    lbl_r = [r'SBl~\cite{Xiao_2018_ECCV}', r'MSPN~\cite{MSPN_2019}', 'RSN~\cite{RSN_2020}']
+    data = [[.72, .92, .80, .77, .76, .93, .82, .80],
+            [.77, .94, .85, .82, .80, .95, .87, .85],
+            [.76, .94, .84, .81, .79, .94, .85, .84]]
+    t = Tabs(data, lbls_r=lbl_r, lbls_c=lbl_c)
+    t.to_latex()
diff --git a/lib/utils/transforms.py b/lib/utils/transforms.py
new file mode 100644
index 0000000..173d439
--- /dev/null
+++ b/lib/utils/transforms.py
@@ -0,0 +1,123 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import numpy as np
+import cv2
+
+
+def flip_back(output_flipped, matched_parts):
+    '''
+    ouput_flipped: numpy.ndarray(batch_size, num_joints, height, width)
+    '''
+    assert output_flipped.ndim == 4,\
+        'output_flipped should be [batch_size, num_joints, height, width]'
+
+    output_flipped = output_flipped[:, :, :, ::-1]
+
+    for pair in matched_parts:
+        tmp = output_flipped[:, pair[0], :, :].copy()
+        output_flipped[:, pair[0], :, :] = output_flipped[:, pair[1], :, :]
+        output_flipped[:, pair[1], :, :] = tmp
+
+    return output_flipped
+
+
+def fliplr_joints(joints, joints_vis, width, matched_parts):
+    """
+    flip coords
+    """
+    # Flip horizontal
+    joints[:, 0] = width - joints[:, 0] - 1
+
+    # Change left-right parts
+    for pair in matched_parts:
+        joints[pair[0], :], joints[pair[1], :] = \
+            joints[pair[1], :], joints[pair[0], :].copy()
+        joints_vis[pair[0], :], joints_vis[pair[1], :] = \
+            joints_vis[pair[1], :], joints_vis[pair[0], :].copy()
+
+    return joints*(joints_vis > 0), joints_vis
+
+
+def transform_preds(coords, center, scale, output_size):
+    target_coords = np.zeros(coords.shape)
+    trans = get_affine_transform(center, scale, 0, output_size, inv=1)
+    for p in range(coords.shape[0]):
+        target_coords[p, 0:2] = affine_transform(coords[p, 0:2], trans)
+    return target_coords
+
+
+def get_affine_transform(center,
+                         scale,
+                         rot,
+                         output_size,
+                         shift=np.array([0, 0], dtype=np.float32),
+                         inv=0):
+    if not isinstance(scale, np.ndarray) and not isinstance(scale, list):
+        print(scale)
+        scale = np.array([scale, scale])
+
+    scale_tmp = scale * 200.0
+    src_w = scale_tmp[0]
+    dst_w = output_size[0]
+    dst_h = output_size[1]
+
+    rot_rad = np.pi * rot / 180
+    src_dir = get_dir([0, src_w * -0.5], rot_rad)
+    dst_dir = np.array([0, dst_w * -0.5], np.float32)
+
+    src = np.zeros((3, 2), dtype=np.float32)
+    dst = np.zeros((3, 2), dtype=np.float32)
+    src[0, :] = center + scale_tmp * shift
+    src[1, :] = center + src_dir + scale_tmp * shift
+    dst[0, :] = [dst_w * 0.5, dst_h * 0.5]
+    dst[1, :] = np.array([dst_w * 0.5, dst_h * 0.5]) + dst_dir
+
+    src[2:, :] = get_3rd_point(src[0, :], src[1, :])
+    dst[2:, :] = get_3rd_point(dst[0, :], dst[1, :])
+
+    if inv:
+        trans = cv2.getAffineTransform(np.float32(dst), np.float32(src))
+    else:
+        trans = cv2.getAffineTransform(np.float32(src), np.float32(dst))
+
+    return trans
+
+
+def affine_transform(pt, t):
+    new_pt = np.array([pt[0], pt[1], 1.]).T
+    new_pt = np.dot(t, new_pt)
+    return new_pt[:2]
+
+
+def get_3rd_point(a, b):
+    direct = a - b
+    return b + np.array([-direct[1], direct[0]], dtype=np.float32)
+
+
+def get_dir(src_point, rot_rad):
+    sn, cs = np.sin(rot_rad), np.cos(rot_rad)
+
+    src_result = [0, 0]
+    src_result[0] = src_point[0] * cs - src_point[1] * sn
+    src_result[1] = src_point[0] * sn + src_point[1] * cs
+
+    return src_result
+
+
+def crop(img, center, scale, output_size, rot=0):
+    trans = get_affine_transform(center, scale, rot, output_size)
+
+    dst_img = cv2.warpAffine(img,
+                             trans,
+                             (int(output_size[0]), int(output_size[1])),
+                             flags=cv2.INTER_LINEAR)
+
+    return dst_img
diff --git a/lib/utils/utils.py b/lib/utils/utils.py
new file mode 100644
index 0000000..c7f7620
--- /dev/null
+++ b/lib/utils/utils.py
@@ -0,0 +1,129 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
+import logging
+import sys
+import time
+from pathlib import Path
+from collections import OrderedDict
+
+import torch
+import torch.optim as optim
+
+from core.config import get_model_name
+
+
+def create_logger(cfg, cfg_name, phase='train'):
+    root_output_dir = Path(cfg.OUTPUT_DIR)
+    # set up logger
+    if not root_output_dir.exists():
+        print('=> creating {}'.format(root_output_dir))
+        root_output_dir.mkdir()
+
+    dataset = cfg.DATASET.DATASET + '_' + cfg.DATASET.HYBRID_JOINTS_TYPE \
+        if cfg.DATASET.HYBRID_JOINTS_TYPE else cfg.DATASET.DATASET
+    dataset = dataset.replace(':', '_')
+    model, _ = get_model_name(cfg)
+    cfg_name = os.path.basename(cfg_name).split('.')[0]
+
+    final_output_dir = root_output_dir / dataset / model / cfg_name
+
+    print('=> creating {}'.format(final_output_dir))
+    final_output_dir.mkdir(parents=True, exist_ok=True)
+
+    time_str = time.strftime('%Y-%m-%d-%H-%M')
+    log_file = '{}_{}_{}.log'.format(cfg_name, time_str, phase)
+    final_log_file = final_output_dir / log_file
+    head = '%(asctime)-15s %(message)s'
+    logging.basicConfig(filename=str(final_log_file),
+                        format=head)
+    logger = logging.getLogger()
+    logger.setLevel(logging.INFO)
+    console = logging.StreamHandler(sys.stdout)
+    logging.getLogger('').addHandler(console)
+
+    tensorboard_log_dir = Path(cfg.LOG_DIR) / dataset / model / \
+                          (cfg_name + '_' + time_str)
+    print('=> creating {}'.format(tensorboard_log_dir))
+    tensorboard_log_dir.mkdir(parents=True, exist_ok=True)
+
+    return logger, str(final_output_dir), str(tensorboard_log_dir)
+
+
+def get_optimizer(cfg, model):
+    optimizer = None
+    if cfg.TRAIN.OPTIMIZER == 'sgd':
+        optimizer = optim.SGD(
+            model.parameters(),
+            lr=cfg.TRAIN.LR,
+            momentum=cfg.TRAIN.MOMENTUM,
+            weight_decay=cfg.TRAIN.WD,
+            nesterov=cfg.TRAIN.NESTEROV
+        )
+    elif cfg.TRAIN.OPTIMIZER == 'adam':
+        optimizer = optim.Adam(
+            model.parameters(),
+            lr=cfg.TRAIN.LR
+        )
+
+    return optimizer
+
+
+def save_checkpoint(states, is_best, output_dir,
+                    filename='checkpoint.pth.tar'):
+    torch.save(states, os.path.join(output_dir, filename))
+    if is_best and 'state_dict' in states:
+        torch.save(states['state_dict'],
+                   os.path.join(output_dir, 'model_best.pth.tar'))
+
+
+def convert_state_dict(state_dict, keys, error):
+    msg = str(error)
+    for m in ['Error(s) in loading state_dict for', 'Missing key(s)', 'Unexpected key(s)']:
+        if m not in msg:
+            raise error
+
+    lines = msg.split('\n')
+    missing = []
+    unexpected = []
+    for i, line in enumerate(lines[1:]):
+        storage = (missing, unexpected)[i]
+        for word in line.split():
+            if '"' not in word:
+                continue
+            storage.append(word[1:-2])
+
+    if len(missing) > len(unexpected):
+        raise error
+
+    new_dict = OrderedDict()
+    for k, v in state_dict.items():
+        if k not in unexpected:
+            new_dict[k] = v
+            continue
+        elif '.num_batches_tracked' in k:
+            continue
+        for i, m in enumerate(missing):
+            split_m = m.split('.')
+            short_m = '.'.join(split_m[1:])
+            if short_m == k and split_m[0] in keys:
+                new_dict[m] = v
+
+                if '.running_var' in m:
+                    nbt = m.replace('.running_var', '.num_batches_tracked')
+                    new_dict[nbt] = state_dict[k.replace('.running_var', '.num_batches_tracked')]
+
+                missing.pop(i)
+                break
+        else:
+            raise error
+
+    return OrderedDict(new_dict)
diff --git a/lib/utils/vis.py b/lib/utils/vis.py
new file mode 100644
index 0000000..adc0947
--- /dev/null
+++ b/lib/utils/vis.py
@@ -0,0 +1,141 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import math
+
+import numpy as np
+import torchvision
+import cv2
+
+from core.inference import get_max_preds
+
+
+def save_batch_image_with_joints(batch_image, batch_joints, batch_joints_vis,
+                                 file_name, nrow=8, padding=2):
+    '''
+    batch_image: [batch_size, channel, height, width]
+    batch_joints: [batch_size, num_joints, 3],
+    batch_joints_vis: [batch_size, num_joints, 1],
+    }
+    '''
+    grid = torchvision.utils.make_grid(batch_image, nrow, padding, True)
+    ndarr = grid.mul(255).clamp(0, 255).byte().permute(1, 2, 0).cpu().numpy()
+    ndarr = ndarr.copy()
+
+    nmaps = batch_image.size(0)
+    xmaps = min(nrow, nmaps)
+    ymaps = int(math.ceil(float(nmaps) / xmaps))
+    height = int(batch_image.size(2) + padding)
+    width = int(batch_image.size(3) + padding)
+    k = 0
+    for y in range(ymaps):
+        for x in range(xmaps):
+            if k >= nmaps:
+                break
+            joints = batch_joints[k]
+            joints_vis = batch_joints_vis[k]
+
+            for joint, joint_vis in zip(joints, joints_vis):
+                joint[0] = x * width + padding + joint[0]
+                joint[1] = y * height + padding + joint[1]
+                if joint_vis[0]:
+                    cv2.circle(ndarr, (int(joint[0]), int(joint[1])), 2, [255, 0, 0], 2)
+            k = k + 1
+    cv2.imwrite(file_name, ndarr)
+
+
+def save_batch_heatmaps(batch_image, batch_heatmaps, file_name,
+                        normalize=True):
+    '''
+    batch_image: [batch_size, channel, height, width]
+    batch_heatmaps: ['batch_size, num_joints, height, width]
+    file_name: saved file name
+    '''
+    if normalize:
+        batch_image = batch_image.clone()
+        min = float(batch_image.min())
+        max = float(batch_image.max())
+
+        batch_image.add_(-min).div_(max - min + 1e-5)
+
+    batch_size = batch_heatmaps.size(0)
+    num_joints = batch_heatmaps.size(1)
+    heatmap_height = batch_heatmaps.size(2)
+    heatmap_width = batch_heatmaps.size(3)
+
+    grid_image = np.zeros((batch_size*heatmap_height,
+                           (num_joints+1)*heatmap_width,
+                           3),
+                          dtype=np.uint8)
+
+    preds, maxvals = get_max_preds(batch_heatmaps.detach().cpu().numpy())
+
+    for i in range(batch_size):
+        image = batch_image[i].mul(255)\
+                              .clamp(0, 255)\
+                              .byte()\
+                              .permute(1, 2, 0)\
+                              .cpu().numpy()
+        heatmaps = batch_heatmaps[i].mul(255)\
+                                    .clamp(0, 255)\
+                                    .byte()\
+                                    .cpu().numpy()
+
+        resized_image = cv2.resize(image,
+                                   (int(heatmap_width), int(heatmap_height)))
+
+        height_begin = heatmap_height * i
+        height_end = heatmap_height * (i + 1)
+        for j in range(num_joints):
+            cv2.circle(resized_image,
+                       (int(preds[i][j][0]), int(preds[i][j][1])),
+                       1, [0, 0, 255], 1)
+            heatmap = heatmaps[j, :, :]
+            colored_heatmap = cv2.applyColorMap(heatmap, cv2.COLORMAP_JET)
+            masked_image = colored_heatmap*0.7 + resized_image*0.3
+            cv2.circle(masked_image,
+                       (int(preds[i][j][0]), int(preds[i][j][1])),
+                       1, [0, 0, 255], 1)
+
+            width_begin = heatmap_width * (j+1)
+            width_end = heatmap_width * (j+2)
+            grid_image[height_begin:height_end, width_begin:width_end, :] = \
+                masked_image
+            # grid_image[height_begin:height_end, width_begin:width_end, :] = \
+            #     colored_heatmap*0.7 + resized_image*0.3
+
+        grid_image[height_begin:height_end, 0:heatmap_width, :] = resized_image
+
+    cv2.imwrite(file_name, grid_image)
+
+
+def save_debug_images(config, input, meta, target, joints_pred, output,
+                      prefix):
+    if not config.DEBUG.DEBUG:
+        return
+
+    if config.DEBUG.SAVE_BATCH_IMAGES_GT:
+        save_batch_image_with_joints(
+            input, meta['joints'], meta['joints_vis'],
+            '{}_gt.jpg'.format(prefix)
+        )
+    if config.DEBUG.SAVE_BATCH_IMAGES_PRED:
+        save_batch_image_with_joints(
+            input, joints_pred, meta['joints_vis'],
+            '{}_pred.jpg'.format(prefix)
+        )
+    if config.DEBUG.SAVE_HEATMAPS_GT:
+        save_batch_heatmaps(
+            input, target, '{}_hm_gt.jpg'.format(prefix)
+        )
+    if config.DEBUG.SAVE_HEATMAPS_PRED:
+        save_batch_heatmaps(
+            input, output, '{}_hm_pred.jpg'.format(prefix)
+        )
diff --git a/lib/utils/zipreader.py b/lib/utils/zipreader.py
new file mode 100644
index 0000000..7c447a3
--- /dev/null
+++ b/lib/utils/zipreader.py
@@ -0,0 +1,70 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
+import zipfile
+import xml.etree.ElementTree as ET
+
+import cv2
+import numpy as np
+
+_im_zfile = []
+_xml_path_zip = []
+_xml_zfile = []
+
+
+def imread(filename, flags=cv2.IMREAD_COLOR):
+    global _im_zfile
+    path = filename
+    pos_at = path.index('@')
+    if pos_at == -1:
+        print("character '@' is not found from the given path '%s'"%(path))
+        assert 0
+    path_zip = path[0: pos_at]
+    path_img = path[pos_at + 2:]
+    if not os.path.isfile(path_zip):
+        print("zip file '%s' is not found"%(path_zip))
+        assert 0
+    for i in range(len(_im_zfile)):
+        if _im_zfile[i]['path'] == path_zip:
+            data = _im_zfile[i]['zipfile'].read(path_img)
+            return cv2.imdecode(np.frombuffer(data, np.uint8), flags)
+
+    _im_zfile.append({
+        'path': path_zip,
+        'zipfile': zipfile.ZipFile(path_zip, 'r')
+    })
+    data = _im_zfile[-1]['zipfile'].read(path_img)
+
+    return cv2.imdecode(np.frombuffer(data, np.uint8), flags)
+
+
+def xmlread(filename):
+    global _xml_path_zip
+    global _xml_zfile
+    path = filename
+    pos_at = path.index('@')
+    if pos_at == -1:
+        print("character '@' is not found from the given path '%s'"%(path))
+        assert 0
+    path_zip = path[0: pos_at]
+    path_xml = path[pos_at + 2:]
+    if not os.path.isfile(path_zip):
+        print("zip file '%s' is not found"%(path_zip))
+        assert 0
+    for i in range(len(_xml_path_zip)):
+        if _xml_path_zip[i] == path_zip:
+            data = _xml_zfile[i].open(path_xml)
+            return ET.fromstring(data.read())
+    _xml_path_zip.append(path_zip)
+    print("read new xml file '%s'"%(path_zip))
+    _xml_zfile.append(zipfile.ZipFile(path_zip, 'r'))
+    data = _xml_zfile[-1].open(path_xml)
+    return ET.fromstring(data.read())
diff --git a/pose_estimation/_init_paths.py b/pose_estimation/_init_paths.py
new file mode 100644
index 0000000..d3c81c3
--- /dev/null
+++ b/pose_estimation/_init_paths.py
@@ -0,0 +1,23 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os.path as osp
+import sys
+
+
+def add_path(path):
+    if path not in sys.path:
+        sys.path.insert(0, path)
+
+
+this_dir = osp.dirname(__file__)
+
+lib_path = osp.join(this_dir, '..', 'lib')
+add_path(lib_path)
diff --git a/pose_estimation/train.py b/pose_estimation/train.py
new file mode 100644
index 0000000..899897d
--- /dev/null
+++ b/pose_estimation/train.py
@@ -0,0 +1,272 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import argparse
+import os
+import pprint
+import shutil
+from collections import OrderedDict
+
+import torch
+import torch.nn.parallel
+import torch.backends.cudnn as cudnn
+import torch.optim
+import torch.utils.data
+import torch.utils.data.distributed
+import torchvision.transforms as transforms
+from tensorboardX import SummaryWriter
+
+import _init_paths
+from core.config import config
+from core.config import update_config
+from core.config import update_dir
+from core.config import get_model_name
+from core.loss import JointsMSELoss, JointsMSELossVis
+from core.function import train
+from core.function import validate
+from utils.utils import get_optimizer
+from utils.utils import save_checkpoint
+from utils.utils import create_logger
+
+import dataset
+import models
+
+
+def parse_args():
+    parser = argparse.ArgumentParser(description='Train keypoints network')
+    # general
+    parser.add_argument('--cfg',
+                        help='experiment configure file name',
+                        required=True,
+                        type=str)
+
+    args, rest = parser.parse_known_args()
+    # update config
+    update_config(args.cfg)
+
+    # training
+    parser.add_argument('--frequent',
+                        help='frequency of logging',
+                        default=config.PRINT_FREQ,
+                        type=int)
+    parser.add_argument('--gpus',
+                        help='gpus',
+                        type=str)
+    parser.add_argument('--workers',
+                        help='num of dataloader workers',
+                        type=int)
+    parser.add_argument('--resume',
+                        action='store_true',
+                        help='Resume')
+
+    parser.add_argument('--model-file',
+                        help='model state file',
+                        type=str)
+
+    parser.add_argument('--debug-memory', action='store_true')
+
+    args = parser.parse_args()
+
+    return args
+
+
+def reset_config(config, args):
+    if args.gpus:
+        config.GPUS = args.gpus
+    if args.workers:
+        config.WORKERS = args.workers
+
+    if args.resume:
+        config.MODEL.INIT_WEIGHTS = False
+        if args.model_file:
+            config.TRAIN.CHECKPOINT = args.model_file
+
+    if args.debug_memory:
+        config.DEBUG.DEBUG_MEMORY = True
+
+
+def main():
+    args = parse_args()
+    reset_config(config, args)
+
+    logger, final_output_dir, tb_log_dir = create_logger(
+        config, args.cfg, 'train')
+
+    logger.info(pprint.pformat(args))
+    logger.info(pprint.pformat(config))
+
+    # cudnn related setting
+    cudnn.benchmark = config.CUDNN.BENCHMARK
+    torch.backends.cudnn.deterministic = config.CUDNN.DETERMINISTIC
+    torch.backends.cudnn.enabled = config.CUDNN.ENABLED
+
+    model = eval('models.' + config.MODEL.NAME + '.get_pose_net')(
+        config, is_train=True
+    )
+
+    if args.resume:
+        logger.info('=> loading model from {}'.format(config.TRAIN.CHECKPOINT))
+        meta_info = torch.load(config.TRAIN.CHECKPOINT)
+
+        # resume previous training
+        state_dict = OrderedDict({k.replace('module.', ''): v
+                                  for k, v in meta_info['state_dict'].items()})
+        config.TRAIN.BEGIN_EPOCH = meta_info['epoch']
+        model.load_state_dict(state_dict)
+
+    else:
+        '''
+        logger.info('=> initialize from coco, so adjusting the last layer')
+        model.final_layer = torch.nn.Conv2d(256, config.MODEL.NUM_JOINTS, (1, 1), (1, 1))
+        logger.info('=> adjust done.')
+        '''
+        pass
+
+    if config.TRAIN.FREEZE:
+        model.freeze_encoder()
+        model.freeze_deconv()
+
+    # copy model file
+    this_dir = os.path.dirname(__file__)
+    shutil.copy2(
+        os.path.join(this_dir, '../lib/models', config.MODEL.NAME + '.py'),
+        final_output_dir)
+
+    writer_dict = {
+        'writer': SummaryWriter(log_dir=tb_log_dir),
+        'train_global_steps': 0,
+        'valid_global_steps': 0,
+    }
+
+    dump_input = torch.rand((config.TRAIN.BATCH_SIZE,
+                             3,
+                             config.MODEL.IMAGE_SIZE[1],
+                             config.MODEL.IMAGE_SIZE[0]))
+    writer_dict['writer'].add_graph(model, (dump_input,), verbose=False)
+
+    gpus = [int(i) for i in config.GPUS.split(',')]
+    model = torch.nn.DataParallel(model, device_ids=gpus).cuda()
+
+    # define loss function (criterion) and optimizer
+    if config.MODEL.PREDICT_VIS:
+        class_weights = None
+        if config.LOSS.USE_CLASS_WEIGHT:
+            vis_weight = [1.61, 7.83, 1.]
+            if config.MODEL.NB_VIS == 2:
+                vis_weight = [(1 / vis_weight[1] + 1 / vis_weight[2]) * vis_weight[0], 1.]
+            class_weights = torch.FloatTensor(vis_weight).cuda()
+        criterion = JointsMSELossVis(
+            use_target_weight=config.LOSS.USE_TARGET_WEIGHT,
+            vis_ratio=config.LOSS.VIS_RATIO,
+            vis_weight=class_weights
+        ).cuda()
+        for st in config.LOSS.VIS_STEP:
+            if config.TRAIN.BEGIN_EPOCH >= st:
+                criterion.update_vis_ratio(config.LOSS.VIS_FACTOR)
+            else:
+                break
+    else:
+        criterion = JointsMSELoss(
+            use_target_weight=config.LOSS.USE_TARGET_WEIGHT
+        ).cuda()
+
+    optimizer = get_optimizer(config, model)
+
+    lr_scheduler = torch.optim.lr_scheduler.MultiStepLR(
+        optimizer, config.TRAIN.LR_STEP, config.TRAIN.LR_FACTOR
+    )
+
+    # Data loading code
+    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
+                                     std=[0.229, 0.224, 0.225])
+    train_dataset = eval('dataset.' + config.DATASET.DATASET)(
+        config,
+        config.DATASET.ROOT,
+        config.DATASET.TRAIN_SET,
+        True,
+        transforms.Compose([
+            transforms.ToTensor(),
+            normalize,
+        ])
+    )
+    valid_dataset = eval('dataset.' + config.DATASET.DATASET)(
+        config,
+        config.DATASET.ROOT,
+        config.DATASET.TEST_SET,
+        False,
+        transforms.Compose([
+            transforms.ToTensor(),
+            normalize,
+        ])
+    )
+
+    train_loader = torch.utils.data.DataLoader(
+        train_dataset,
+        batch_size=config.TRAIN.BATCH_SIZE * len(gpus),
+        shuffle=config.TRAIN.SHUFFLE,
+        num_workers=config.WORKERS,
+        pin_memory=True
+    )
+    valid_loader = torch.utils.data.DataLoader(
+        valid_dataset,
+        batch_size=config.TEST.BATCH_SIZE * len(gpus),
+        shuffle=False,
+        num_workers=config.WORKERS,
+        pin_memory=True
+    )
+
+    best_perf = 0.0
+    best_model = False
+    for epoch in range(config.TRAIN.BEGIN_EPOCH, config.TRAIN.END_EPOCH):
+
+        # Step Loss
+        if config.MODEL.PREDICT_VIS and epoch in config.LOSS.VIS_STEP:
+            criterion.update_vis_ratio(config.LOSS.VIS_FACTOR)
+
+        # train for one epoch
+        train(config, train_loader, model, criterion, optimizer, epoch,
+              final_output_dir, tb_log_dir, writer_dict)
+
+        lr_scheduler.step()
+
+        # evaluate on validation set
+        perf_indicator = validate(config, valid_loader, valid_dataset, model,
+                                  criterion, final_output_dir, tb_log_dir,
+                                  writer_dict)
+
+        if perf_indicator > best_perf:
+            best_perf = perf_indicator
+            best_model = True
+        else:
+            best_model = False
+
+        logger.info('=> saving checkpoint to {}'.format(final_output_dir))
+        save_checkpoint({
+            'epoch': epoch + 1,
+            'model': get_model_name(config),
+            'state_dict': model.state_dict(),
+            'perf': perf_indicator,
+            'optimizer': optimizer.state_dict(),
+        }, best_model, final_output_dir)
+
+        if config.TRAIN.SAVE_CHECKPOINT and not (epoch + 1) % config.TRAIN.SAVE_CHECKPOINT:
+            shutil.copy2(os.path.join(final_output_dir, 'checkpoint.pth.tar'),
+                         os.path.join(final_output_dir, f'checkpoint_{epoch + 1}.pth.tar'))
+
+    final_model_state_file = os.path.join(final_output_dir,
+                                          'final_state.pth.tar')
+    logger.info('saving final model state to {}'.format(
+        final_model_state_file))
+    torch.save(model.module.state_dict(), final_model_state_file)
+    writer_dict['writer'].close()
+
+
+if __name__ == '__main__':
+    main()
diff --git a/pose_estimation/valid.py b/pose_estimation/valid.py
new file mode 100644
index 0000000..35856a3
--- /dev/null
+++ b/pose_estimation/valid.py
@@ -0,0 +1,189 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License.
+# Written by Bin Xiao (Bin.Xiao@microsoft.com)
+# ------------------------------------------------------------------------------
+
+
+from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import argparse
+import os
+import pprint
+from collections import OrderedDict
+
+import torch
+import torch.nn.parallel
+import torch.backends.cudnn as cudnn
+import torch.optim
+import torch.utils.data
+import torch.utils.data.distributed
+import torchvision.transforms as transforms
+
+import _init_paths
+from core.config import config
+from core.config import update_config
+from core.config import update_dir
+from core.loss import JointsMSELoss, JointsMSELossVis
+from core.function import validate
+from utils.utils import create_logger
+
+import dataset
+import models
+
+
+def parse_args():
+    parser = argparse.ArgumentParser(description='Train keypoints network')
+    # general
+    parser.add_argument('--cfg',
+                        help='experiment configure file name',
+                        required=True,
+                        type=str)
+
+    args, rest = parser.parse_known_args()
+    # update config
+    update_config(args.cfg)
+
+    # training
+    parser.add_argument('--frequent',
+                        help='frequency of logging',
+                        default=config.PRINT_FREQ,
+                        type=int)
+    parser.add_argument('--gpus',
+                        help='gpus',
+                        type=str)
+    parser.add_argument('--workers',
+                        help='num of dataloader workers',
+                        type=int)
+    parser.add_argument('--model-file',
+                        help='model state file',
+                        type=str)
+    parser.add_argument('--use-detect-bbox',
+                        help='use detect bbox',
+                        action='store_true')
+    parser.add_argument('--flip-test',
+                        help='use flip test',
+                        action='store_true')
+    parser.add_argument('--post-process',
+                        help='use post process',
+                        action='store_true')
+    parser.add_argument('--shift-heatmap',
+                        help='shift heatmap',
+                        action='store_true')
+    parser.add_argument('--coco-bbox-file',
+                        help='coco detection bbox file',
+                        type=str)
+
+    args = parser.parse_args()
+
+    return args
+
+
+def reset_config(config, args):
+    if args.gpus:
+        config.GPUS = args.gpus
+    if args.workers:
+        config.WORKERS = args.workers
+    if args.use_detect_bbox:
+        config.TEST.USE_GT_BBOX = not args.use_detect_bbox
+    if args.flip_test:
+        config.TEST.FLIP_TEST = args.flip_test
+    if args.post_process:
+        config.TEST.POST_PROCESS = args.post_process
+    if args.shift_heatmap:
+        config.TEST.SHIFT_HEATMAP = args.shift_heatmap
+    if args.model_file:
+        config.TEST.MODEL_FILE = args.model_file
+    if args.coco_bbox_file:
+        config.TEST.COCO_BBOX_FILE = args.coco_bbox_file
+
+
+def main():
+    args = parse_args()
+    reset_config(config, args)
+
+    logger, final_output_dir, tb_log_dir = create_logger(
+        config, args.cfg, 'valid')
+
+    logger.info(pprint.pformat(args))
+    logger.info(pprint.pformat(config))
+
+    # cudnn related setting
+    cudnn.benchmark = config.CUDNN.BENCHMARK
+    torch.backends.cudnn.deterministic = config.CUDNN.DETERMINISTIC
+    torch.backends.cudnn.enabled = config.CUDNN.ENABLED
+
+    model = eval('models.' + config.MODEL.NAME + '.get_pose_net')(
+        config, is_train=False
+    )
+
+    if config.TEST.MODEL_FILE:
+        logger.info('=> loading model from {}'.format(config.TEST.MODEL_FILE))
+
+        state_dict = torch.load(config.TEST.MODEL_FILE)
+        if "state_dict" in state_dict:
+            state_dict = OrderedDict([(k.replace('module.', ''), v) for k, v in state_dict['state_dict'].items()])
+        model.load_state_dict(state_dict)
+    else:
+        model_state_file = os.path.join(final_output_dir,
+                                        'final_state.pth.tar')
+        logger.info('=> loading model from {}'.format(model_state_file))
+        model.load_state_dict(torch.load(model_state_file))
+
+    gpus = [int(i) for i in config.GPUS.split(',')]
+    model = torch.nn.DataParallel(model, device_ids=gpus).cuda()
+
+    # define loss function (criterion) and optimizer
+    if config.MODEL.PREDICT_VIS:
+        class_weights = None
+        if config.LOSS.USE_CLASS_WEIGHT:
+            vis_weight = [1.61, 7.83, 1.]
+            if config.MODEL.NB_VIS == 2:
+                vis_weight = [(1 / vis_weight[1] + 1 / vis_weight[2]) * vis_weight[0], 1.]
+            class_weights = torch.FloatTensor(vis_weight).cuda()
+        criterion = JointsMSELossVis(
+            use_target_weight=config.LOSS.USE_TARGET_WEIGHT,
+            vis_ratio=config.LOSS.VIS_RATIO,
+            vis_weight=class_weights
+        ).cuda()
+        for st in config.LOSS.VIS_STEP:
+            if config.TRAIN.BEGIN_EPOCH >= st:
+                criterion.update_vis_ratio(config.LOSS.VIS_FACTOR)
+            else:
+                break
+    else:
+        criterion = JointsMSELoss(
+            use_target_weight=config.LOSS.USE_TARGET_WEIGHT
+        ).cuda()
+
+    # Data loading code
+    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406],
+                                     std=[0.229, 0.224, 0.225])
+
+    valid_dataset = eval('dataset.' + config.DATASET.DATASET)(
+        config,
+        config.DATASET.ROOT,
+        config.DATASET.TEST_SET,
+        False,
+        transforms.Compose([
+            transforms.ToTensor(),
+            normalize,
+        ])
+    )
+    valid_loader = torch.utils.data.DataLoader(
+        valid_dataset,
+        batch_size=config.TEST.BATCH_SIZE * len(gpus),
+        shuffle=False,
+        num_workers=config.WORKERS,
+        pin_memory=True
+    )
+
+    # evaluate on validation set
+    validate(config, valid_loader, valid_dataset, model, criterion,
+             final_output_dir, tb_log_dir)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..1e9306d
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,13 @@
+EasyDict
+opencv-python==3.4.13.47
+Cython
+scipy
+numpy
+pandas
+pyyaml
+json_tricks
+scikit-image
+scikit-learn
+tensorboard
+tensorboardX>=1.2
+torchvision
-- 
GitLab