From 2c2f22c3c502736b8be92e75319e223f9d3437f4 Mon Sep 17 00:00:00 2001 From: Josh Gruenstein Date: Sun, 2 Jun 2024 01:20:14 -0400 Subject: [PATCH] feat: initial fork/cutdown from aiortc --- .github/semantic.yml | 1 + .github/workflows/cd.yml | 56 ++ .gitignore | 134 +++++ LICENSE | 21 + README.md | 7 + build_cffi_bindings.py | 255 ++++++++ examples/duck.jpg | Bin 0 -> 298739 bytes examples/flag.py | 156 +++++ poetry.lock | 1085 +++++++++++++++++++++++++++++++++++ poetry_scripts.py | 24 + pyproject.toml | 46 ++ setup.cfg | 21 + vpx_rtp/__init__.py | 1 + vpx_rtp/clock.py | 29 + vpx_rtp/codecs/_vpx.pyi | 4 + vpx_rtp/codecs/vpx.py | 415 ++++++++++++++ vpx_rtp/jitterbuffer.py | 123 ++++ vpx_rtp/py.typed | 0 vpx_rtp/rtcrtpparameters.py | 93 +++ vpx_rtp/rtp.py | 349 +++++++++++ vpx_rtp/test.py | 1 + vpx_rtp/utils.py | 54 ++ 22 files changed, 2875 insertions(+) create mode 100644 .github/semantic.yml create mode 100644 .github/workflows/cd.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build_cffi_bindings.py create mode 100644 examples/duck.jpg create mode 100644 examples/flag.py create mode 100644 poetry.lock create mode 100644 poetry_scripts.py create mode 100644 pyproject.toml create mode 100644 setup.cfg create mode 100644 vpx_rtp/__init__.py create mode 100644 vpx_rtp/clock.py create mode 100644 vpx_rtp/codecs/_vpx.pyi create mode 100644 vpx_rtp/codecs/vpx.py create mode 100644 vpx_rtp/jitterbuffer.py create mode 100644 vpx_rtp/py.typed create mode 100644 vpx_rtp/rtcrtpparameters.py create mode 100644 vpx_rtp/rtp.py create mode 100644 vpx_rtp/test.py create mode 100644 vpx_rtp/utils.py diff --git a/.github/semantic.yml b/.github/semantic.yml new file mode 100644 index 0000000..791d9de --- /dev/null +++ b/.github/semantic.yml @@ -0,0 +1 @@ +titleOnly: true \ No newline at end of file diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml new file mode 100644 index 0000000..c6f4691 --- /dev/null +++ b/.github/workflows/cd.yml @@ -0,0 +1,56 @@ +name: Release +on: + push: + branches: main + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + # https://docs.github.com/en/rest/overview/permissions-required-for-github-apps?apiVersion=2022-11-28#metadata + id-token: write + contents: write + steps: + - uses: actions/checkout@v4 + with: + ref: main + fetch-depth: 0 + + - uses: actions/setup-python@v5 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y libvpx-dev + pip install python-semantic-release + + - name: Python semantic release + id: release + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + semantic-release -vv version + + - name: Publish package distributions to PyPI + id: pypi-publish + + # NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true. + # See https://github.com/actions/runner/issues/1173 + if: steps.release.outputs.released == 'true' + uses: pypa/gh-action-pypi-publish@release/v1 + with: + verbose: true + + - name: Publish package distributions to GitHub Releases + id: github-release + + # NOTE: DO NOT wrap the conditional in ${{ }} as it will always evaluate to true. + # See https://github.com/actions/runner/issues/1173 + if: steps.release.outputs.released == 'true' + uses: python-semantic-release/upload-to-gh-release@main + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ steps.release.outputs.tag }} + \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e7e1c3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,134 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-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/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# 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/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# Special stuff +vpx_rtp/codecs/*.c +*.so +*.o \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..45217ba --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Tutor Intelligence + +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 new file mode 100644 index 0000000..d95ce61 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# vpx-rtp-py + +[![PyPI version](https://badge.fury.io/py/vpx-rtp-py.svg)](https://badge.fury.io/py/vpx-rtp-py) + +python library for encoding/decoding video rtp streams using `libvpx`, loosly forked from `aiortc`. + +narrowly constructed for the use cases of [Tutor Intelligence](http://tutorintelligence.com/), but feel free to post an issue or PR if relevant to you. \ No newline at end of file diff --git a/build_cffi_bindings.py b/build_cffi_bindings.py new file mode 100644 index 0000000..e6b732c --- /dev/null +++ b/build_cffi_bindings.py @@ -0,0 +1,255 @@ +from cffi import FFI + +ffibuilder = FFI() + +ffibuilder.set_source( + "vpx_rtp.codecs._vpx", + """ +#include +#include +#include +#include + +#undef vpx_codec_dec_init +#undef vpx_codec_enc_init + +vpx_codec_err_t vpx_codec_dec_init(vpx_codec_ctx_t *ctx, + vpx_codec_iface_t *iface, + const vpx_codec_dec_cfg_t *cfg, + vpx_codec_flags_t flags) +{ + return vpx_codec_dec_init_ver(ctx, iface, cfg, flags, VPX_DECODER_ABI_VERSION); +} + +vpx_codec_err_t vpx_codec_enc_init(vpx_codec_ctx_t *ctx, + vpx_codec_iface_t *iface, + const vpx_codec_enc_cfg_t *cfg, + vpx_codec_flags_t flags) +{ + return vpx_codec_enc_init_ver(ctx, iface, cfg, flags, VPX_ENCODER_ABI_VERSION); +} + """, + libraries=["vpx"], +) + +ffibuilder.cdef( + """ +#define VPX_CODEC_USE_OUTPUT_PARTITION 0x20000 +#define VPX_DL_REALTIME 1 +#define VPX_EFLAG_FORCE_KF 1 + +#define VPX_FRAME_IS_KEY 0x1 +#define VPX_FRAME_IS_DROPPABLE 0x2 +#define VPX_FRAME_IS_INVISIBLE 0x4 +#define VPX_FRAME_IS_FRAGMENT 0x8 + +#define VPX_PLANE_PACKED 0 +#define VPX_PLANE_Y 0 +#define VPX_PLANE_U 1 +#define VPX_PLANE_V 2 +#define VPX_PLANE_ALPHA 3 + +#define VP8_SET_POSTPROC 3 +#define VP8E_SET_CPUUSED 13 +#define VP8E_SET_NOISE_SENSITIVITY 15 +#define VP8E_SET_STATIC_THRESHOLD 17 +#define VP8E_SET_TOKEN_PARTITIONS 18 + +typedef enum { + VPX_CODEC_OK, + VPX_CODEC_ERROR, + VPX_CODEC_MEM_ERROR, + VPX_CODEC_ABI_MISMATCH, + VPX_CODEC_INCAPABLE, + VPX_CODEC_UNSUP_BITSTREAM, + VPX_CODEC_UNSUP_FEATURE, + VPX_CODEC_CORRUPT_FRAME, + VPX_CODEC_INVALID_PARAM, + VPX_CODEC_LIST_END +} vpx_codec_err_t; + +enum vpx_codec_cx_pkt_kind { + VPX_CODEC_CX_FRAME_PKT, + ... +}; + +typedef enum vpx_img_fmt { + VPX_IMG_FMT_I420, + ... +} vpx_img_fmt_t; + +typedef long vpx_codec_flags_t; +typedef uint32_t vpx_codec_frame_flags_t; +typedef long vpx_enc_frame_flags_t; +typedef const void *vpx_codec_iter_t; +typedef int64_t vpx_codec_pts_t; + +typedef const struct vpx_codec_iface vpx_codec_iface_t; + +typedef struct vpx_rational { + int num; + int den; +} vpx_rational_t; + +enum vpx_rc_mode { + VPX_VBR, + VPX_CBR, + VPX_CQ, + VPX_Q, +}; + +enum vpx_kf_mode { + VPX_KF_FIXED, + VPX_KF_AUTO, + VPX_KF_DISABLED = 0 +}; + +typedef struct vpx_codec_dec_cfg { + unsigned int threads; + unsigned int w; + unsigned int h; +} vpx_codec_dec_cfg_t; + +typedef struct vpx_codec_enc_cfg { + unsigned int g_usage; + unsigned int g_threads; + unsigned int g_profile; + unsigned int g_w; + unsigned int g_h; + struct vpx_rational g_timebase; + unsigned int g_lag_in_frames; + + unsigned int rc_resize_allowed; + enum vpx_rc_mode rc_end_usage; + unsigned int rc_target_bitrate; + unsigned int rc_min_quantizer; + unsigned int rc_max_quantizer; + unsigned int rc_undershoot_pct; + unsigned int rc_overshoot_pct; + unsigned int rc_buf_sz; + unsigned int rc_buf_initial_sz; + unsigned int rc_buf_optimal_sz; + + enum vpx_kf_mode kf_mode; + unsigned int kf_max_dist; + ...; +} vpx_codec_enc_cfg_t; + +typedef struct vpx_codec_ctx { + ...; +} vpx_codec_ctx_t; + +typedef struct vpx_fixed_buf { + void *buf; + size_t sz; +} vpx_fixed_buf_t; + +typedef struct vpx_codec_cx_pkt { + enum vpx_codec_cx_pkt_kind kind; + union { + struct { + void *buf; + size_t sz; + vpx_codec_pts_t pts; + unsigned long duration; + vpx_codec_frame_flags_t flags; + int partition_id; + } frame; + vpx_fixed_buf_t twopass_stats; + vpx_fixed_buf_t firstpass_mb_stats; + struct vpx_psnr_pkt { + unsigned int samples[4]; + uint64_t sse[4]; + double psnr[4]; + } psnr; + vpx_fixed_buf_t raw; + char pad[124]; + } data; + ...; +} vpx_codec_cx_pkt_t; + +typedef struct vpx_image { + vpx_img_fmt_t fmt; + + unsigned int w; + unsigned int h; + + unsigned int d_w; + unsigned int d_h; + + unsigned char *planes[4]; + int stride[4]; + ...; +} vpx_image_t; + +enum vp8_postproc_level { + VP8_NOFILTERING = 0, + VP8_DEBLOCK = 1, + VP8_DEMACROBLOCK = 2 +}; + +typedef enum { + VP8_ONE_TOKENPARTITION = 0, + VP8_TWO_TOKENPARTITION = 1, + VP8_FOUR_TOKENPARTITION = 2, + VP8_EIGHT_TOKENPARTITION = 3 +} vp8e_token_partitions; + +typedef struct vp8_postproc_cfg { + int post_proc_flag; + int deblocking_level; + int noise_level; +} vp8_postproc_cfg_t; + +extern vpx_codec_iface_t *vpx_codec_vp8_cx(void); +extern vpx_codec_iface_t *vpx_codec_vp8_dx(void); +extern vpx_codec_iface_t *vpx_codec_vp9_cx(void); +extern vpx_codec_iface_t *vpx_codec_vp9_dx(void); + +vpx_codec_err_t vpx_codec_control_(vpx_codec_ctx_t *ctx, int ctrl_id, ...); +vpx_codec_err_t vpx_codec_destroy(vpx_codec_ctx_t *ctx); + +vpx_codec_err_t vpx_codec_dec_init(vpx_codec_ctx_t *ctx, + vpx_codec_iface_t *iface, + const vpx_codec_dec_cfg_t *cfg, + vpx_codec_flags_t flags); + +vpx_image_t *vpx_codec_get_frame(vpx_codec_ctx_t *ctx, vpx_codec_iter_t *iter); + +vpx_codec_err_t vpx_codec_decode(vpx_codec_ctx_t *ctx, const uint8_t *data, + unsigned int data_sz, void *user_priv, + long deadline); + +vpx_codec_err_t vpx_codec_enc_config_default(vpx_codec_iface_t *iface, + vpx_codec_enc_cfg_t *cfg, + unsigned int reserved); + +vpx_codec_err_t vpx_codec_enc_config_set(vpx_codec_ctx_t *ctx, + const vpx_codec_enc_cfg_t *cfg); + +vpx_codec_err_t vpx_codec_enc_init(vpx_codec_ctx_t *ctx, + vpx_codec_iface_t *iface, + const vpx_codec_enc_cfg_t *cfg, + vpx_codec_flags_t flags); + +vpx_codec_err_t vpx_codec_encode(vpx_codec_ctx_t *ctx, const vpx_image_t *img, + vpx_codec_pts_t pts, unsigned long duration, + vpx_enc_frame_flags_t flags, + unsigned long deadline); + +const char *vpx_codec_err_to_string (vpx_codec_err_t err); + +const vpx_codec_cx_pkt_t *vpx_codec_get_cx_data(vpx_codec_ctx_t *ctx, + vpx_codec_iter_t *iter); + +vpx_image_t *vpx_img_alloc(vpx_image_t *img, vpx_img_fmt_t fmt, + unsigned int d_w, unsigned int d_h, + unsigned int align); +void vpx_img_free(vpx_image_t *img); +vpx_image_t *vpx_img_wrap(vpx_image_t *img, vpx_img_fmt_t fmt, unsigned int d_w, + unsigned int d_h, unsigned int align, + unsigned char *img_data); +""" +) + +ffibuilder.compile(verbose=True) diff --git a/examples/duck.jpg b/examples/duck.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b1e1fe1231d879a08b85859d35a8e37f3caa50bd GIT binary patch literal 298739 zcmeFYcT|(j+BX^qUFk)-AYdql4npWXgdUnS1p!HbP=hoCE=Un>AM zn6arbfa*M4qq+tF{Iv>jFp5Cl0RSv40MY;efB`^5#Sfr8k5Qdp+EfDn6*s1m1OWe$ zP7MH1bN(y-x70tv-)MiA`RDIndw^@!h(L5;C?YUOL`ha2pr&tXK|}KoQC2}JX8=$@ z!bI>~o*F=N-inJ45NLD|L{2UsRMx{Q@V2+CXCO*0!XrpdK~`Q4ps5oP z?Sl-^0_{J02@*kiX@MM7EaWYM47?FYXjF)|ZIq>*XOy3(x)(@Cn@KYQ5`hXrd80i< zB2fMTp^ykI&_BQ-=kdRj-(=VY2KtLAD9Ea*fzClfyzW5Y zhQ|MbIDgUt{j06v;o-93O0t0=K5`1`>gsaxigJpI;ByIZXk-A|BLW-{Dt3;*B=Qdo zL+?<}5M&S<85kh)H>St!z%aBH2*f1vFK9IK&VOV7FFgF6^A94<(L_Wv|9*tPy+Z^2 z!~RCI4?v=|6*cAlPs#r!e&fI8wUy-MZPOtR=T6?0alh*QwOVitEht&RpeFfcq^%0S5sHhl>6U+{?_-OiKYReXpaC-?{oC? z1X<)cvdW#?9*T+zx4|CQJ=DO;3U|E09(QhggRjfqzOLl0uB@o;anAYwR{Z}+%RiYq zH==WMlKU^C{JSszzYqVZKXm%N0)f=$ZKb87J(pysq6X5? z(y;?LMClbcujtt@aCrnPKFHw~)30vlQG(xoHOVL*vikK>yo5o`fwHYS^ z0g!!O?bJEsxpVf<3jf>1JBK{4mY(4}SC{?V0X%1i3P?pyO?R&J1;BZY>>Q#r3VO7h zS8V9G6g`3;A#v>{mMCho(HSFz63`F4Toj`|IQ=8TAorn{JWqaw z@%@VWGhoz3Ej`@3NN!~U7sHx(P-_D}Bf_mMa1Rou_ZMIRCp_4c9oHrw`}la0B#fX6 z>1(u0VDv8%kfMEgT_pN)jB@MrMlaQ`-Nl4gFBu54yL;oNXWLIELCqKOcL841dDz(T zNl&v6RR5S1yl(H`Y}K1 z?oe*AsZl{2MRGBeoT;49m)5H4%ImB!feMySlEgkb9}gv)hdOJf;V*JiP3+VZz6q>)erXB-wf@yLZn?-%RMQM(+7RxQHVng| z6WcI*i>z}-BP7EdF~z5M6BE8oFB;jJf2qk=&d$yulL-ZZE1!=YG0pk!sRrX~w~TfH@)m5Ys;uMl}T{zVjHgSE}g_y zUSMC^iPY)6L~!ToN?AzQ=%(Df#B@(t)G2c)D()$jH1AU6*(URdNZmvN{=o@xN=S<< zdvWb$Tb7&9CTrUp=@c%#;B4b)ira)?88}gb$cJiWGZM_wtNyO4m?$?M_&Vb0YK0cs zc2RxI2(%8CmI7(Nb_JmHVFSfj%|3*I3Lz(7X6 zQ(rz%N2yRn@9Yd44o?+E)W2cXO8Rq}Thx|jPu<<(pPS7EXV~b&Pe5t)6Qowk*FD6> z%1)*neXcl=)fe%5I&ODrI(O4rc_6j>G(Plm`rus^8QrUegtA3-AbHN2TTzsEpCi3~ z1xd&hm&Hc*16Y1-mN_Nx4cq@l3rr5~U^`aTcqdwLTj`j_JyA?#xYuc}mI}x}mYzCQ z$TcV7c(SxgO}FQ`>TNf@^TCT6S+wm><%p^Vw->B6yznhakt zBiauO6S&?R$a@bcq)Ab)z+p|_vP7mgH3VxaORK*80FW`HR?YSqaIfaYgJ$6|*~hOK zgVHk<>OiJ(SQ2LJ9(8ATHkBsDqN`;TnQqN9)5e>^-Xs2VS|>63Pp`8Z0*x0!&0UeO z-Ks#Vm30&U$km^2v)t9}D1aZzD%%LfC0&L`-|y?OOrGbEFr8fwh$Q7U<)U42LhXe7 z?WMpVr=yGMTY}{TE6D~=){F5P$jj!6!4`2sHyEw%qrlu&9(ZSoA%hBb$2kN4E6rpo zdA-0_K>D(s+<9AKrHY}(kW%B|qq|+ThrmaAB6l_Y>}nL{qh|8rqNDqr7a44Dr zQ>Te|4_>16%8FfFQ7(?W5THoKdorax50@FO2oJD)FuXbO@K--#D*-`RI=94|q09VU zz4WdL4#!0v*BWZdgtr_$F|!Zdk}4bQHURG&;uY1u4xg5bS#Y^J-CR-N$6n=ZO@cIe zB}Ior_Sz0|;AR%$GJbJ6kdGNHIBu?VqDk5T3 zeulJ1ci%&Ue5kZBe*p;fbjKl&JTBvH==9~o0aYfr(iC+>mrKEw2NDXO^o@ye!C$m1 z7B%&(yq#+si`jeMg|0U9j((?E!JHknnCbV<89sV~^S@u{(Y64;9})AX62+v8LbUu+ zO}N2G^B2Gk-G)r4Q!KQGaVBi*ZrB$sKy>RQ`nXKdIgNR4iu6x9*j_S9fwnE5rFjOv z5FTtWb1BX3Q)-ybFC2oPhlMgZ@MRR6phu{L9qYHL()8tuzbr%M8P{ahb>_?;XEL}| zu6zgO%nQM9Wa`^qJ}8$0R78-Z5Q3RiHdAM%vkA+DT;eEB-nM?Xig}wtwwa3-NV{6h zP&eK`A~b~FVwfFmI0jXEy#!B@V=Fdxj!Dh;9^stL9qUm=H=JVC*9SSrOnxMnLTMBw z+a$(}ZmN$6hk16SeA8as!vsBZOZM%|KkymJ-!uIVbi)fNKC&~Ef3azDJ~t$V@FWgU z>q6CpD;8G@S(90)#Fq7%(~Cv&3tg5l3FoEfm+-p9SM|qUD7DN!cA0lB;*$|Ip(jH( z8R=>X6`W6>l5Ejq+*kP~X&qeY8Hfgn_i>`q^vjUy(ao0znYk;{ zLKBbzhct}3?G+;z<11xQUv9balQNBRy-&UB|UDWErIN#Hw9@*d-qj z9RmFe&{toPD3NNMWE+P|*!Zk8arq%R%cjLjk0hRe(yvn%pP6M!YXjKy|JK+%WMwZ* zKjXTSz8%6;LOy@1T4U2PnGVHAc^OvFe zc(%|^-u-fi7|y7lnzp4>fZ(0R2DT))UHqk&K<$!%YYs!vw++lhDoj^=OmnoD<@^;7 z`6O+~rz~L=kFI9Fv?&#qc^rJRudigCIichy{lv4ac9(%$mb$yq+wI9GV6W`xuzAwl z%e#zw3C)}=QQ})l#4)>8c98aBT|YKYG}(m~Hq^Pei%*cYH_pE+mQ#M^<8U2b&kEh} zP7GLXe|40O0`^uH{Eeo!;Fj*p9pma^ACA$ic3B8`{EcxFYFDJUJdwsCAA{Gmy0Qe% zdiPo?Oln={(>db>FNyqy`){z*o{5l}ht~H-qz8yG(Wl7B-MuUMr%k?^R@rqLJp&p^ zK73!$XXb*sSUIqS6XOX)(-!C~lV~PKosi8EwnS^ENbWLqr%MrM(eOp*IPH48-jB0e zI6bI;!A)Xz36ft4{yeTVo)7dda`Kfl5WfiO)7bVFm{Pil(VikZp@`54F~^})Tcz1s z2bb3Y*)hhAqLJY0aqD!?ZhmAl!^#usGRpSiBI}ax5h8DB@{W*Xb@eBoqZ##Gqie z!SiH8Me#3|;jHy1Bq{ceH!7cu`-69IpX5Y`s73U^`gYbwPlUbw>4DQn^M2hzB#{=g zy8c{ki-;SR4v7_E;gsw|a-G!w?Ge7G;6gioC9%#gULRaKctg;TFyn%so(PeDE z#;fkV8$O>;G?CM(cCK6|wx1oA+eybcVlyNcn|VU#Fhm#Ik^eRlE8YyI4&G|e`o)5W z2h7Mg=2WpnLe@&up1=d$r+a~kw^Vcle`s$YpOEDoXSBs7G7e~a@_A)}M4%|)ilT=rs zmaHvw<#4a16Emwgmz#SFXPejCur-kfTswxDE76-Y!u+;sG7egJe0I{#-lt%}r!_c7@x!>ev)Gb!x@%H>irDcYlhulBF%#~C zO`WUVS%U=$ufEen`Q@tJY_+d$&auGNGS~50^G=W~vs-HtuftgMw0A{8vW$IV1EdGjAuZe8O{o9bAJ-hb2r&a@1ObJwq7kb_H_J>y7mit8n*Z zOjWXHA8}P$GxO(kgJP$NRTX3`b&ZlxZhCgD#NDawZQ3IHa^@mqdx-^iQvD8P5D*vb zL$Y(McJ&uKbe9PVyzJ($$a6b(C1dz#s;jN83ak2rJr&$=`~_yIJ-ocr(CxzK5Z`q} z^yDu9LSOflKz`1))=QqhHEdfJRW5q#i|+~2gR0foD4~7@g3J=U5^^`t^`UtmiA0Jwqvdv$ABr3YNr`K zt=@2=&1ieEN%}(;ld5mT3tPatS@Q}m)8kPRwmKY7SMi6`&ZqrzQsa?K$0~d{xJ62P z;Hx;HiX(WhA>Be+$+Bt<#7hC1KgKghi7^O!Bve{J{PRv6va>6{Ow93vcabL6X$f2K z2h%_AI=V5l5j#etL=H}UCyjl}6*F8!b)KJYkD?fu%vPBsVPlyQBhw9Bh2~vYsPIiI z|DC#z<2bgbJ9H(a`d}KYr_^OP$1KAUPMr$_nS? z;~$q>x*bj!8V1ZfgKU1`e~ZgRY1Y`=Sl%xP*W6MBSL5)A+4tLH&J4j`mAE#qA+pMl zQO%pE6|+szE+4UkmSM2Go4;M2sBfgptkp}xQ#nJ{cOBt@qr-%PzW!%M1fIB0rXrx} zEq;%WIUWlNrGcV@PcjwJcW$W0%}76zrB1BnJ(Un%vhsZ=6NVN2(cb?B=#uk;qnLjVz;w#lG#lLoprG$$tUj zzMuR4Hn`{&>OH24UT=x%_l(j`4%3*kbk^@vdyh!oh0R4+J%^DoP$0b!-o84~FS%H@ zQa+a}r@~mpZsv+N`L>_=6R$GNhDIhfXt^d2>K|Z;1SfWco=it~A! zvGXApYllhZMAg^ku7(Qfegyk0IsAV0Now0{iI&=$ z{^;^fL*LLMA7YMknwKHdOKPTafa&EC(55-*iu3#Vr62vWpnau`vC9vSz7c;2xKVT3 z$vC=OrroESVr=_VsSEJhK0KB1Lv#uYPjT5ywDN=V;3on#IvfI&2p}j6*XeyHU3(~5 zIvYlv3lH6CYRQ0@1b%4$^fWn_PP-&BntfEid0ItQ0VOl6)w%5O*l;UlW}Ea)rQwYl zRJ(Y_))Z|nz>M^cTvUv)EI3Inr zj0z=J`sYEhHWefkS0ZH}=XV=Nq&A!rLRV+U_9LB%qq{xS8SujE)p=PlvXf*J6>0O4 zA8&8Hg^@j^hZ2udCDRMyuw{`GC}r8qi!Bo+MQ}310Y@Ll#?xgZeBA8l65$eepTufx zg{6uqiMyG`siF6X$-Q1h1Vj^+RsWs8CST0GA@q|?aWGTRGts4lXSuO|0W7X_v6%A= zq$h?nZP+&OIXt?kr*BKnjp>qQ@Yah`<`P)}_4PDgeBwQPBI=d@`#9s*#llyIzM|4n zD0K>14;+`en3qu-vPdyWV_DdZdirQ+;-+PSvj!?pbLWvUwMn3b^xUgO_qhn037WI5 z8NuHvxFvFI;Y!Ho8rnjf-asu zO$kwMpAXu_&Y5d57G096y+>sZ83ZREOY?gY6*x$xpr2#mI!bFUkW4 zII3niU$R~PQN<$OC3a*Q;a0j@C!!jn)m5!kBUi)wMdydU`nOZRl7+$DE)^3EsPJNe zDYE7rls15R^?a-?d*BeeKU{{QFCt;m)I6yIrj%u8dz@EL6oFq-Bf6qLLq`dp+PtWb zvv)B|k-l^UMX8@4c7k12cQm~ICsI4{4crK5=-4+1rpl)Beoe8@TSuY zk)vA|IX*oE^wWTK=L&EMEa8?Q;mn%J~@miO2~jfHGBjCE%xoffK^_SESKERWY)O$2`F z6$ELiymBij%jUm1ovAX+Qw?D)4PS3z!g1Y!*=1ka-^U_8pBVoNd*0mdg-r76keCve z(!RBUt@{dh7_XVCG>ChyNdL4YFWOr_cqvwXvBFqG$l+#=3`u&%QDx2j`hzFZi1BrQ zev$;u7wd_ZQWuS>YaIjS)(gLm?NSzWMj+WCts}^Bx^Z)y<3KlmK}T+}lhWshgzvA; z*ExagAXArUJB`g?wa@n2UWH@1@roLodtymHxfT@GH-cY%3C0Gxn;FnjnW3a;NjVcS z#=i^V$VX$@bkU&=5;zScTlEBYgxW@5Q?I_CcN~K;XpLi3eN9Cdk#GW7Pv%U+EH zlp`1Gf@+(Q(^jtb1w^J++1jjF*S~Rd{j6% zz30q!H(@{LPw|}D?v8VAf#tm)VcwWrn`a|=^K~SLn<*VHX81l!v|FbzxvdGZP%=+z zVlEiYu05@T!5WzWK8%)X{LU^uR-JkoHjjia$1S6JbB)N(?5*AH5@1W7{?j^#hZy}S ze|tux^gL^zn|%~J_|jHaH6xP2-*czod@WUUYN?kmEIUaqaDH2E!Bo$*i>~}3UfWcw zXHL!|Hcr2!I4jq6(W-&J^-7e9DYm+)+Tg*?el4CZQ|OLnn9qaE*ANSWl*L$rq>WW- z7OorOzcPKBz*<@s+z2A_-|iYD*@GCxgGV4uA5-m4z&%!BPtW~0;m0%f7jUs~uWQN1 zwiEtH7k+EwA^>>p2j=?*Bq3TFVpAV{LT^RTg*-ZTj!6U!A|G!E9xUw?LEUM#(h0e< zjC?by*~)R;wnrjZ+(Cs>O+!0B6~Fk9ca2@(VA2<$+l!RhWKe_T{r=!0)0@lk!U-fD zHwnvmTgD+mZuifiHHukH!!Gt}`kBg2cz32d=4NP#Do*vV0 zqy`sGe5S?b(L#a1#GaIh9gSz2NiWpGOH zCoCQF58#MupR+Eo+K1zfxznAz`OH{dm6U=T1%x$2+f3}7&ZX+_^oKJZo6NBoM}E`% zxTYk!pOl>^GKNd>7-j14Cw%7<9cIwaB)hPxxo(bZf{Wux!E&x|z%j~&e*t`JI6^EH z=8^pKZ)@<+vIZq2t;EBpw-h@@it{MtTSM7*@*pwO`K$MF#agM&>;rITn}Hq>At{>a z_AuuCuF8^FM|FTr1_zlM&2tTec5(1uQy>t0!?b0a>3z??1NxT7prL`tvs z2#Y)mTUm5y{S*m&kmeGk#ky<{@h5ACFLm|JFid;-d-+usaZx_UJ)RLmIO`5Kyx;%G77|<1(Wy}} z;e=yrmC?b~H{FzcDNHx*RZGwBFu#qCIMy9_y29$e^P)YiQSF4vq2&)b4arLiJ@oXWA@4z`a1Co@UeDD#o6SW z@1DIszmD>rA@fLTsq=`;jPc;C^*W#n{oDE`nb(1u(ab?+%A23zR6#yuek-f$sZGfb z3JjKdzhjg~cLgn{UZFr*?KM&%7hLj^vflY+G8(04XBSyUdUX^FW+RvP=t;duZD8t%aNl#}Tst^#l1bcDV477E@Z_z7Y=;yQ685SV4FFH3 z36G=i()&~9-1-P~dGz;kjLNNJR=!o|4 zk`P=}3WVai-zCzs`aT}_L2p-HPn%-D=_U=~6l_oviby;a6(b^Dh}aSN0k;Dd?Nh-_ zQ-3**S{jjux3r!K$-B&7Sq)RnH}Ip?UW-E1Ril$2CDsE^Iq0H2?JQ`1o7*Z{zG*58 zGDdgJD<=dynWJM@%Febmos3%J2SD#&1A@^(Cle@$?i$|%6@kz)!MhO07mx5Gjohq^ zv_`I(Xop4aHu14#`pSm!%12zRkQQt`R#NjmPuP-)TTP?y6SRNi>#Pv;D|KDlFZoH| z)#zQ#dw3GDPu}Nh*IK>bT&Gvzm*zX78rL$$ZN`YDRO9YGa^L z=hrL*xamUDg<}||AiS)q@?nuQRF$akt6ayr?pRMMKo%kGb{9VSj4$BpRP=8Zq~Xq_ zCR6m+CC1x=p_R$vCxG^%#g)>{T4$VXb`n_n3yX1Dj+?UdgaOz~u_AO+ z+4VT2EjqiAH4cmM6b#*}pYAx%=VEMaMR?^@gl=K2Pn0mJ!W~Pnd-h)J$1~G-(*-Bx zj<=tu{ryHN)lS$HY`#NH(c#aGAfxU2K~5yzG7L8MC2 z3}}a4B&2Rt5BHTuaW`i-FcsGPO3cLy<{D>RWsxwQ_69%4*H+d+&RgcVnar*7DR6AVdXx=zieuD`Fft3q3h`dnfUrg{l zKJ|fz*jrnS&>46j{M0ASbOXIma2M|nUqtGTCMkI4lTho(s*F_4-}p>=J0`hnJ$OM1 zq1ZTX6U6*2IWCltQr8euwJMNh(MaFw?m+Dx z`iXu{8|xNJ7gBB+^#83N{KhzhqYQ3WwredIcYl6+%ptXxy1~z59q^)GaxI~3^FW_4 zx(dDEz(9dx;E2MSsaYbpsw@+o3A+%6_=5jz$G|sLW(}4y2o{X;+QNKVm;DgZ2CD*{x2HtA0Khp*ekko!zsZK8MKYg@iw0NjOeORkObnRQqaJ16Ggfkw8QWu(gvOh1Wh!U7U^N)I;%t*4$p z3}PZlCj%q&z7efFC>V>Y>+l6zgp+uB_zc&srT#9adE;#(-$Y-XnUU>+44eMQYuy;# z>02Fnn;qS#>OP8?krF;lh2cr008}$70}{oQeFHalSHLHND*V zXrBZh3*or$rhKZ#C*jA!L#p_V-`aFjeamJq0k|gqplXX2Ov_ug5*R{WW0uWh6!>OT zk7E8BF>=0TS*}>Y<#xa-2B}s=|A1M=n&6U&=y7?40~;1_UA~a9QhM$b2;)fBq{2A0<9*D@fYcHz z4n2S`f4&kEHnA{hU7HgJXVCh_@9oV~UZ;90Pp7CArh;Nwi|6j4`qn%*&1F0E?k|9r zZ7zGW@S_0Psoz@1Ie%y?H_^?td6PRzuh|Mr>T5mL0DaUCHWI2JEphKVsf$EMee<8^ zBv!kPoJDPR)t2IdX^R>=?4_oHut8dVB^fs#?+^n7>6~uBzAF5}JKml%7b#Glk}tR@ zq(dh=$vNg3ERt!$$M1b@ucj>bAzMg$B`#s}${REmHvW-{0@ZagKj}nh#V{&Wxu-y2n(^yG}XF=XQ3l=06CV& zE2hpa6M__1#i}rOnrj3$g)J=Q^dW*#N}~d(iP*YW@hB&oFm(aOUl1jv(w1NeMn&e4 zzfE7RDP4Hm;ViRQrG4sE%D&@cP9ya$PGLX8CK_;4oW5}USSg!6xUrF#pVs-d`6m}s zP&CDyOl&~#med}67&_EmG(2O;QT&{mx_C608!_YKBIbo63Aj9leu?R-mZ$-DoN>80#RrwkIk=&-cFHn)vx&y7DnHfc6Kk*b-8GRR5Q> zBAH5}GwY@@*@UNnUCIyPhrDdTrqXd;^dj?M_zbtW(a;2+T}s+(rv3?(Wr_C{blSJD zvE132`bz(8*Sog3vJpWD zH4|Y`d)c-H%A9=TDUqUw1Xfx&M~S&rywpX3^YhnELmMGbdvKe}aWat!rZc~#`se_` zXj?6EEx)evB?L1ify}p1x0%V+K)m3*HUM`)ORk)stx2z!O?#rDs;a@lFy-f#Z&z&d zb34p~(UETh;(mQ$)AMr=z-Om+_#3@yioIF%-~q#BUAj`}O_NT(dr!Nh`i1%-#?Lge z!8l>m{>N*XF=*$>(OqPL$Pc@rg5~V zrIl%Ac_v4~lIK4u=E zT}J#d^MZJHc!koE@7D489_cf_!s(`_bjtMkP_#kKmUuUhTI+Z=bP?>q+?PbfS9N1l zM#VX%nIcN6a{9HakiOmdMFbAj=^*Oonx`B5l^>!nWaMa2u`6PPYUh1BT_jwLd>*A4 zGo|Xd-LRWim|uu!IxUAiF}ib?uWHI(={xeWi z9P*ES7&Sx3S@57vjiQdLkHZG{U>cRE&?t2<4<|GG&;~t3Hyh`N7+C^LTIs*IoTo5X z&Y*9p)EI(f9B$i_=G>;TR0Di5#_ZOVb4*{UzF44>9>a?3vF5)dje2dWeVOkYe@%4+ zw>z8b`0i1)l_!iCTaM2T(zrW>S!+ZVUS9kvx$vC`4~>$1`_xucWB9Z3Uw{$8O!vtg z0d(mDz8CP|Up>ZOq|uCjdE$k6TBUdU~3@sG;L_tKh=u?9c% z_$JPT?mqUqak2WRS4VEXl&iSl3Syp8&`w3gDA2~zKG#8-lAW$?=!m4L^my{gEw3Yf zc~KEd*(yinr{{khgJYjBtoqQm6ET??1jE51*PD90XQw+_(JC-Vj(Gs|_n`^I@R?u< ztwf>y=K7ehU89AKBm%#EuPS)xnU!aV_l5G$TnjD;Kz)=Sfq4Dn;BeY=eR$uW9-@^e zQmI>Xf=#mZL8BSS%p-!6NUmnG79)g(x$*swpKmcnHP>gAot2xuC@LnZx~AGQYB=iw zH9cXAdVU^JUZ(JRRxwv(K9n4L*BIz>@kk#$7GP;YN<1dvuH=y zCaXezRqzO?4{vrG+vc}p6Yk4(H*bD(FKIMDQ1zpz5#QOC@JWcNu>EG7qR@d3!(Ikl z_uE%G7Ws$wB$^VoCSsUQLQbGBhQ}7;Q`M~IU=>4whF{1WJlUVhO;SvXr3KF|XQm7(y=*=4_@L5F#>31<;U-K-R`kAg&QPzeJlwBE z@j>?*YYaSwA=ke*E$z;W{O;KKy#_MkImR*tHFk66khKN-9;cmsb){NXajaBo;}-~m zzd7of)}^(_!4(r$b91tM!ux8OwP5IWv%`}DG=sODgQKRCR@bimYkCzGhN^Om_KONTNa@$@t7v^6BrY8 zZyEZ#7@d20~OtM(pnD&#kbJLu>Y|9YXUArw319 z#OB&MiMGY~A$cw338HfGryXs+)z}xuai1OqKk;>z5B@&6C-ftG8YeN7R`$nPU~=5y zfyImy>V1Ql`WN(es$JqI#}dZH=jH5b9WP+|9|3r^vn?rBIU{2+jhBO=^xEB164iuE zoOU76z#_J!(cIyLMJ1|KS`syo^PO~H!8n>X+;azC{izT7Z49plRafSIi0=N%cn~2p z9%gw#|JgMiiG~}X>}VewY)vkS%CUx9RG0OpN=b2zx5AZHs`WmYerM(Da$6yhDLI>Z zTM1PG#$loHuGb5Ng~bk=9n#Ertf!dpV$&J>DQjb%!h_s_heF3?m?9qiZxX}CGaC?R ze43QMOu(X9j9x&l?a7AqOHnx^AD&@fqa3TR2?@Nw^2JAoQUzxmIlGH?yrWVA5qotG z$1EI)&ss2p9M%Pb6^o5HF@0v=nzkR#rhMuv-$~L;74e1d^*y(tOllM72ZF5^4SqwK zwmkus^6KNs=Nqy@(x2^uTx5Y2uOT`p?ZMBJ7Pgnb10A(Ec+PmK*j-;I_28HnRFk3Y zk>ZXyAtv6jj_N={ZgoLvF1;*X{YPPR_;i`Flk&u9tLpdfejl(ThNzk5YL+angzwWK zpz4E@VY<4ZnCI1|qe5LpcwY*h@yW>RXYkk`vt<^W$)@xT?=H529LS;=hl2}QG}YK# zs~=&~3z1R$&4z^|&Us{~trz(ygm=j&!E{}rA@%(yo?E#D&@6m$Y3w(v+H9vrG+m3= zT~53^`!FhqY+~Lgo=ZKfeY(nc$rLrX3a$ff;VN%Wp6@T-lT)X--Rym4O?_Z_67u||g<|uAszHQN zHcwI+B^y2J&-kbAGQRi#rf=%-$dsnM!OUrFG7Fdgi5q(F#S0uG-#6kEQ_YWtzD2fz zHo6FYLCZi7hx$+Vtk|mD&)ww^ZfCk@mI0heE<*|pJ<|1cs{Rps8$lD(n`7=MW$IFu zVK)is5zvDtjZ=*@?RrNl z!o8M_KwP*Ldzw(*_7uZi%813Y39UutG#V32=T$aW+mot6px)%BhO~8g3-5fw@|XV0 z9ys*E7~FmH&cW1<07yA=bj>%+ z)i|77%=aGEfUgRk3^ke8BaX(`n?kIB z5U)3W9aqK7I1(g4B8Li3#POyrLoo0ahvR01m>48!YSM|f*x4qpYr> zSMzikB{9R9@A~{pH+`Sn5naKfN(;5;x|;;3I<$ALFe=50xZk`3Pd52c-t# z-!3ZP>hHOQ!9mOqQS1e(uKpqPx0N}G?-4xSS1W$#+xGv7BIY78REuL(ZYoaYVzOJ- zJfTx2S2sU3V$Dp7@=uw?T%-ZzR>1?7uk((lx@w=+9N zALhCJ7Cy~k9NZEks5~j6B!PK`=OmZk8MWX_oqxjz9`>n_*HS4gT(CeeJM}upcMz@k z_UqEYCzh?c*8?aL@6-5%x@QYgYh*LM?A*cts`17el@@S^WQ)oghK8VWO9?ON&IJVWyQQd*P?$99}&Z9TyMVK@l{r1;Fe`*%@zEzI+Txz(y;H{jo-V#iPl#aH2rM7q9 zgXezI*{go*@yRBcCTuB4c^+Dy)RLINn8_PeGpaR< z{Sx=iguFu+yhyUW)`v_>A`kX!D&o$Lr9a3EtWRfB(tQuiGc11tYKK|meDySuAJDV{ zOhdH>?x}k?&TDp5|Jd^4RN>!bheNZRJ%5nJT8udBIgicbeAhFA0S5 zo{*FmK2YbNd;9D@!()!0-%us6CD^)7CSuM)$);{Rgt8;jg*M-wAnYUM!mi#tkP`?`;Fp>Ov8;luXF_-XbM@0SAW9WJ(>CC zu}Vmf-r;`Lc#Yvx$oCY?My1WNzV$Z)izZQUdp6Z&D>r0j`s~T;LwDUg&hMjE0g4)1 zQDW?D;s+(M{)R zl!Dsm_XscI39uKO8r`!*)x$#;>0d&F+q+<5{N-1sPIdHC z3?6Gz=Ai2YRpPMG!x!$A2qh6G~?K zPZigXD?*+z_nr%2`a8BSaL>PC!^R8YbUL2c|+9t%V=zoJ=g;Z}ERY8Q_tlmx(a{0IvLWXiXw{N&l174hgSx0_B1Az}9YHKAp~^CWEB^_nP& z{*D)!7cU;Pkf`t1e=ukq4vIf~aC({%a-y_*od?S+ShW_7%*Dy#$9;>W#S~q1^>p0m zvwT8{c!@Mji~Uf{H%Nu#x{E9>Hwh$R$lBLQIJvP^zv=(rS$4E9Q9_a2YOJri0?ho= z`@|VUV6e5gH&*U-811857#`eP0f_2`H{%vYrTt8!WPx{01u zDS1A$WsUjDw<`_nUzco7#&Zd;n`tgNUR2Z@>rj@^Dr1Q~U(S#M*K?A^9L;J1(%wz7 z9sN-%D-ez(s(E6qoficerFf6|OFd1wW7Rz3r)=|<*pzwZ-?+fJwv_HFGY*3wjrpT) z7!6r+82g2+py1k*$2@w9pBnBpP0(BerHy+Gs~2JnG2J*u0_u#T$3U~u1n5h;*{s!oAl7$&JxV3! zPgF^14-J}jC;C)OpH>C?*oaA#(Pn<^b^euUX7u7cRZiwFioW;Rg*`T_#|!?uPNERZ z-UXc8`y8#AKkHpV(b3zfyUrgo*&XwE{qMQ|MlasJ>R4*?vjUbntTv@O#-aPT^@1c+ z@G!IiLL}{;)Y?WCj@jly=gi2w)N2LWU%2wh&V08|#W&iz6oFGvxYNjG3z;?yZ-&Xo zJPHUoOsE^B9o0DrOG>Y9YxUphxqyKeo6f_yJ}T@gk0!F(#FM?&0fJ|KPdn4VDg<3A zQ$FoKC0cE$i)g+n(To&CPQ90l6n7O?zhf(F^t`jCrwalR7Ek)tQeEty(Ht}@Oesx~ zA$3IIVE4p2kV)n31CRRIHB90U1cmUd4f=9e_n{Jl$b>VkefyAV$=Q#TD$*8*g`gkg^eQN4T;;-<7^4ObAgmPQ~baVWU{aRJ(WW8Kbc#t<>^|2HuJK894DW z!s9{UzE89tlY>(KjQVBtm@K!+q%RHW-N;GxH&S)maEcPsnNJy7sE?ZEb&; z2>T8;C=@9?-qbFoz9di2FQv>}bzw%eIFAg}WQ$QTAS9bbRWl!hq7&38ws;6a3}PnQ z`a$w!YMkgM7bkw2e`ok{`l+8GZp2Mo&dw~)O`3kp3g}?Uj>^_2taWcYV1iXy)30a$cvzH+DBd{lKpKqv`sJ45j#sry9uQ0+ll!w?uNSBl% zO%DVpd)QV_Q+>~7?HZ1kmW$bM9JvNKpJ`HhAWFN;{+#wr_Xq}lyXugpa*Q4BL)~Xh zirAdFjI*bN;wtiYHH|w(%=K>Xy#01frKhK^I28^`{X24lZS=6ruYN`R4$skZpS)^~ z`2w6E)+QHfn=-Mqorwo=y!$aJc0D;KD;C}IeOKyyrGB^Rd}|k!cYfmk&@LvRSwo** zsCx>N{eJ-gLH@q_XzGzrmj&^W$F{32Bt^*K3aF}s321?z>8aHnFi?|mB1=ImyMvC$ z*Ic7dv6XaFW#^Xe?2>cquHb{nzFk^d1t5WsL!|p*GwY3Y zrARScOCqKpAcf#nLot+Aq=QigEwn2EkFz_kJO)!Ra(%hWnB zlJE~dgN&T&Z_!2UGdi0d3NXE76uKvGl&9@w~oQ0(2S>*QA%6yfcC<#75Fg*^dEfS$}z2YqeNk^|5 zqkBZPrbkI@=6`nTm8sswl*7=dEHr{tPDs{kETA7$rm38a5+Cp?6yO>32TJ9jHjiaW zYGSh5Nje(qVA?CcX;fymU1gl7-$Qy~1eJ|(TN|x_%w*tMZLr&@j)Q)wzc>8q0LU8%hFMMWn$Cz5n|Fq2Uz@zmhn z0RZ~wHWlo1pjuF*5aOB#KKhk6p~6**Mw*Db8gFXx&ZgGFn?fzb+F-n;sFf(3a&x9p zpt~wVt2)v0laEb2q${%f)8$KG7Tnva2;RWeDRW^qSF?Hb(MwBpI==tf!OrNR~tO%9BYD;U^=}fb1oOjQRj|z!Q#sn{E10$ zB}z~p+Tn&pP5%Iw*rc9EaCCUBld8}XV@gz#d{csX8lrk4`(Y|fBrK&IeSE$2u7*qW z7+a&b8VW-ly>X@IBXM9WnctR5l216(&X_w)OqW=6JX;-s^g3=RJeXdKSI7u(9^c~E zaTl0%t&fbO{{Y(3Q_#|Q{1x~_?fkuUH$^yrYIK##aD^oBc{&`1Pf#KjaFO2{GWJfA(F65hRkURN2B`fK-kHO){6t`+j1JnHTPO{dneX{yr9fz; za6WwwuC!%Ms|VDLKS<&TRGAyX6r7TH7||BJjTD=DODu;Jg>pL$aIJ(8)Rs~~LE}xx z8%0WtXXXAj$WDt}6}^!}rv@AfLE}E!U66kM{q1sXSGg$VNk&D zoj$gOX(m>QNN@3OIU|e>JHCjiVJdwfhXw}hk)h2E#h0eSQduc!9-YRIBzG1o)gmdk zi7CMQX{Dx3qndN&l?3C0eYI4!BYF+SSBOB}!P99AwiRNO+l~0DSjp{;X0~1z$x>ur z30XnoKDvv0Wzx|f?;K7Nat4=**v^Pm8Ra{WgZI^85T-FuoMpCB9T-0N)tlKgi_$7F z(sz^FxyG~J{tC{BB~{sVu$H^yzM;3Wpt-FV{J#CT)9r;MLW^*%r97Yr9@=G0=OCJl zCs`*6B;!|?vKF*ZY3T}dG};tNR~tsFq(nDJT&irwB+8AHCBRle2LtldoU}5b^-xV) z!Z4qxow5x&jJ<5sC7}Ie=^6V~$9h9xbCzHn-T3SQP+X>TYDwcLS=F#h@)6uGD zWOaLLIub)mQ6P5%IttFH7v<5IWS*PB`o`m3lKV26)L7GX8)OzXxPDsW%)LtzV=9&&TAvYqI_YWW2QSu_NjQqBf?SSaBy@}(I?x`uT+>S539ph7{J$ZVN|;TRkfrkDe!i(=-GrnZMNPaXYq{{U=GduOzIB|_nz z6qTO&D<8w7%Zc1udmSj$$I8`6s2~-NGrNV4^g515vXc1v55E$f7CTJU73Dy~YQgRI z8qeBhhW1jbR4A;pBf?JgsNfKzfImGly%OPC0!ySzn!Uu7r?~@GR z=*?uvyPIY{6tGC`t7#E@fif!6YLW_;4$yc2>DIJPli7Nm8ReiX6O-RMN?T*5(A#D* z%Z_f8Gmk^4Av~Vy6J8K<#HAkU3@0A^iD`}(x2d~#!BltzV3a!)@ zUs85}0l?3;jd~0nPIGg6xa45*>8O=@_y@;oGDLESF zEbXC|n{%-r4iXQz)c7%ZkX#odZ?II>00S63wCXf>Es1Zs+^5d+l1c7Px}K5AZIUL9 z9b?95B#&KYcS)B}v_|KFP6bI=0C&!<8>B{(OeIFY*kA?&*Z^ZawMUOp&XH2EAZ3dx6ij)RQbMKz|4QLze zA9GV9p*xbH=Je5!^e9WF2AwJc*SOJsfzxG{BnHxyrDSudG}{i+48p3s(|cB;Qg}Gg zYon9d)XLm+uv-He802bgY;@2W$r09tc(^C9<4nDZ^m4=+deU9kGw+R4Y+uCuxva91 z+gnC^^QT*AJ4bON!@*zkk`6c;h0{aKgr%1R6DT7Mj=*~TaqXm4vYHiY7Tl|z zQ4A!69!VYbryJ25*q1uUsmFA#LnLR@8owmTac7aKl9*UQLF2ckyJ-Vm=wPJ27+7t= z&(~15veL8=lCY%ZJ+(5@&?al>ONVlMX*jXU#&bwkP6-~vMIbkzj2NxY#_W)x*bdrs z^h%2pt*Ft`90<-vyY3306FQQBKX$S{fas^#TF^?7LTzYD)^qgs)e!OZ8Gd+scjD`c*yUj+9cBg-3+FjvXWOR#?B*P_saRPYjycj>(DOS9CB~NC60CR0#d^IL{wlYm9vvuKVa^g!lj`C}Z!el-gw_Y&lDkgoKqG=hsTvRVzV-CM&VB z*%`))eTdg$ox;#Vgt!11)uEA~8s{*}xk~fTa5bh`7P~D(t2m_%qwGo7RdjT%Fyt!A z!$BS)&$hEtZJH&dc>O^L8{TvEI!!UTBiL0cbDX8Y`snG4y_Od)AUQ&Z(2Y`1kJ)|% zrj|iL14fQZWYrXSjo~N0qS`2=7W2xCk2gPKq-i!XO%cYdG^Kg?9kO(IuyP4Uszy?F z2M6@iC}@67q6*C(e1_2TG0q(xUAkq^t!$%3wK{ZpPFCf;NH^p8dxfN=U9g(RQU%kui|# z?{6d2j&zzs*P(i#;8My0d+PJ(&tAgTbs?p?9d#h*(47mddIUz;>eV%rvy?Tr1C2+U zG^x=8Qd*4fgTJ4qr(KkrM2}8s2|LP8N9&{+v39FajlD|%VEr`f&^Cq2tfpi-pw~Qh z&aE91x&b=d>Xrck)5ruv8ttQtkZ#A22IVXA zI?a=|X^rUet92?vWhqhAeJ%LQSJ3P(Bx^2DrDp#CmXrSgLecd+OZcUjPgQ;j{w1t3{JH%plTeP& zDwjZY6HrIK#2*lTXwI@km3R<#KGtX^a846ou zw5B8zxHeC=28~eI}vW2aYuDB!x`T`dHFjg7O@T2YQsJ23T`ocrrKf_wLOt>Cp;C^TXr~-0w*#wiAEu+gv!sSPP-;^{emilF zH9}48k=CL&;Sew}*y$VC)7N6*ON=;ONGAujbO&|OVm(FKK1Cb^YKjTEY@<=y@9wu9 z#QT3eR#u7A+0099%uaUzK+vq5PMO($mu#UvMW_rMd5?Wh?>&_JeHUDg-8Cd52aiMB zR*KmgofYHPT!OH)WDmZcl437m82wF`4J8cuzM0fq%PYy0sulUQcMFR_89ec>NhCJg zIH!fF&)zEp9G)~NdGuO!wa6eRjQjfO6!tr3il9F6#^KLm2B@DBPk$sb=+h!2a!S8F zR%sJykT+45!f;kd&pLIlgS5$Bp0%(^bdpC2(hQb?Dt=1ezyxJpnpY`@dLC_vk;DM( zgr!`67NJD62kx*MWNF;jl zbrkRB$c)^_8P3pXp3zWBwfx$C1qtN*pAw7w1niyQ+fQ# ziXPM(-`h*15bYYGr8oQ3`VRV)dJ6Ve zuS{4_G1N~z@!wr3Fcc!olH#_#k*X<3;JRfnhCC+IoQ`$eP~1S%!>N(tG6>1fZB|m( zWa;QHMlLNQ#XMuwXwpbkOp#2^m!BZWQ&^Sr^0ic>=$sH=TmL1&j!Oy71 zh##=RuV~QP!e7tWYE=%0m!q0jQYHsMd9|3ucnc@+pZ3sLy9YFAmSk9hK&ZArZPa;^ z4;kR(eKl!X2Gd2V)t3TmW#mZ!9&%BU{d7fX2=z(?DDNqjid`w-DLiLIvyv#9X4k-4 zKpnx-`)56%i%lg=Z1Bc?@v42aOPc}QF-cG$N3w%dDx0M4eC#~5gJ z$f!WU+qYch=vMm;PpZR^#si?7dLG)Ap2iodlaR^^n>irru!W*JUDxu;Ei2PnWoa4S z%i`vCN-&an9P^<`XldIl(W-%oLC5y($R|F!kwLLHlt!a?Z4f-Zn&q){n4@>s(<~i_ zC(}Blztoj2i}0xOCORA{BoU^pidK%CZLqnvTy2jX83cN24<{~*sL=vlEURmTf;|qU zLrHcb8ocrm)wn+wJ)Q|$X9{R-O*(@nbtSyof=k?O? zMLB5(QE;sc0vC^Nbkhi%djMP&S7aoO+-iwvN&zz-L#}6c8PoC;NMWQ=UwyQcjGwNR z(aC5kX%gE9$aCqgQkmSe2ChJeZb4>1hT+KeUTT^D86R zt3am`YJJ8Scmywu`{^k$mXOU(xEhp)1 zMxnn@aZ=>ILX@wY5zAzT0t%9^2%dcgg;*2`OE2M~22PLM+8d6SN2{SB zE%}c)=Zy|Q#p zC0=GcU&Grz+32squRuB!giExncBIu3oI75us7so!a2BD4f&TytX-L+rUOpTvrMLRC z4qqoWZ*NQVMy6ESQk5wr;CXi*ajg!TGjT^QNJ_sF!1@g*+)Q;1BZA>k!dHRmj!Dr~ zuryYZ;*p%J>A7fEAlV)xi`<}8J-6dJ?tPuaiP=6HHZCy(-#OPjiF*$Q$}cWEzG5(- zatRpI&Q$#h@v}PXKf|X*I^h9PI*ZfTa-@KK8l*Ic^IAUWeXtez9Hjb#q{)K@Y1JZ_ zv*yD802X{N@kQ_IMh#B|Y`z`92k4 zo>SUAj~C61-;H$7pHO2-8-NN)^vQiMWDE7vyD{P(Cimf7Z?uOKyZa4($ z%cDE(jG~^J3R_AdZYmin-H-m=PbGX7$B*P{wHS)*Z`%;k60{F8NbU!4b&l?hF#(#r z#?zG5p@@y4&A*9C&XH4W>V=~{l+pR6KBtCCxyaSmWX@2ufOjZ1^^%z*+?=Sy4WRQfam}(jsnKa!_{-x%3A^v~qhrQv@YN1oAjKq|l8tiqWG; z4-)t|2ZOCCaw6V?Q54H8Z}B@0a&f5ShEgbop7|ET z3z^W5QKdpd<+V4)c;j1Uo`~rYI@Ab=!cdStqg)h_A;d7Ji{}{!I2xj@A~b>tx+BGh z;TLv!bXOKh@<>yz-A&XSQz&pKcE*i4OQWSX?5RjCA<%QqdCsKlvXR1&(VBLIC%5p8 zD|#6%vgGS+#?#^!)!UvsX;wsr;Mg9aO(;o7$@&qk81H26Isw$Ei^->!S&F4 zXBL+1B#q@H`)DN2E0nhL*li#WQ>w@`i40cPgrP?xRniGsLJMx}ARnpGT@k+7ZW>g1 zP6xgQlBiURDsRJ1Q~?l!_!4Hj%lHy$G#?8@U}>fry}mg{Qd*}+C4FQMAh!1 zE@Z;hFewcm#B;$uxcX@69G=c;)wUUDbKo5R01+CUvdT);3yvxt9tj60oN1%^i*dAa z-O9irDp!7RooMSuI#iiXw^ola1SL58ol45%dSb;*=)pvwa0lN~OGOJAQbu9P)2QA}`M9F(72ajX9T%0s4$Y%R#+ z0F&%arDMtY%CoJnVM>p-2BtCiT$2#3o(i#^Gp+`a`A^B7=u*M^4IQv?7-(y5I7xJI z_0(=mYr!3-hFkXQp7xz>%M97pR~-C|P# z#h@NJIMm$_GK}r0vKG8G>EDe-trlL3Dhq8sbzqM88sxS%+4;Jf+E77ok*A;JF41*} ztyB)|0tofcdqLjIO;RJYLW5(sJZTOK)AlexKm==r(td)i%0p#FGroAx=q zVXkS+5dBCnYkCR%4YZ22_UzN`Y2Jr>%4|qW!$=LaYf1!1U8K(2b@NuGM0*3&Tr^ zJa+ZaN$d%kz0F!>wJ0GTyz$>vNsqJuMRDZ0lpK9ArWrj9w&h)Kr_8l|H77lk=9(R- zEH@x0#8N_szLl*B(`5Ak%RW^g9QM+8$T~vxN%q{4!a(|CRbGjms>XPsln+B77zJIS`lnc*gN~J~=BoG?| z>@;{c=w*{g6en5!h0v`J;t3w1Is8I2H~d8rAU^y5>}OAIX%07zJ+68 z`-y`}nvmw;J$NAMLoUV}XrV47k&>P?d1(&48wWx9AAWp9UE;{FU^Rvt4^--MNfF>M zRgLQ-lA>}Ff#y*Mump8j1afE8mS6lHEIHK_)Ov-~D#VDb;CL}Y7*vz$ zcm%eeKmjT}$sM)ne&(g=QRY87tAC00PeMKydKK{b5p49Ur;w?Szk?>EQe2er0~jv2 zRIs1&f)mL&&aW|!9?~;jT$w+KnlN>?IB0XC?3~HrbobBZPNwaZQgEd_zU#-nJ#{*& zW2GqdEwq!lLvn|1duyRDXH#t)NRsROs52?kC)K(=5D&aiY8JwzYU=M3ej^ zai>%(kX2G5BdcYPR)*umqav9isVGN`-hA9+*G;rdprk87P^B{5i0z%} zAu0;}b!mGcUdgJ~v}S3}2#}G#e)ECIKI7}BCWu>hnNo@)%qc^d$C%)Q^v{!$p~h4W-orskLc44MR$`#)%dG+ia&xN7 zNSoilCCZDD-q`zuW9zDKpd?vl;bh^K)s<6Sg z6(o=peLb|b8$!)!Y+V*OWj+>rat^06*wsZz6n4^`$_I~4ZH|$iz;&eNv%+r@%mv^NCgmBT1%FG?DprLlhQ~!Oy;vhRSn5 znykkHkBIjt(>mpkWa`o@L#sH;`$|>G@10R%ME>Vt2d)QWH@!sT_(AkKSB){&T^FtE z=^h|QiZkkysMa=7WkVyqLsV$M7fvz2&Zh9}r`+fTQ0h}|6PW~KgU*>^awEyu5`E^> zmG4WZzBoPgS@fXz3vybcHKEL)~t1+7JE;L^Ky1L3KNcSIo8Roqa`gdnVy}~ zos07ZNFHsAA z4O>h@$;yPXltN6IilDZyS2||R^pZu_X`h^ZzRSGlMSA;(;Co-G~;@hk=uMj7nLPncy zh}Md=knCZGiOxHZO*F`~+5kCNpX2yt#gUw3YMd5{^P==v4^3-xhw*#sw1dgCT!Tbh zHF&CTk3uy>_9NfOZZ*>7E;oeH=N{T!Hp9MvH!XglSW!uBWFK5U&Q&n8EaDgIhu9Je9Y_*%I=^Q3;qpGEp*9fzLWwEgrsG;@^w zg`1_oXOxuvh}CApl7}D@gWyN0^LLo-wF@%rL7ar#2k3;l82I7&_4jG7s6?w;aOX zo#KAyI(G=<+5}6GaW_%|irG3}pI zqrr_fwo1ccO9Z5XJ+&H*mzvPmXI0Zncm<9D&pOSM4iCtOKtsVQZ*lB6GVt=QvBvK2|Pq#8ya32Y2@IMsKd8`*wLR^u{M+I+xz4*Ck4 zU{Wm9ktSQkDpH9(hrYB+O$k!bPNxc?LTMtR;Vd|DkaAl;>NQ2LfEWspYAa*zpdZLB_3GG+2H*UL>VFAqqJ^uCY9l*{wrC4xU=_?%Sp%uL;F9 zB73E{$l6q=oC#8r(g&*6M#PU*DI?ci6Za`fI_YDcPtpBb_!Q`m{)TiGi$Sm3$c0{* z$eD4WNlAC+mz4(GQ2a%tC?gpl5THGE@8FohjW3^*!SZrE`CIs2jn*1jao-vIU=g%u zu+zFsgIX*}oErr($Wisc)av!V^SsM75}LDNgJR%$H8Ih6R%q6e7&04*}4y@964AG#ay zOKd3{y%MzTIMnMZUWS}++dWNP$A;Ib{{V}+l8{I0bvInT3UT6ip%CY8)E`~EYq$%{ z;d5ZJf{^gs2bir`&-?1LiIb~EM`|igTx}@Z{vdSxe^4i~tM8&(2qi?3-vsAO2DAvC z!kW$yN;_pq#;q@Cm2?T3)OQuLX4etQPrk1yqG!)P6kh@M4_VhD__TK0_g94Di+VF? zOnRHR1tLmu!6akFP82s1puB4rli)^e)O7y<(And8`7kv#-2VWoJ`%ZT75ft8mt|gb zr(jiSuNLM(e;bgY>ImUUBLpaADg+R9;M`t1<7-VHK(a<$e5LI&?YS)t#d+2elII~g zKjq{3>U@Qwl%&)P{{S~Kcu6NXLCGKOtvKnDrLx32s_BYLk|dYdaa{YMN7q($(LOCQ zO2MW|iMAAEDQh6^N-#&)@2S-x*F`u~r4kb6Q_nkwp>?9O`5sD4Nb)u_%cD8b4{Wz@0g(x!c!nbfq(rK`|G%Brqmg(y|)A(`5nL|0#(Un&2 zId9dK;jHZh;|EoobFRtrrh44jQjdu0M;!2UDrI^PCfG)dsM4eaxq_kSPN8itMPY4( zY817~0Sz=1F{pjb6yv`@+AXJ2cA`Tpoab;k;C*z@Dri*|vPr0_B0z%jHmi6^3pl~i zmm~f_>YX)ARD@TuM!<3h8Pu{?kw}Kw)6`|K*;{A_9@@;aEtYs%MHf_<{H%65*N&4i zT(rsI)#EbBCuu%}>#|E@<7-6iBlemLnNQc9M~m5ApnX!5;sH`JG2a@|82Tf0ksUS| zeIp?7eRb737He!^rbt~m832Mg9O^DxDxSMLsb4RpA(x3G&}kkO@Kf$Hm^F7~BgMxD z(>e-xfwaO*+;HMJkmGQ576{n1Kn^gIfN74#mub&o;kuwtdQkW#U?9r)KZpzp5F6tq5)kdm%F0nj^W8#X)1 z2f`UX-L+Y0l@%gCP>l9VN=kFtM^##6(t8{2`iO7D3J5pLw03PoeXM%4z>w{Z15>zwon zpp7amISqnaLE}GtNpEBH!1s*k?IeboN^mjd*1S`)Hq7pz(x=NfN3S~6v9cAk!D%5#8TQ7csiEAmDb{3H2Z~uddV!{PB96%5+7TLF6pZuR z8jV{uW5*#eOKG;hvXCx5U{j~<#WzyO&Rp~86 zjpL;wIOpF_7q(8Lp%%S4PAyHObLp*8$kg;ugHBt^3Q}{=IlKA^F$x0(zmmvJ(nDY+(xhl z(g%G_`zVqI&2i)mwCVTLu7znbiUf%daIQU0xzWl;+XkH4sn0yaX;b;aLXXq^^_J_h z(+@)vt~pJBBhJK$E~jX0Bx9eqrk@+omb3ts33T_vE^Q>F5JA@2dq!<-oXT5eqLnz2 z_0E#0yg@~$T5bOTD}appX&+-b(fXk4Pa}eS-SRY?HXxU9w;7pbSnaFhT10DG1-R&6 znIL_&Kqa!xI-03#3Opx{2BA%(Ois|l4ij)Bzp*H6 zD80|$I^fQL^{t@=eZu5jV%?I zv`F<%n@(BYa7S!vdUVSaCS2@DUc@YR@1w<|j_5T?YU-`{s~w3*$8(Jx=w`R*;_+rA z>06eK>EJXHG7q@>>WRG)s6~r;E>I((GFwSuXM`v5Ap2`RUFfznl@}HA?lidxj+AcX zB|Wu?rs&ktlzmVC01K~%`hDkiOZbSp>1lGEZOJh$rrkzT{Y<14z6bGm2vEnfjsx8q z^*kI-f8syvd0u{0m)l=H&*&3vh=@x`2MHXHU%C3^>wQ_~DJ(lROgF!2BR)id-05p0 zK~c7PijpHBDbfnhI3Me&^C`rQHMx&CLS0xu!%T|nylW>qGRp6(km{jO~CJq9U zc>0pA=knw4sa9oGq&ml?wh@C^ayl~e4KWU7Z(S}^1{h6-|^3cNKC0+KW3CmiZtPm7Pr#?$xk{{Z*kw~ypsk9%IePv(_v zyPK!CJnKT_r@0EPPI*jBjPHHJ)hGCpuIW(Vq=W0Pn8}9m)0$dn`Y6pgB{}&8O_yG- z5`1zSNy53nAE$kEEd|kXnOA_?nx#7GiAFc5o&X;DqkoCrG&2d5@W}Aj&N=5&+BqVO zy84i^+Y97(8PKJ&lJvn92dXlcl(YW;xE(5;G2Lw*!iO#I?+-tI+BKwv0=(aqH`*R>gCnb@i=M$ldFuteO=@!ZB3mhM<>n zNc7ZRM#^x|MvW3&MVTpVsQZ7erFNL|nhr#*IM^wW$p`8?YAvQ(Ww4bFuUS=6X7FcjjVSWBL}h7CA5UsU|NIlWKHp2mK#tQIYxii>#1dX=+TE; zIgu^`5F2KomlnS5pmUFXdHSwhn(IzM)2M<|N>UzDPBV;aej3q-EG>&OV7|ik6_7#X z>(E+g#P=cFen4V2*A@l`BT2)s{mzS%UX0=}hXxKiYSOfYZBacMofM7BP}0&&S$bvJ zP#H=HZCT?d2T`S>%77IrdR|sD_R@}!yySy?l{k;gGrp&BI$!tIV`M<@NuS3 zLN&6T6xO5pRUy(or%kj^NF=6RSqpb1UZq;1dqCn?Vj`1-wg=N(-$SL@Wi&SBIF&4J zIqWqT?4nx^L7*_yU=-eRJqD)R*vV)gR-v+mDM)Aork258z%!`o86iC5wy!LS6j$Gb z2rZN8ofkqr*(-CLoh7(~AgMrPjR$CD4UDQ{qepGHw8+cJPnAI#{{X|T=QMW;OsF5a zp||0o187!!C1XEPu5z?+MuOZMiPS0dDGEWtxx$n5I+ZSmP3${Yl7?7RI8&Tcc)$h1 ze=oL@R@lfutvc&95*z29+P;?(J@N}%^QNf*BRTr&T1}Q)(GAGk(#pcqgX(dsMv*J_ zE;CR0cekW&=bY-UwuA^os;)2qG0r*0qf2Ecpri|l)Ev0k+xG3L>6F^`6^~zHLc$I< z`vb0PLeH{ioADLBgyYzZuotrl2_)KV0udHU*Z3o1jU zol}e&4evSak*H*k(47%+! zuRfO^X`d@;DpI{QRp^a9FpWB->0aa<0qKnfk_`4S(JGkox%~8<>~q?@=D{wqtf&oJ z8_^t#UVnB|U>{9N-pk{LffX4kVP!56$EJ0fk*azd zrBY-#-+h;FOPSoin6? z#jssQo#U+dWPW-awuVbUITVb{0ZJGLoa?pL&fj_)toTtHbqUy#b(=3tw039^*8!G- zNKcq*WzH%w;g*Wfpbw@r>(IZ5t5sVnaHT|JI3Ha$n5Ehs9*0qaV>kzm-DIAA%9R#I$oqgwQ+Fimol%0hO6q$hx&JN<~%Tc*nT zDOROZ2vn%?RpM>ODFFUwSH8>NzY-LT`6(KN-{k-(%o$aCro9DG7M(Z z;;+q)IMfw1%Ijw@RNy(Cqdf9-+|J+%sj3rTzS+V1XwCL3l)>V>;#~564%yRm!6~AZ zNpDJ!0)a@*Q^$QOdMv#MZM#{9DeA1tPVvqGPi!22T_sq_HpnV%MVRiu*+YosBRr3& zIz?M$r_dx^vm(hD>Vsg1f+}}5(fi9l47dtdgw1qF5b6w zHjUEC1BEiG^225I{ur!*x!2X~lr|KvsQ`NEXA-K=)se)u&+C6rt$Sam*7YXEv8d^V zMWjX%sjMV+Mt>TQs@ANnN<5ND*6pcUN0D5vxj$n|l}NGOTgz7oI6xiLeg6QT^VHp> z6+0p|S#ll;d63dOp&(@a&X=2}9VB|}g&}xxDj@QpH0oP88C7Mcv z{G8swvaUB8P)cJYD65s1NC)r6gQjwykgX=;QA$-JCyA55PE-&2XiIwwT?N;4rOYMN z6l3tC+wvOKIY>NZN~KX#k`Tg|fPCb0lk^?+dCJ)e#*t0gtg-u~B$b{9>A|y-yUinMeQ3r9L_I;^v{E))Z|Ac$j_7lkT(OyyqWdU?1QOwW?Gs` zmy)B&Qn@->PeEGw8kw$v4`U-MBa9sC3)ts0_0-!@mis3kL8~N~H>O!dd8aakfxG;} z*IegAs@c<3HzPP4ZDeQPvD7jmlkA=?dP<$;2Or{2p`_VO=>=(%-h}|Yyo~D0NRwL-@2Uf>g#vOhjs~c$1A}NzgHJJ~6)8OK({oIp+i8rD zhUWIITw~uwF!U0o&>g69gM|7VXF3kFJj-m3wQM^J4=a?8LC0-PJ(Y8$FI1-%%7bd- z&|_3yh`(T!xgpng4%zNKbd~I6v@%;U*5Z<<`5wnou8_%WcBey*mi%3SYb7@5q{;={ z4<)4(M^E2Kn=~YnAcs?#Pokmygn%$dxK@y?Z2~M=)duFL=A2o{?xURt8$~&^Y78xuMM~9! zk6Qk8GVYdlAWSSCzCY#K`;V7S_j7a%$?7q@^t99;b~-wpwI00&@u3+s$%7 z=SPw`pp2RvYJx)BXs8kCrFWokWMA193eukgpHEE{Vz~%2VYM-|gm=$vI?16NmRhiz zZ^)#5h#FeTm{gJ~#am7X5a3Ed{v)L3$|a&X&Z3$M6o9M_RjyBCq?!P~JrW;2FO(D5 zoji$Bc>D&RZw!IYt~C6b5kL~RNpY;W1~Ke)I?9IoO_b?KVmzd}v&dHpKDw1;+ASFS zGD~j_0FpVY^u#RJBlT0NFRMWtq7#x(-2%C1HZPrk{KtW#9MhqTav%XdgwNp z+So#kM?+G=9Apwte{D*cNs~agI&x~rL#kF2j#4#_^6+Mv#O(6#uvnwUE~ElL#+x2@ zPe8mpR?MRBb*RoM30TNF*)M3u`eKxsuC2l94!epTeFmrvGU^f((C@*@O}1 zaE*vY(~kMm%>#-Dy-Y}71o!Wyr=iq_ZRl>aHz0knsa0&W%RgLmpGyU$9#7XoQes*H zij+#zKeHcf1tmOV*XlmHqFN-;j1rwBr`&!?u0 zrcRdG1Z$Pht**MS&rIp0MatP}y5mdp731sgrQ0Z_Xs;r)+hDCu>XO8%>;YA~qQ_Y( zJ-cb0`~hQal%aJdOHXBov4h9cQ>{N`l<5uj$5AR(7ZR5oC+m$T8DhPmy{eprxBJIc zjCvh1kZpnHH6ncEwBAaVuPDx|uCym0{VvF_5Q#D6pe+Ctfu0B7S?{D)TNolh6Iw8; zXiG919H&41L)>Zw0QW!$zk;9IIM(I9xKgF1OI|`kdB#RRrn+(R7OO&?Lhy0)DW(A0 zP7btAE+k#@1W0lDJDy%M=mFJ}S`ng%ZO0rr9B00m9inEK2qa{Zp4wL_hmk_2)WxLj zWmwOk&`V4&(MF!rsCxkl1RqrDiEKfVn%fSt1b{nwjYijHrL7%Ewd2f5Tyu}~(k_ZE zGJ`gAjJ{lPXK!#1rjo6Wmcp@Up=sFCIs5ae&1^4PFGr!yX(3Lsc8^eVtEaR@>9XSy z8{6b>D)&&=9C;z2gn-}!+l>|MT16Q()}brI+(#aoGzIJvRJdDl;9HPJPp+iai$dA? zn)yO_Q8@L|D%&dHuQs%~K&3modg_wCNmh_jnQYXagqiL}$nK;b`1d2*O}!yf*w`)j z&NAHhqoGR;`BJ2Vv=Q4&$Ucs(>yDQZF41by!$T)%S@M8=Gyb|9TOMA4cQ5vCnBwOm zX;%axAwd3~`e}_()qM%bSea2tKakPLXM^;5r7?0EdPBsiCnqQL<5KCdpQ2i=?N5MG+YKp8BXZ6&w0eGj@1s_w z=n7j0RCl60CEq%PvcM z*F_vem!eNxHdihALA}5gE7u=E{`%1`U6X5NDN|+D$!;r-gpr;5a&h_k{zFC6VA4b_ zTmlmO2V;dTt`*|1#5wzZ5%%XnUuS7Dz`JCvwJt?XxUDuk%5d|K=m*nUCYH9zwb&x9 zdBl)_h_YTS1%G%M2}%0r)AY&uYISM)8fRX>Q*PH9Suq-FS3H?mNl5BNbT#Q^Hmp6 z(Gie`0=uj^fPTl&YqhUHZ)cI}&n?u(dDdg2K4l?lQ9qx31m3`2T*z-pL}(kQ5@fuVa&nc%s!jzS5$oB_Y zV)-u2^*RF8Wk-P+!le>avz^C~51}X2>Z`wE=^xH7jP8U^=_gcQT|O&fk8n8b+DKu& zsbCd;@;M!b#Vd?(Ql$358u7f0D;8hm{T|nion*zYlwyqAk1-?0S}}v)8qVc3Uz6D5 zXG4lWFC=81=TWIGFQJa77&Q?^rnm#Xg!I8)%<8vLoBKpGz#ogS)%w?D`7r&zL#WPa z4!)&h&}%kCwp$xx8&rRmXe6VIU~{P{?5nPcpuZj@j&OGN`fE(CjP%yR6D}CA;}!Uz zaB+j86~&qL-FU}+)g(Xb=rpagR#MQh7O06b{D?jO09_SK6)6pLNDfsULovY_?sZOD zBd$iDY+97~uo9QuA;6zseMR2cS)M3c>J#imN}{Zcj@qR6*e#iy(3QL7C(Lxtv`6 zZgy~`azGV@szTc&sO3sJmmbRU(g)G##fP!8pSG%}WU9YWk+&FOfWyl;$0J3^Hig=( zHy@q7qDlew&bf4f(`D*pbg96Hn<@H{rGCZXCMmxP+SYJSWP_!o{f?S1w+vPrTd%JTr8|}Z@ATFSrfHOrp^~ft)wRV&?UIB)gX{?J#{Md5VT5hd4b@o=m0w9 z*RVfDN{knwf?i1k9yL_a7r&5uGTsgZAw-DG#V9pQfeF7yE3T6D2UR zoCN&{)2Fm1kXnN8%t;O?_V3Q6lC)N1XwmI^iJEL*4Yx2tc~RCnmu$Q~2nEzD>O7Vd zg*=rU5HNLISXz4}mn^dvt;kgQOLrf|kWRKPjBRa!l^FQBSErylJL^Rz5OUsHQh*9^ zj2~S}_L*f1L7}nr;YWktK~c^L8I1@lVdVP#G|jdIk_yw(!#Pp_Cmdr^ACNw?O>(0t z45aPeq7KpN>#9T26I}rAHlaXq5TZrHjbTB+c}}0RoOD>Xq{pl{B0q#WI6U|IjV{=Y zG{<{k_0!h45@fc#e;7aq`F1*9_A5(8TfgL*Wkr;r5S}nKY-DUldDW%D5U%Ijoip?a z^m8E!agE!~eFikC=%_W)<4ePbztgslOyYWM-;#AJ9CP16$;#0as;Rt^%J*~II_0g8 zPe`jOkoW~|5;Ldb$h#^UQ``2VAD)9-6+M>WP^HRnAvqa6@uh1;7ouvFkx)w;f(`)v zG^&@N>tZd#X;t5GOoW_gPss&)DpKrO%}CtvD*F!FS4?h)8*ZB2IZ0cmZqttX;Tkk* z3h1>ePlC&UJUY4R#(w++aN3obn%Ekn~uj25DlB>gqp(0#M0Fy0UOf#mw@xt+zafs1vw z<9_v7Byyca#kFwU2H1)SW5~61mlf5Yzb@<7Pg%` zG2fna<0;u%<_>&@L+SO^QrXR|3HAD#UU<5N zVH}jDC$RR_S6;}z*%c0BD<9cl~9>(EHZ>15T$3+kM-kG-!a$XSVdly3Z7qiO`(*G zcjq5}bE+pXJ&N~C9OdsCqntF5(r|Ea0rvj@&-Kxavwn_nwt0g<4V^321F|V08%P6`l4diDyjiT z2n$I{0mq=uPv07iQz<{O+4gndJ)12KU!u&{CDX} z--C^qZDfCye3Cxec9ZO1;VZW|$aJ=**<~Q)p~XDs>Q5x;r`TVhtuo9ouZMa2FA#EF!QlBHJ`xewmKAQpb z)?YPq#n-{7#I70t0IBe5=0+}fZZt8TKDzRg(d#v^jX80f8Ek>ari*9^GNspb&4&!K z+khmD9Ox-b?oVP>9-{o(p<2#-+3%wIKwYz1wA7_V1SimU8qZ$K%hD}XrzSfpA+o=& zlr8L6ezH{gM*!!xwNIiI`jzVMJti&?>acxMbj^OEu7xU{3QNxJ3(5ByM>{ktNamkS zRB0*kLC88BbO&2BD>=xp+)Jt{IUf3z-jLHhj&9asqA7JR07&2isBDH^Ma3r7|-L{PD&$jk#mpU3P>vEbN zc080}z>mP-?e2d1>2Ks0C>3_GPqv<7N?lr&;(4+=k6*U5;~{H8^}yrRQkhiu)8BuN{o@f^iHcS5^%vTM^xqbOdOw3HC~vVpydOnRVN$ymBtDKx2~m4 zCNkSB%D07E@REdA-7&6f0> zB?%n%!O|tgkIQJT?U^o1UpmqXPd&Z$c*uy-V(n(&sL&lTU68B}Fiy2hO)Ze+@K=pq zey*TYQ~~wQnJy>|Ee0tx=Vc5f!=FxcISEp8RkvM2OT_Qv)aa&|IMQGjE&7wuoSNGp z0r&wNtL>^SdV@pFc`Ig~=yfxnOmykQhUyF@1Oj*ijc3bzS$uKH2QHg_C(7*Ef_?ooxbn8e z&4nZ<#I>75@Ur0`EBLjky`mHNv86_z1|ad2lYz%L=UJRRn-$K4`sHIYvk>u~Fnu*? zPefZygl+n|fCD%_r#hBMZIqgngVHM>FC3}4Im&qnR=XTMiIUL0Qhd$@Z#Y6vY@T(k zbc~Jdi__X|l&wvLXTCF~Yef>-PMph>Mgd*DoBo1 zUA8imEEBgK^wSNoYSIR~SC(E2OQa25O3|9Hv69%4I-{T7goKYfgm(V`eMY5hGfkkZ zmLCg5h?0w?2b2+w!_)(#@KHaMRjASFmGUJe@|7gvKwuN}Ao}Qcvd9x$Zap=oo2E0B zwygMo@}JM&PL{}D@etE*hv}=>^eOsQ3f(+urWQ{RJ)XicIo*f+s%f|8OCu+q1o(io@_Y1>k#+Zp%N zZL*S6;|D`sEUGeR~gKtHh>C-Fik; z?QVLWQr4xOay4|8h;nRzRO&_0prenrol0kIj8^SJaBwN*tdC7~N(yXxq)ctpCB+Qq zj&+v3nj^5FNSbvc*5#&on!s>88- z#Y6+^tuqOk>fXzc?wKw&8V>HyZaL7bX?8T^W!Ou3U%h!G=f0x%vg(SLJLoZrRIV}D z>XI!n267uzjp!T$qU&IpF0$Nm$jf|@jOsPnbo7p0Whww5dhw$v61zHF847GT+DccP zr9;r_#5dl7vnqFAiWrZ-Ip<s#wi_ScmDH3JvWwFY0&u-eHx%N+k z7ix9oT$MG>ZO@m39c5bq@_;zc=5>cPyRG~qL`sFPlDjuM@}w8b$`RQ~+(NiL{{Y+h z>1QKvV>ns{S8s*MgrLlVlY`+lRe`vS1%5!E*GrQ(DbQvTVzmCFPN#=x(IxLG19ORA z2`Bw^1)is*QR7W)Qmpl^jc73SUhl4$?6z{`x7`gPqz>gpN6I^Dxbt$ZFW9dW*GRK1N{!Y3Guw^uf`wwLZyMP$&8&Y z_^at3RjM@??QWqlSdkny>cU~FJIn$+;r3lfQc5@(93DWn6>mgs51pc}lQaf#z zm1l-r5+p=WD>+NaYs>!t<8%Eq$!u2iFf~p6l}1Cc(tOz7wC+1|>UiVZPLPd+=rpz~ zEvg)cFs-~cwEiLPGyeLb#@iLvi!4H!N?^tC{6dq2twWGCc*5kBT4iE|2MKj0D(p~@UWiWEO0ldlG9xoMvElbxVVI<(qym68-abzyYDSCg|O z#wumC5=Q_H8TKVEx)>tjx|b2u7pjmX4P-8Ahv`5MQW#eq#&xd?+9!X+M#HW=&eg1K(^s%0iKE12LvU*( z_BxwmrLq~+GN(e?ZwESFVXE*q%9QixC=;p0-Y*=W*bnKccdvbFL%>pF+B+d!#R zDCh($k?-rRnA1qjZ5C+qn{`{-^x$VyzeGoRW5Sz7HB~f~F9eOFu+A~8ZcD3Zl8n{O zT#zaZ#Rw%Fl?)|A+n)MY981L}j;j_0Vz(V|Dq$&fjuYswsQT-tB96VV z*rn1-@fa8bjy{^st+&|x5tUt+E59^nrc`~(2viTZ0kR@tix(fa7Erl}1rrLq7T&nr}0CY*|`ElG0)SoYSP zbYs)lN-c2^9YWt$QV%?8HHp7PRq-6*UQ}sRz#DW0ZRBURrm)&!c@suk)LCs*YNx?h zIpAy2$1O>ctFn|Si-6d}3RVZEx~F4HFH`T8#(X1bN%hI^rFhuGT{5XruEpBaY~*Ql z(MgS?#j_@zxrZYuNhbrQ1%*rXom&8l_~Gc zZj}6bnNUhWN|vMCWBoKVsTA~qw0cy_iO~g_4k;=a!CA-Yt3;%X_S<3iei^HhVwtfP zzD7qnZOa0tfl9TjRzlQ?K;a+x-%+V-wAyHDu&Z&NSuUg%d!Jn=7K(D(9^aWoevIOu zN)mRENf^|rP!%L$*VtLedYgI^P|m&Aypsn|bN!QdP*$bM2!^9Sy%=y8Wbv z6SPN?w{SzBRQw5cd)r~&wNR06GvQfe}jB~cWzHlEr# zLd)4RYzG(tL@Pbii zS#Q~*7e|)$Hl-S^;5!{@XD4|-hv-I=V>Z(aKN64g&JqU-0OQ{r=%m=Zo`_`8Y44l> zoGbIy5=82l7OQ2YmlE;^1p9W=sz?n}DNdyr?47OTf!|HZ6LQd_R;D=g%&7i{Q>49= zhtSPyTJB9sQoh7{Yc0Mkx}IGI>K2_c9AaDpcpr;KGgigCD?;p=lxUe@zcRn3y$Q6; zjv8ac$;fxe(hxxJ@2vA0W7F6UtdlZQW2ArERnpNePi1A=^P9?%lkbfsOCD_&sPW!m z(3u2`D;$kZq_U*Ll?Ak@o(pP81CsD&6^g2C_Qi?7s)0Ui_<6VK(E>wS_B_?e^92*2%PF zb(iHs^EDH6>8gBc-E~eYCZYV=Hno+i|8^_6M@was(M-i;I2&4f`;9z{$r02eGL}gR$oD#A(7R$q%TICFidaV)c90KkT13P? zlIlq3fv!tJ(9-=q1%MpS=5<9xob*Krks3}yax_$S^MNz zUc1;Or8d%)fO#P5sXYkaVyqYnGCV&FsFUrfUi4a84@b9Fqy%_Fk@#_pYEHCMrX8VL z5aB>oRp{ZxX9!6d$2jBj(*4$%I*pd=REm3a)T%=}BrIXH01C71^%}fh$vArzYP5nB zLv4_-uWS%?rdlUSgJe@=N_ZNFBn|-VHBo&RV^SGPKm-G**P^idF2|)sCwiYBU1qk; zk)rb^D?~QY1o4cGB13Y}+0nWxu1>L9ls8=sw<5n3IN%xDl(-g8=$$;yp2+3BLq74j zuBtRhu++?zID|Ho1MYoE{eP~8TA4`4j$3RKI`5>v0hGNUV=7vm9;x*QS+6AVETQkA z0_M7%s8!sPL6#HZD+x!0|iAV@qg#~Yo)74HKq)^DKE%FW*b1ak1~gI^g0fmnTrU{0V9Z5U<&V=JCJ@9|mSzOw0NWAf_ZJ*44_=xq>sFx2`CUmxKO+t@F@T4l7 zjD$Y=&=wqUcU}@kGwx11Yt#A+?rS}JbkhDwf8Cwuw=l6UTHF46K751Jo4%b?{j)`% z^3znKvO@!El1~R1_t(^{)jh9gkFB3Td;@f%?dmsMS8`2$SdA7VhNU^SR_WgEHm7QT z89rrg?Z79v*T#O)`6}ix&fV1~*S#m({+|c2;HMk6=`DYE@PAZ#Gw{_=T}3r#sksS%PAI7$?(6#kmBR3m7!8rPKJLR*yD9$%F}x_J6}gQLZRY+{7WI4VsV zuo9x`4&bDcRrWjre=Rgm>I!=-E;Je_2sGIRv;E7t#s~OGIQ=!DN=s=HZ}mEdQ@7H> znTH?uhlOu%1t2n=B3fOOQ5pxN}r zHpy|e@t#hkGN2Vzr3k(vhi_kPEg_Rk{(k&>QWs}+_NXJr{l#WGHAcoT0dN$#{{Z_N zS^V|m=EcW5f3Ih^;?ukfe;pWADr>SQe|LeOU2{nyqhwl2Dv8=t>A=pQ>r4t$4%i(& zY0BCYEdZb#;D4@<-Eu8s*|yT`7_n)f#fp_>9-~zK;a9MIm+cDoG-XlRaXtpjgTWcp z+D-H{roEV@`%zPq)Sps&f!kG%mW03J1XE|rOM#SfGsaGtt$}R~_WO$51E|O&wlzCL zOWO@SPD_pW=uaNL`j;Nc1Es#ib^ic(Mmv3VdB)lY+)}}F+-b#lg!l9(oj2KF`^Xxo z34P6}Q71!>5qYK@x2-v+_sMjpBg&9D{PdMeT4hu*o|h_hA%M)*l;c^*INC;pq{OLc zX18usKI$VvX(&>UWgMUT4GfSp+Fgy6`ppFqSz&LqrxFP`R&X_$#eRkP$(i4k+G}qW zu^<(8SGd)&W1?4ULiBoqq~%H==lW`uIu%h`cZT*7RgQSc(vQg(DQSq(LL5-f-$BD; zt1Z1go`d0%FbB4kV|xW&%T!9NHl+=i1Kew>T0*K@4pnZa*95SIl_2Xs7HL{&&F*(x zdG)wJ1f21$_`8!XMW7nod1NJA4OyZa??D<=Gbw2bI3H1{)6*|2Wyfh!BRRWw7~p47 zYh^!#vmTcr#tVu_9C4&`rU#R)0xE5Yiz-q`KTTRuHuk}jr7Vs?!Su&{I-btkB8^m$ z7!b><0QbhIq@7bmXTqI$KBZ)ns-%ew_KmvDQPi^IAz2*c_R?C@DKAJnJK_E1qxO^} zd3R?RQRl>N z4&K8P?7Ed6GG?Ks(-G8p+E1bX01(u_d4}|ZUM@{-nCDawBuP~+m`Fm^l`lBY+gh>L zTQgK?==Y_K#i7(%G9&`5_E+CmSF}p8zk})fUcYWXZjTmQAf+6GjGi^hUWr=O7{^-X zQRKYian_B>&JvU9s-*OE_GUEnRH4Z6VS~3miqxvoG$?GhS+3WY6twiEYy8ev)dJxbZhfR?T??Oo__3SmDZ87?0Z+6h*Gd#M|Km_tqHE9N#1~o1;MB{pL zJqgfr*g5Egy7cKkx=wk}a;Ml;x?z+-X>1{YpF5rS)=I52WUZlU`jbSWvSApZZm4G? zfaWY12rL8rXK(sH$6u3xBt^ zr+Es-Hp}(LR1gYW$kf&LKikl=QK>zQ6>;n|>cLQoQ6YTe{wnYWbB#AGlH;K3RkkP% z_<;%IxjLQ7vXJx&tl!Y;YBAbccb@#}e{IVv%`^&$ZdEF3RF=_^o(6TIG9+fTv7$9p zp^&8`3IkNC(5g0w;ZHIrfV6X-_|Tl2>63WUA83$cxevxT&OHWoU7>ZMYUyz_=__$f zoO)nux?xX3>-UQRveQX9^yf`5lMg0TW}^J}h;tavajG_w=tj02wxgjnG&$j9XA2(V zQma8w#|ieNT0)$xDWZ(0l#|^3KKfNjoYO+{H)qJcw&p?`cO9WB^!7Q@-Zao-BTRL) zE+oASDmg$s_#6#+d2qFTo8vC$pg&TS?5K)K0F&veVpwyf~jsax|;iI`nY{TWgh)t~X?AiEN!Q$+=9(r==|%ow)6*%#d$FwQiEB6GGgK zNeaj~){e9w=hNyaeUzo=Hv03%vSt1v@brd?#U+oCDUF2@-23Y~Ykih)VydYLan)}} zDdReo-n|VovW;>(EX7iAG6%k;Ia{IXG=&$`+MZVfoo$!4Lunt3u>^R@@AuUgY#h2j zF6!PevNP+BG+JV96`Z-5ZQO&C^w1eS2CdtsG^K{#b8kFnMM^onm+lEr9g0d{Pndh@ zlF>fc4lEQ$0(5ykGO>~pcq7<-beB6r#c7PR#Y9weJ33;UDjWbn$J3tr%~88fr^I&eJS@(I9P0r01|F zSnaKvr)MoyUv1wr*yoKRrLp+*X#W5Xm1Voudu+PO+z6gjHmHM;+Q>Y51B0WIwT-Y; zJs((CWd72xw=y%!W;<_Xu!V4>ljh^pcIRGhTUC>2F*?T4`E5z4#&HiMh7z{{1w4{C zNd8&ZHOfTa7H4%?Q|L03xM>f@E|k2Ge8i9RAM39_?s0lGIpm1ou0(|;Y(-IV@3y8BBqei+EN)S+EzOZdS_Jo zjf=&RToj2jAUP6}3yO32)RBO3>7ehR$5fj>B;sy(X@|R+ytT(1z6= zC?^OjE@4XAk;%?}oweimm-|8V{bTXwGDh3gI+|O1dTVR_4`a&B^uH~0zEfKGNv^+; zy=i~JBL4txqTBWB-a7vPep04s@B$Q44|3wvpq!6nldoqloAundwTleRfBRJ0{{Td{ z{!cMa)8e;O+Wt#l^*;XiLHHoDdI>^mjY5W!>e~V0kVpjbqm_A-P61MnB!D;o0jKF- zNy+2gXYy~JTlW6|M7<=vB)>x+ndYprvEy2W>3`q(pG{FMHtB9B!C@f*ASWHa^BjG( z?9L?>v|)K2Ed^SY5d<)C-+&G>b)h*V(=Q8chfoWC6KcnqMDE@B_R_t4480W`fYlCK zUvagxo!L{2atJ(k&b;PY;Rb~jsk)8 z_CNXb)|^?Tdm~ur_vX^!!FNA?<5a6p(KRi5Bb4IOf`xgqIp<0pAT;(;>uYak;v9@< z)|%KCRD7HN01;aPEl}DQSt$-6N~b(Rc~J7ajGtlq&(~g0ow?ITui#eIOa7Xf$_d&6%%@r-F5HWfM>ExNRbvO|gmBoUL2+FEa22U5M7?WKP* zVR%kqL=VJtiM8yaQ?7-crq&|VnOe}Kr;Y$R*Nd__G>lTY8Z_AlD9#U|){0s)k-@gq zw*##V52)1J(AwxL8M#nh3N2)D=Je2SVswzl4Y#JSF^)$ddTW%nI<0~0mbCc}?n{JY z+gdT?iA1U?uyLTtWg!kFN1pi8Jd(xxbRD<4XIHG0IMNi7r2qysE6X96t(p}U(4$bD zZk;)5T#dO>vVYTo`RgS%{Tm^zc2d6>i4>SI&xn$o`{U?!TuJO)w6tfF?s*gvxY5uK zdti}|zrM6n(VihNV;2QVOTIjbOL1rTw;d-YJ6a=sxwR>YE^ayDBhyT&AzE+HTAf9e z5wo}wJ$TfvlPNIg*-}%RoKjJNk6kRSu!E&fTL*eaZo@tGcxysb(*(a?sJQwE$9m=S3STw%-3b*iIs-x2$G=jBc8`rjEM!~ zZ00OC-5w&E0Dp^A`-!4Y6HGHremo@k(wzI9PP-mfi;h&O&m9zx|- zl|7d?p=SfrUCnHH!$JE3?@bP16O+dnIM8os=M8!_n{%mg=eDAkHnIjVN3YXU(+{%C z)wHnkYgDxbAgA}JLbJIi)M+hrQc-4`7KdM{wNiFkTR8<-SQ-0+ta-YYZNcpaFI%P~ z@Y76-H9i|@eq|7dOs##YAldC?_CDC@aeLcP~Jfvr&D%c?er$j zq*YyicH#j&z|OB1Eg7yVUt!yJmo69%Nm^8ub|*=fzd??f-N{*(OK}pS`ILe9cV{El zSsZPeru4;WbvP9%revn~yZ&a$Kkc0!Izzfm_D=#diokK9Ojm@I`HH~79@>lc6;cOH zMx{?vkR!-a5QUI{KqVtS`gvaiJ4?}W2@JFj?5K|Vs#_xKWRG~OT3ujso^{%1C$Qxz zvfKtji=`?axz>Be>6eRAyE~P4yC?Ty;D4@_V{$XdnHnUfN=l0IeYMYMD~mrOP7c7a zk?o+H5~fcoG}-l7WtjWN9FTd{h^4<4;oDlW#_+ZO4fg4)>Il zjl6@b;S-;&JOM*o=jq#9Tp5-|a|(Qd@HoK-(CU0N#^tg4)3{RHV27N~9AN35&=OlK zUX=!C$57jjIL5kL+0H~i*$%q-Eufs9t!%BPtJ@wh4IU5^kj5TK&s4y9QV3YOZSyVL3mDr=eZ8<0e=bm-VY-L3n z^)ZAome2t?*CnHy*r7Bz5S^;WJPlbr3gxivrBQKcAxh`(s;fk6A7R-NSwnl=PDmV+ zsw&vJ(Q4DK`15=O;Ry%vYI&FAv!=Gk_QMUr4iUH%`g5-`vUYBn*r!~cBfd%++MMgZ zi4FWBjoDsd#>;FYDm}1t*zmqvWbY?h6{Az?vg8t#U}qo`t$>e zyjcxiuTXG^tdgzA%eU87m$XW~o>9?t(v{;bBc+9M;!1IkuhT{AMAxwNx?K9CR^~>P zyae!stA!7z*Hh?Z6jM@Jw~)ldE5uj;6?gBS>7o+7Juew(Nytb)mV<=RNv4M?TS8kq z8a(6EwsjsFWmN#LJ0@(e-k@g#APqcU1}#T5u{~CWMG^yT$5_XF1FF2T(2En_XY!;-r-MD^KDY$p)BDLYg>^w`s3bdxlHgy+)VTxd*4UlLaAWE_7I+E5?r zGohYe+XHJy)>jPHp*xAlS`^xgZIE!3q#TalmpbvX6c)?_@~R@LCXq#P5KtG+*&(Zh*m+hSzDwl%84jc!9k zXsbhtNgptA*pM^MwX6#qnchcip!F`92}R;IgnxDu$x%92#T>T66eumsU+*KO41wfI zM;~A3r3>h5qS@<}FicA+C>Yo=z|$zITS9Y4GMXX^l%m2Eu%I{{{<^+3#feX0$n=L% z3_9xwN#lOVN|T-n2PxUYvG1NS`D;Y1mF!Q!dMmv|W;SFv@GBqu<&w4jrzB`n&{NnjK`luy zvVh=ME8CDy)TiI;-%1k7RHlh+tDfmT<5im^=VXmYc|hZl>#EJ{Mvf*jpAULYJ^q@i zeG_Z51o-KI6VTapW3>E*Nr$;kcqF9#k3Igl_0~@+IpQ_=b;mdMJ}sMdK$Q<;X9v{d zUPHvsVPrsvl~_rCl@NRG_tH3|Q)o8=sKFsy@-ge_rch3(I>p2Cu|MVBBkXnD7swR~ z*G=UU9e78IlJ?WxXPuvRXCRI-|Dsc&!xJ&vmDXz7NAIy6X?XG#l+Q3H^1 z$JbE0e+A}eU6Dwn!8HLN!bvDR05}8RKH8deb5pU>)_R{sj+q7c>L?(o2v;O(x~5I* zVy9FtmSri~7URt&OCt`FagAxkD_xPkNpvelx%?VZp-KpO^_=*Gd5QP?YR+X7{HRs9 zpN`|jP9zn5ducDSkeWo+%{nCH;Xn^xDAZeMryYmQyAn6=SseNuP2CoVKirR-U1r{k=wtGV{oTG1(#*=?AuOGyR2#2;-<)gtR0wX(eW9^sTWpZ@?C zOtL?bFB&OChb9b<6-g->;{%;hQl>%9hFBHHBE$2qB=7+}v??|kX#i^SUY{r>mjTMT z#HpNR_mYPc0j1osAb{aFWFNm*mR^NuA${Z>0$UU{H7SWokOs8z!55Fs9mz1Cn z2Tf7XCXnQr(PT0=Ix~&|)QXnr0WT~q2fnyV^d65bF;lhIF_GWj>8DR*wX>$>!IS%k z779r9($#g*Se+0_v!d4$TZ^?jM=SIigSWF}rJ+K(W=N*ILXngY{$hC=zB+9gEiIO4 zZOC?vr8 zcp3FN$GyJI@fwjzXHYAtnpk#Ai$;0L)~JbS%Xuj<)e7%zZ1{2;D#_rTQ)*EL`7nxN z3hJ;(2|b22mo8^7W{h~%BJ3`b&za115(K(%eJFWwc*!5(r9%=5)_Es~=~pwcPl+*+7v)P~Xc zlzla&B*^bTi>44g~&q3ap`TJs> z8l0H4xak0=B;y$W0KT#`wpx2a&0d`i<%Om=Nj&k}O)Fy7*P^@=6~7~mgN`w(@#vo} z%k4sqAZ|($6Y0i~x_uB-sSSi54M3b6<4mP7YS;`>r3bczsATua(z$0V&~}k-Ney^~ zChs^ zF0g^Taplt5Nga*uwr90l*waUY;-~;{K~|)s(y1fZu~P08zd0SowNo)A-pdPwwn%Xf zW7|oj6Sn40kLGPhA5ALuJM?}P`O9C1>T~}9QPnsmg-xN3*lH}m6!Sp+b(=2sUmFV4 zp;OX=TLS=c4x>A4r8V#`GcduQ<3`8;^Mz|v;!SpBc^=0aCH#XIz;#4p>y0IN=`q%3 z!FOfA+`x7$E9t64aTebsE2?X(k+sqebAhV1iKJhHSdwt!ijF<|YHcCYWv6c6l_0n< zJ;s-UV{)U1uI6fq+Ev@WPLiP^r;}g`X&%i9Y##>bavT0t6!WBRx6tZj zITGzvO=*sq0FpTw=U2w-W_+_c8K@376Al$~>#O8jlOlRy=^aXq0f8ODcpMDt&A%R- zH%?@b8fD6Azr0GbyS6k|H$KMY$QvdDQe57kqODau6RFs0g>AI7Z(725*PZA5fs_Tvo4N102zfH7UnkT3a_S8l&ZH@t`(twmP?!vW0Oa|ydwcyg^Il$M z6T0hO+3R?|CQP;Xe`Dm!zv4pRtHyOvR@7!1eP1N=zmLN7KIiF@IM>B_UtG%axWKpk z&#UqO0B6?~S%1Ox7s7ir8)v1k>eV@py&`)>=U-L4>s1xrv*ZF?1yajl*|4Ly{pln7>1N>l#;xg&C& zbewv69YG}Pv7KsI*+O!H+i7>gQh-*}3)su~EljXBQw`uX@Hrq|DC>a}oR&YHv zs}kQtYiMb1mqmu0HyAkJ91Lfle0rU1SflhH>6Bzrs&d`=sdVz%P<)%f@{hM{>85La zis=L?=xQ^_A!t&Mq8Hm+V3iC%v}uj90)m}$)M~G!O>7$>_CQk9g_3#w;!Zx^nwx85 z>6F@?RE;SnG&VdnaNq?A}9LO2=rPh>nNmWW`T|aUum-NOOs?5CExwN$c4VNW z#Y>7o?zg<7^anq#yOX1|kzQ0eu-S4Faf3PiM2FqDFM@~g2Q zO>(V)qQeUff^)~H&Z?NL5kD-XXd^|ZM5rutt2SiG@T{{WZN5x~}bnChQJRjKw5 zyRW$N&dAR0Kjl8U6XVy(&n&h8rY2opSjxgvqfw+%TF`g)Y^q26>v9#j1G;~vkW!=f zWSW3lBZAwB7(4mF{{T^^Sk|^rlW#z}4PxYWxG8cZxS+B^f{$-pjRy3JCA1u>+D|(* z)VAu|7z$WQurrNKW^w4h*yTNdB~gVYLXPsHuElD}I;`Y%?1f`c!F8*CY=sw;Fb^R) zJ+)2rF1yh+wxLUOhuaCq9rTwizKYMF%*xznBJOS8M}JLs+MrdWC)86myDwlWBX+8x zLL<%H618SjnI0;Tt+?-v2GcJouVskPWyK{a%15r1#>4kgEVkgzWMq%2#*(8$P4Wmv zr&H>fO4gK*rj~Y?%_h4cs@btw9!E&X;L)^#OPA*Irs4Y|k~&0SGKwb?1S10Ep<2LS2eHnuNP#K{+{@YlHx z9OuyJ@NB2tNFi@^YDy)1vXXo^cs_4mL!j`8vbX4ErPL?Qsi}z#?`3{uxOl)mpI>bb zq<$OhW2ISiNwNy!zLwwY=G+najW0LwMwfk@)a}m+vWBE1XJWR7H*2c)ib_d~k5L2p zX$!#ZoOjkX^v%kaf$}VN!7h15J#npA^6#S#X?y4mP+`a^SB3^st}&~bHuhe&E?1e9 zlH$9N753C}Vpfe z>i|>YN6JbAndje9%$j3kYl+8Dt0+WGt*8^}tN85^&+DNUMST&|l>im%uR?toT4<7& zUy}2ikN_U!_tM&01k>2T8lagY!gSz~!Pa_`(_1`#o>spRrE)!SsXhD_nInE%Y%*DK z&o>WpnK}dfaLWwwpyN1 z73CD9c0PyOMz5hX%S)Rw8iF|~J@uBomx)Jg-4je0C#Zp#-&b6Ev4961r?&naDt=y>Q3}Jos{cwV8B6j)=EGed30jiXIvz@ zA)wc(k1R*=2IU^wwzfxl8QP^pmb3*hR+4e}bvM_brOVh|lt-ktrlYi!kEWNKUdr%H zR=cVWIF+Zw9G^`c@?C>mS(aU}9(bw5q@Hp()nYa!SjQMW838I%w*k)@8$zA@)5}W_0qT4>(NG{SX+Tiw}YQ;Jh58P!D=-vNC{~N>5We$jTNAcS~YuN z#6>82Z{=tRG%<9@$7} z@#<@joyo~0X*A1iAZ+Rkmlutsdhw#6v1=-l-ML47nXQzp_vD>gG4^N4lae012?&B5 zK_?%P)wr@E%~Ca1M3UfAvz;Sb8cTGkFT+srR8Jg(sZ?zhn{pOKz}j$HPI253oN7-S zUdsK%(P^uZ02o2%zQ+fKl@$JZq^%QulgEA8t`8MN`)jR%Ef-~5ElOj0+erjxjX}1V zM35KuD=?<*X&ZU;JZS4^A?4Mg+w^3rd!!-4HY9V5_Q& zU1>kWKg2$|XCo(|Wm4j%xcAMd;nbYqHglippvF&S`W!~v2( z1J@b#*TiN0vd`ya=b7#Q054zT{{UI`m_KLncrnKs(lTqGrV=R6i1TI#0m%yoIr?kV z@jk6N=Ww(pPaWgwpHh4kU5v`Ge`D3FsaU2wrVA@qowOVjANqFiKj|aWU!eU5%=_Ld zRQ~{nulpaKe$x2AZ_4E>_>I1icv1xQGG!#8D#K-DWRGq>+WIVcqnESguNCp_3~o-h zD$S%wltY*W4W!_4>UDakuaXLB25qP-kpBS8B1=e)kKxA{A6-04uF$nfbZ8dLnnZR? zhb05OS;7xLZEo@9BQ{5|!kIQ9Z7#%(w?Bby936VGD9GC^RN%WgJ|e1(1uK%DesQyBT;tK(Ek8zO_NcNNPFia$IGK2BOSj#Z566Ol;()v z>J*elB2srauj2O9-Xl-kdhAr6eYlCfWECi$Iqj_z3r2gVv66{YMN&74rvW(a?W!r! zCdyS-iIceq$JZKVDYLnxh@Otak+uZ@eTJw?-o}oYT2%Q?i82rtt=IsaOE2)~d`q$J z@V6*`ve4va(1m(|toYaDUh7EDrqbddD0vQhYh>$2O50*Z)gkERXko&0*e61g9~CqU zweAYCWd@!~f)agu=^RdreaarcYPCKpT4XDJIp^W`&CX08A#+UnVPDkHRsGjcdhxk&iFpQ>4X{3PEC9K`Ztt z)|z@F3v9hng%vCp-9YD@<5F$2N|ct*X_q*sH{mo=KpcHEj&{x{RYI%s3(LU=&<#>r zm7yHEV#Uv9AuN}p94kKE^vaO6HKLWhWj^}ya#R)06P)QX-iqLa-)5~zwCb{GW!NY_ zFh&)$dXE19%UM3=&r9s2x;%o!>O+~3(t*Y^oizSOpO#!R+MUee5Kx6unf~ zl)5+ru^P6ML>J;uPq^HQu+vK$R6X??#+xk}HR%0u*4~v6s|7e1LZy)xCv+^++~D%?K$Tyv&&N=#mE3T3#GwEFhel}!+-Ok$=|AcjA> z0D;_%My|Fhl*;uQoJdjwXz%Vc>$D$Cllxx{mats|>U6FfD6Jq{^QrY$NKBA79(mN< z=&aVlbh>1B*c90gprni-k-~?!-%T~4X)Tx2;#-WOBxaBhP72m=KHq(IOVE=OL^nhR zDilRjS#Txh##4ixyz)MyQk#1#Skgv+Q);P`;UNh){6HN409|d0*_zi!cBCn6ELIW|Hj6O=rR>2%N+XAmgKl<)3N zdCo!YrF7FMrEHF}sZ^yDk_bJ4&`)7&KqlwNlPDyN4c>=MwvJ0|)cR7%bnSI1C)04y zy8J;i`5Md%Rt(rhPXvso+gNWSOwzHYDc)9%CJbj5P?cx4Jv1XVx9l$zBQdC;8T0~YQwp6i#JAF0I_2>>$B$Gi?sZ)&u<=0L}u^ea= zx>K(@P)0yL+S5LWJ@$HweJgMkBN)>hofp}*)KC`IexAA-NUEoz33O1N7M%NOr$SNP zHWYRo3t9)$R+pkQn8y$W$J*O@CalU!jU&Y#ia`FOM@T%GS#;N~ihFUEN>+d|kKs@l{SJ>w z9FuG#Lb0Bq!&}qkZb%sj&janKRz>hz?a+&MQlDyjkFcM{qC!Vuqc4&brkUjeROVao zmeCq%U59;aw<+bRIa;~TuB|MUBHTC+%4~Qk-MDZ7@2+cXQsXcuQr!kbRU{wc!P5aP z7oDpm*oBoiu17rTHRz=J7v{!hQuZZhc6~J}_Fi7eAk&u6+@f#?In;&;+SX-G_p2g} zNMx;QP%bQwD`_VgC(~XB?I-OY(?4cDnO}t*ih{IQHyqt!b)Nz5@ehuCB8@^buzz_U-v(yzL)fzA4mFpc$imGyML?sZ~C(#>a~6i4fi9Wpd57aKy!8nw|r~q zK9A#M@+CJqU(nCyagFw47mdR8S+xLEN)MN4`s?m|9~yAK>U_tQe7B-*h~Dqp9YT)W z+Nz^Qp4p2fT;nGt8TRvWpYv<#zL#qbeJ@me$JQ~t{wsRhN7GSf&ZkRn#d~@Xk+%nv zj2?ZCzMd`1J}T#EeX#4Is`GAbQ$exj@s2z3pU7ukmyc^9=jE3y*KJzuCB_RaJOWza z6eRhNzdeS%oGN(e^YSX#&lcmSF@psPR@3HDIsTg08eWK2{z9=YInKF=tQC?mw0eHJ z*BL)TE>5Q{y-g(~O_c18GvOxz0Q;YPEndBiGrvGZ zN<`tdYE{C&c8qNU@*VXGu3pM1;t;2%4Eux+oL}yvfw#8)!XaqrrKibMTpfY z2}$uJsHE@!M{mzohS-g0{Ga)ismRW&cszsO^B?P~FJirXo&+J@4*=TFO{iCa64(0hZN=p?*9H;y!R(7H^o zQ=ro6?f9*&B`5fC+f1pPC;R{>?;YB!%%g^Wh2+$R7_4J^-AzK|8@M)z~efLPNP`8mohKGE|hI4M5k+#PjR&PXv6sPX8O)zX@mz11h5T=C!Otj-%{`80sj zstn3U%s$`%jOvpQ(c3`jB0T&wIl5#y*X|~@f!q`jy~FDU5UkjLo(9f3M6B>#-EZ82l6u87bJ=be|Ac_^Kskl zsnaPib#Qex$r)+ab`Po4o$JwQ!mHR8CC3)6Juy5$cN}1=zLW1ZQ|!tclhYbiLI;ee z2J)PYkEVy;wn5=i#K-N})TvG|5Im=ojc8ADLX!d-n_oRP^&n2B`KSdBQ4;&K(} zb*Fno=ShMmEEp0+_b0xk zNUYX~YuAb@y3-PaZ@rR}{7T^KE>z8U>U|FH+;E+z1hNnnj1maaW7=Zn)`8L_vmp(%p_0D* z_SVT}3)X`6wSf+&EEk<14o5n#9ilwieFd)@29*YwrxNEQk(Ft9c0V_vE(jg!NJlgXft97eD~KTgT?%r_f)Hr?f6QU894*71B~jhxiUFhpGJGrzOhs*HzB9V zZEd9r{o>Qu4K`dqk3!?j`5!{t6}xJ`Pw=C@d}O3#hYsR@rn4w%m*(iQ^=W8Xq*WXW zR^KCv?BM$SbTV(GdGt7*jV2=7^^l?47 zv{}p&IOI zqSEH75=5M&k;buQYi5jT=#EvTGJ5u=P6xRO(BxK#DtFHR*TyqailE? zGTo9}ecX)pKAP7$GCk;OwCZfq@T90^Cq4CEn1+c@zMQDjJOc7n#xQjnoid7r3&uy0 zPBL<&@^CdsjiGAv#44RyO4LwE0GxgG+!7vZe#l}i^bq1#v>gJU0Gid+Eh_<*)_Lv* zwe-xkw8OS_-7WQ@mmMg;!RJ%Sj#p<*J%=jpIXH!vg0eXpjHR-ao{uRsBfLD~Ff-~q z>D=uKt4w*eYEkKJC*|E49r3}|Y?DQ%m$8NZqSRVv4Zd(c&EHY`TPe+fD_6|v?I{ac zUPo;ei6HZAO{toUwU86AA6+)IKeT?P(q^0$xCr;tNROeGjZJng)f17QQK?t6gX?J~ zFh<;Q&l>6W2j~#=Mpz}yndc{3*3u&TWDZMWHzl9T-%9UHJQFQMty2S7AcK$M9ke;2 zmOhAFems>Gp*_!Grsi{=iDS~fc}YrJ!0t{vX`=rCQa31Iq|xHC&xWr<&Q7UR*okQN zuGBW+skYoeKYn#0i(dv+)NxWvTVt!reMhFccd%EZGM6H%iC~4F#m=v!O(Q|+^*W%QV)`$Y#QP+Q$K!dg;)i34iS`{`S3tfY!^??^AFz*D7a z0|1qF)LcF6uO*-bX_hA}EM$}1duo%?C0@^IH0Xrwc!8f$-&9SaT{c*9hY7{utPl@< zx@6eeL)T1g8dSl$K`JReylJN1h`IcR9-v$FsC0EY+h`k8>OPv}+hEd2#VeH*vnym| z^mNnCam*N;6!oR54am;mXJ!8qrey%$K_|i z;$W=VsZ7dkx9KJ9*W+Q!Urxr~ornH4Y3=fzs1}DEvcyf0njJcV7m2#F2E|wOL~kB{Wn! zg{L^xKIOkc@s;fIEz4hJS$26=4(MNFqbZJCWT^xW z5hroo_X@!MH0sucbJ=MXDQYQFO9;w;fsPO8bwzE8(h0zRpz1I(bI&Adk|Xv&`pVq#bC7fr zTJiq?h7FtX2VGZMrFD+zrB181j~XNvVy%X}B=|`Q+}K_)oZzVPPB1vui18jt+J41; zQ^xq~(63hi0E4ZVQ+K<%dQ+@_-f#=V|zSBlkaQp>)V#0jFccgM8jQL-KR*K?3 zUl1SUH5cOf3I6~KE&JDw{{ZFz$@nk$q_qNPR(cy=aRp^R^31m-LyqMvtx5yyjTM73 z_bdxOCiKWNt>9xrT9f^}ckc5x9D8{;#Pr&M?pRsPUYC9S^RH-Q^9%j_M z5&0fe&tsY%p=YfQg!(<=1(fsqMYx2q%Ak7KBD z(=E-kLsyF$L}Uf9pBVN&!`DT2F7ywLZ#Lr8@FfTMa64(%Eu8ZFAD^Pk{0e*@LCrzp3QkGJrCpSSm$5SCax1gTG^Y0wJ0x~GFrUb2%k%@Orn^m!scC57 zXScSkt%=J*J;Pp~Ew%WoAzAW+qxOLFFnzyYolU8?Da0QtxWUB2*b5EeOIVqZg;>tkAK?g=r47yCP&3%Y0sS14OupYXn+cT?4_6>32QkXHE zDE|O09cd1$Y+y~dPj;RXVkfo<#-#W1U;a@#zhpxBva=XtCj=+9v}1c+nQ|wvTCK?5 z8rfDhf!j{y0&0cYrJRDYTV8qZ?V+SmJ(no-XQ_>aA$(&zYHe(E)`l8HiE>;GwDJ3A zwvowITO+vb`3|tB9$>58L}^n&eF~xj!D{(N)-Zjv`eO4)BEwZ?nGPd4Be@!Rj=Lv$ ze@1lOwOgpV9c|JVo-%ap%%U4@greD1*q}Kf&Bsuyg3y^(y+?i|RVDT^vY$;Vxvxbu z(3adBOt`Q;ozpJ~j!Z;$+a!~NyVFUNN=jp%`yMIu8PZ_<{G}(6kTH-o=3Z{}ZJ9}I zRlF)@p1+nOg?CUG)v<3trnV>7ZRT$}YmlE{lmvjG*dMRoTBB&mmra@d2cwF#u4S1K z@XP1-P7%R5;2*B6+iS9FWqLH*KFeJ;QeBAZ65j3ED#1@WjdaW7(R%t_K3nN!q7qvPkOrjx046s0p>B0vp9w@KI3MCT(|xwkuOa|kcU(y<78`3P9GvMm@MkJi zg#{=}|7ONDLt>n0c1nyS}&by{DGN@=~AW=SX1`}N z%As~o2MIoz)Uq@*Cc@HW0@hNnGJX5$B_=a^MP)d&BXUMYJCUlqX`yD>QbB$7Wl2!u z&~d3a(PfmiNp;}hLCE^)8rQLvZH-j-(1v!YLybn3nB+6-yAOof0F#b+)p6r(>`Qti zq$}suvEh^T8quz_LvLX@R!ef3E~F$Y8OD3+H9KXdn44TfR7aHC?e;yv(kN_qNb-kS zhV!E;9sdBur{dBT(qm;htqo0p*&lF0(Mge~v$~yRGRadTB=O}MVN%$-s)N&>EiFm} z`s;>EMQfgx!;wN%phz6#=*#TqEt&OBgxH!C+j#`~dg|ioqf6<07NaoRY8}52#GUawcN6xg>WQq|(^0(5D)kSxrnh>{SF6a&+}mp%)>E_)Vf0jN-^p z9fqW1k<=I}KC%r2QCgj-mJ>T^R3zI8pWX9D1F9EdK!YKmP!z zzx>7i;q>eO0D%v6U;e!((qF8v{{YGN@Q>d=VZUR)_?Z3k%%Awx)UW>lR$u=B^!|TE z*XlvkxzcC4m!goU{hk`-iYgY4Wy!2>~PDxz_&xGxnFv`iqyF zQ!uqMyGegn+i&In0HNkDrzvk<-);H~SEvFtH8E4P7TO6I;0<~HKauw`@_#I@TncgM zL%OZls$iG4?MNPV4gu^lucGk$tL4$+`B*1iiZiKGXznp8oh3}a8NlRuZ7*utQ1;io z<9UCdCH@Z|$iX!nTG}-}m;6&E1c>&f?+_)`Y(p~A0b)V*+z;S6=N*rxHTB<2^QS6G z{{Z*;pC9!frCvSWKSt$cU+~N7TxkhT;s|VoY#{m!_B#3r$uiHKxNRB?E0j9Nj2%)E zj_GKELH_{V{+iJ_Ix|#h=qm=HQ<&-=M5G|4IUD&_v_-Z?rGAC?lTv0#n<}WH2;jyk z15|Few!~b0XqBqtNpFAcR~*3e2U_&|r1P%($uDPpxB4HNtwt&YMkQW~Q)&nD&NQEP zN8riWxg{6;HK=Xvg(oBpJmhFcEtlVU6Ofd6K|w=1P@Jt<)(X7G%Vj zm4l6~FqHy+xH-^wA182nJ56pxbvD~UEv#pH5JpJ)^ZuF(BTt~XS}Z$OFJYIdj?fy}8>FE=89n_o+g-l&a#}wi6|Z_h#yewAFJPnSPJ_Cc zJvE97NABKn7z2(7KkKhk$9u$#c~j&zITND=db9cD# zmXZ9m&&KiTbcbF}d49~!`2PTfXGJCC8aK6B_#*`mlKjd_i8uv{8j0d zpQvV^Xv?d=@P_JCa^$;1thCyRC&=ASmbO$!)V8&O`fDwHKP11!nrG@5>)L2etp5PR zcjCI(LY+2cI;@m~gG{QYB!ANALDw%EG`~W>D-AxGm314UJ!t9M>VEI(CC5%>AC2cJ zPA#B4_qG(D=b>`tEtZUtUYMy8s@sRjAta>ol;g^NzS_@CnxaNX7o0eel*7v(hqieG z>#TJxzKvXx0Vb@}+JfFADJt@xO+Tas+Y8jIif)uzXoVfViqfxTD_nXOty_j9YVw6i zBo!!Nk*k@93yqpZMvCE$B>}>o0)2Jc&>Go{)u@YdVFdu;SnaB+C0iw?S_Wf)rJl#W zGn&D{}iR*FQ#b>y?yM!68WjT$8J;lF=%S8cm&5U&$7x0lRMm^Q{==KFnELEXarR zOU8Q;Ksvk9L^ZY)i%pFZICU;zVL8DZ9c6d6Yn*8!{W7^WYl0ef?mPqELyFPOv|g^- zRU;4P6zVsrJafj3(%6*^h&4E}BEGb`;2ifFs-(&B;x5!=yqO;?oRCgRfz?!|whf}; zbqqnum6MM7?WE(_d31iWYQehF5MBT&Sjjr-pTz0CGhUYo6KI%igpjmjI2`K}dSB3NBFhUnB5_6ceOReMCo16MwwkYN zM=8_Up+vr5$)pI(NCjItZ6`X)uvJ#T@}whOKm1B(j+JEz?0q%29xf<@$l2e3>`Qbx z04s8m2`KN3@^oD(=;aQGBbMutoR2-Qa0cRgAFt5pD-YYRf`d}0LvhFvY7Q;5s~ju+ zbY7@E$uo2b6PwhW@so|QAncC?6b$y0!UIRNRo%?i^? zv1Ubt8z50p~}#+Pj-13dAp>w7m$PZ6flrqi636zgF_Il$Jb-i%qLC(z$I+NHe(TU^Fd*l2yqmQRXk zLaEy;53Ni%pflW^Rc3nZRgEA#syE9y;>dTA-%mLqzB2mnc%?Mr;>SMmywdCDTl_$3cNLa`2R_;B%*n7UO6)OoFEw3vh$ZIXcp^ zCbUC?Otxw9oFITW?lYk655kYq+Km_j!h3f*&vmlc=R{FuI_W45VESiL+C^IE?dBAW zu0wohInJvTz6jUzBUQ)yEN*4a6Q5q%vTcggqw_sZduc)?C=!3gjW=5CN56qm__$|O z^7C$FlatP#6l_N6fT$AcUordVN_6+fT^zPKQzuVAM#l<){#uJ)p~EaC%2aXVr*TmA z8p(FkG)xs9d2uA}`9cBiNYR?v&Qc?(vo>sUwqhvp-0Asg_A*@xl3IQ&f|py#2h?^t zvZT&12K%Dl@vA*ctG}0I9DwM332dU(0vnZ9` z**yXeh;b`+(!LX&HBOMS(A22xM2E3EIUSX#J?x~kfK%kfgnUJmaC413rpepT9-&@p za(-Sh{J_;zHQOc6U|NL**VW>rXPo`DX{`aRol+>C8@O2i0NbW-U|leS*2^+brKIi0 zrjvSOrLvQhl7x^)W9_C^bA)q2pw}vu=BboOPDy?BfZHsmDm?!HFTS#UOX{8n(tIoO z{LG6UIriU6{{S!aOS4af;CWwA@@EH+4z2o2{{VVl&7W6vAE69dQQNKEZZ_>jDaaYi zanyD*3Ls-6^Vj3~yoI0fkMe$ljvDQmt}ndnAtxjCDdTk7?!rY6eUGoK-f9^AN=jFdlpQ!DewH4+)m2NrL;$kmI&j@ zqwA;puhz)iFJk?}6)Fk`7{*Qpy+0P&=VlYD5aYESWg~x-@r>u`uX7F4q8;3P+*2N?+sl$thU9;J5v|-5 zE4ct;%B=k{ud~JGN{E;3C9~vw&kizjx#^#3^xFKfuR2;MQmb*~Hbx4Pc?b32>)4x> z(`U_GQtWkY3PKX>6tdV7qAEvZ((HA=<4pkpYOi7`=gK=f%^PkLXzU_Q7zS1N` zQF0s!n-P%WJ+hqr2_5w}pOfrmjU-xfsNz||cLa`Bj~K59=rsKHh2p&y(SSBc?uv)}|aF=alF9>y<45%SB21 zU7VvKDJMK}z#6>SH!ox^QrMD7O0utFHC1d)A~xtGD}Mfdnto!`GRcQgWxODTV~$m# zs#uO%A#w!AGvr7oxF;F?H2a6_8l~vZ`j_yF(B7{;Cv_L4G&+QoAf!oL4Ud3-{3Cl* ze>17x4;v%flCk7@So)d~Z$J2Ld_G-vL)JYW)01yQbPT&hPlmFvavV``D7c~NypS`% z2c1g1KOL=4L(iAws^s3xQm_922pevlC1|Ggy5UPhhW=*SWqW?*3r>HQqyGTK#d@<^ z`nE}5zy+8801A7ZmX?Y)Sz*XfAG<{Q3#^47Vp6qZ`RX}7k&%B5BCG1@uH}jMxBM(V zA=-o`P}6QzoKJRO)l}1p`v;pqKd97y_|GaoMm+sX#NVo|68`{&m!B)gfAb?cyX@PdgCqX{&Ko|hO+Kc5G3G{o>qr_g z4ti)V=AS_eO}YwVhRe;kq0f~-pXH`+NbZ?6YNZ04fa7WbTe1hXr%$1#c0muQFTOri zz6aG>&s<9_qQp21S0wI~t_kgpWy?E8j8@P}cTT7eLMja-cusS-2T+M>i{3=%(5Uq} zsw|?@Si(*<>tcV2JBtnWPXNQW!IuC zO?o2s_s-7x9eN9U56ij@QaNER5HWz0sMAtBu1pUu%2dQELxgTn>~){_&M!uf-CLcp z3gx3cOMJ5M+(#KoeKqJ~%&vA}ygXiox{UXmM}(ztcpptwWK2gIL=;sz#Kb;UP7Y5x zcGiVb+ce8&_^39f;z^J^G1#bf);y8E(Y{(<##PrEb~$lRr9g~oDp=KM&Tpt`l&2jW zf=)H2R*@A;Vhng|jZ*O(Ss)%hnn&obB*z#vG`SQu+>QX}2SrIX(ZdUr?3|SxXWK=} z(4$ozn9Gc8bt&!1Bb@@@kygjG&{oi+)EO>DQ$!QUJmio2f3CE}Bw)!cv5uKeiBxUK zl_*L}&5t%mKd-Onqmv?jhsPRSl&8R%M?r0b2iWeEr-i5e^^wzT)TKEUYnNhzj3_bG zg{!)ifI;=+-&ch6Ptzy0Y3o{o+)hui)di-sH>v1QVWlo0Cj;A^D^0OEBm$XorBXZw zl$58`lcjXfscao_)&dzm1HokX9;4}|$4_G9OF-HkO)8WOhRHuoR<_YNtue6Ic19i= zc5&;da5N{dVruGCy!eN|Jn59J3g2S`Rd!v58cMx6QT5VmOr))#RJ0kAe|78YuKS4= zSh_F5wgc!3P|iIurFF>*$BQL4n-00*gphOUH40i~=PO7vL$?h%dy)a*cGV^A8S+!6 z9a@lx%HEO&-q_N)Y*f~T3gt<-?9 zU=fbs@uz4-Md?=LIPLks#@;oa=c7bd<)W=Riv~o{!B7C6+QE|AMyQ>R6#kz?b&#}2 zNf_ZwEoxH*pq{hY)c|Mxo7o=pU>|UE&c8x1(WDq+HcGc2W zgl|Q9t=#27kQy5R9E|g&c+wZ1#o(uE6$~yy$_I4rI^?u>ZH3~~BcZbL5sVL0qH>f~ zkv+DFK|67-(?@BR=&MZG2o0+$JYcuDWt*B4G>rehw`h35I@_k?I{{ZZ# z)IPtHarom;x_|7K%l`mH@^4);=+&*$$o~K*L53A2N&f(up6@GH=jpHHKicoxpRRt_ zc|Ui~$@nMu!s=)GFW2>NZJ)gT3-)vAze2(G{8{{;x_`v~0I&U*Lw!zUcoBRk?r@az zfyZrplDo*%r_uD0DG62j$yinvqr31WBw+pZ>v*^{7fb-^o_*cuXJ;O49_L<)Q!889 z+HHesu;R9qrD+9Q@_FYv*M{wq$;Lrd*$hNMOQeE-2p!I~`14sF(Tm8*FohX#DixQO zh6rtx^6RTONc{EflU7QhTdbkrmEr2NkbD;L+$4Vy)~nC< zA1v=*q_1!K{)T=I)~EdZ6e{jnmSfIGj`5#XD9YSe3wNH_9h)D2=dVM<@&2RrT{gI5 z{{RdA^#1_&qYshfc)lLjy8i%Q{24{%R=Do^vME!dsR>h{CJPx>;!XmTe~bDJeV5a` z99}clKHuyA0A=ue*PrD)i+1$CPyO}~hw$Zk)hZ0X@=P$w3LFAS-W7wMQak;%^q71< zAyRtMK4Zx9@X~UPzozyDUf6nAcAEi6nEG8Pj*{4HgoNM@*x-J7*T1&cXN7Gy(WKk1 z$)`ROC@rKB!ZVbgwlw(LmPWMKLj>D}vf2>ULBK!jK3!GYYoQYTNYb^thg^}o<31r# z2kE3uwioET9pw-lL+Lz>6%)tl+gFxN`Yai83Ej7HlizQfkJD96h*)8_-E}U6`FO`} z{@S8Vis&m(inRdjeii`iyySgB{{YXXuQK(rZH1u5A(bo=gPg4dWGD2;AC|2vNS!}` ztSFfQz<{;?02U5$^#{})YJ@_VMw*ldOKpPQ^My8hXI7s?>(E9ceiF-S$toBqBfsUV zOAsR&rdn+)T64z()E!b@kgXE3(~?!SX$NWJ9=dKqmsw#6At*k;>6f#M@!1=8fx#ZS zy6F=&kB54ykx8ji9aCW}$U@ry`G(}2l0CTZt==$NVlCRyz-N(7-N;%r8 zlO(6j6K~w=Z3R6ME`?G;_qDf<%H5!)@7P@w-?ytOaHy>ZKjy}&rT(P(9k)uT##ZMM zkUzq`Q6U@A6uOEj>izR?B!h#Njz3YWC~a&;&Z68@_f8ArKE#jcb=+wKXul4j3E~o$ z)6cll)ivy8Eruc~qL2c{bqdJ8Qk);?Pl6AXuzu%5?lZU}#U}?ULw}hXX{N=}BU>@t z2Xic({{WO7QZ{4L zE5R-7SE}@0pb(_e>Zy>?{{ZAZPCrADsxKxV@gY9V&!%R#&%+;0D+*d~&WO=vgOaIV zvD@AE-hdVP=S4@2m3l`ko>o7WW4E{bHU1he9q!PhRw!>TBr2CyQqT|o0IGZ}W9Tug z`F@**zlG@0A5zaNT{9oMzu`f8(A4CQyiA#R$;CypKa~$N9qQ!W%^b`{{RQG zZa=DHuBvonT}JqL_?qbgl>NohDyrik`KlCzeCrtZDra#>`+=-i;pLCwlVo`~vOmR& z)UKe(o|Qy!q&SWoN{5*z>JK3O2-a%ErI!1Y*Rri}$evWV$jX)JjXctyV(VZwXpgOA z%1Q6ojXTP|4&nNiT7Y9sZ6UmQvNw9@a^GO$lOO3dfaN(5o=N~Cg$+iNbu1#bwHEej=rL2m^u-ZD_|X z7L4^%PiA*;u^qP#6P$L(uCyl5y)wNbJeN*BT;n+e4L2~TUdA|)92i>LImfoSG{nAx zRQF_-3wSv8*KzDkuwBj;TL>w~xW=6)p?PVF=HD+kUC%zb8XN=6;kXhZICi9g_3f%9 z(5{;c(v(!77w2U6O9A*=CDYk1^CWEC2z)D$?CO4>6&Y4ATlymfTLj zJv9QWq(M-PPA!!*o&e{KPLmARV&usX{6gDk<2({Hou*Lkn^mSjeGe#swOfhLaq2bO zr|4aD60clPn}VmQjD;!H1L6Vn;GJ3%e#LzN*40W(1(eDv$jLp(`yFUl*S1aMdgxB5 zQUgyCv;d%Sk*dt09X1`e+-fX*sB$gsDiBP zoThSYBMJg0At@tr&nKM;l)D8zhG9_*09|$&_sJc#)kx`{$~CHzla#hFIsJ5;ilv}k zCD-Lta8#mwIMH>a6)CaqiA0qpf?Q5=JqEJgRq$FPK?d!mM^JUZ0&~s=qq=3DM2l*w z#iqBl9FRK=S`#5wm>ymI^72Rs86A!_U$&@6Z5Cm5Erx(D1m_*J%NB{dE~}`pWV5s_ z1xLRcJP^G02B}SEpt9msoSt<_(6429EHs%RYj1*kpIt4_K~y=wsZ(J@!oo)#{k5Bm zG%Snc{KbS_inqf&C}mg}8k);n?9}kb!I|HX+_z+{C_%_pK|Z?lymqN=o_1*B$~1f7 z-J&~$r|X?sv_UO~W?V{kAy{)GZ@#lzS}hXO>_Mz`4yR11Ze>L&3h%EwEbZv@F>6~N zY+k<2Of_Ab^fFp+KSMOsQop+$K;lohc_1XfG*Fes27`7(0w(f z!hXoA(NWoT7gdERS@r`)ackh`ll5ojADovkuyN>g{0>%wcJneEbgA>@^vTreaSPL1 z8R0~2>>;7{Ix~6^$x`H?Rt!Zt!v`41IMX|ddf2XM2neXwn3|}wk~WoKA8kL{hPH%R zEqfVhbfi>R9EBWrBTq7=0k=h$W13Lgz$4p@R$5|lVM;Z}7&a2&B!kJ$r;{2Uc_56Q zqP0yS0bpZ{`|2NVc0VgA&FZRMLXga(g$~K}(Rk3&O+L;3EH86txNZ4m$8;>rJ+uJa-k6=4>|a` zS3bI0pU|Yz`4TQF@p5=WPwpqa2DIRp@@LOW;GU2XDMQ5>C%(1REg4g3hF3u?M>1na z90GDZbr%H|L;{z0sv$8{af5;h@26Np_gFrwbF!ojiNdkmX(}{4{!A4{ziJfPzUCWJ zfjI5Pqf@f#Q$DBoXzAV4)jB(ORbi6`jDNa)#2xa0I6DXUbH?vpaj(mNZoh4(=y84* zf%$nF?f(GFkAE-qua!Ul0C(vAzxHqTYQCduK7O%p``7gTU#tHB2J)I5N+J^m3qAvF zHa4^qjy}HH{zUrckL6#Hen*v6Su3{dw%hq@$S;xCuxJ9r)L# zs;l5BBt+zpTPR^UIPdMJQQp{U^o9ETq(N*hN;0LZ2nVrOroBHF9!L0|Z;_cw+Y>H3 zriDd#xmT7Rl(XfH9BxrQi5T_Qz2f+OMtRmXsr_I3o+pvzL|5ed0#+-jR8QKM)Ra@{ z&78MOLz_zdyj2e8{G*evL&x#oKeys8cKz4?0P4T$V9Dglo_SuSe1G5m#hN{<*Pgew z+&-S#uTbb%+M2yge49Hx&{Q*we}O7d`fKa{kNX#&C4J13%Ad`D5Bd530B`Di-_(C; zu;Z6AT3@2~{{Vwj>0iN*!_|fbQ>s_|tBRqtsrWSY7?Co2q^~9CPt=rW+h3)4pR=D# z@#R;QZr|v-U-$n2W8%E8u6fyaK0K*ktL^^)@A*CIH%@*WT;Ejbsuf6mmv?-e$NWZz zKZ9{j^be^j#;=zLhYwyn@kgGsd0BhP_QaUoW$ENrOzB;84F^X;m}_DQXVn1+d1b8q5K6iC*D_91Gx0? z-wm{8q=F4nK^&c<{G(P|CekNrnc-n=I_K1G*EY^c7gz~wcRBY~rr1eKsQ_eS+d5ZY zpxjSMX?%A3Xs56>qBmnYv4pyz`RUa(D_bE{2f*F)DnE0bIOUHGd|^R|HV-u24=T*3^Nq$m{#E_J5JV8Y{(=ciy@$CFoMdQ7TV9neC#nN)_ERmD7sP?y3%t z`kW(2@m~PjD@dbFIS8Kr0MPu#imCk$)f6RA>ggqEs!I9TN>ug&S*iG_0t969bJZ#fH8H=aB%b7bCz0Ty`BkQOF)6 zK(?|^u^OVmui&7>K<SxH==uKo{{V(<4fbSIx>I{fgis2T2C|QsXY3tF3jj1h%f3(M6|7nQkgabO ze`ajO^)4$}5rFj{;Y+TaI`Lk(tXJNOjN+q9A2QB8&fhYB_W`dy{4XO9@gsD3cyj*$ z3o`nQ2O)xHK8&M`1A;ZtJ7p=0bFU=RW)_5{kONOf|B`rRs745+1 zzOm%S)pTAdHL+s1Pl+m`_e_Bg)nJzTSPnWj2y_bw@Lak2moeoJ!LE2C89V3lX9F6^meMPU zZ?np!qY1=seXJ~xT|#p`m#9G2?Y{_=HiPuQ@2Wh)a72#NWNb?-grYriohRI%gSf9i zs*R@9heDi2Gw4Q&v9ya+TRJl@r9h=1dYwPqdKJWl>d_iRVt`Zlc*dv6g(if0n?1zr=vz3X|qSB#e&2?B7ivKQ^wsc%39;-tuktP zLPwNw!PdE+jP3WKTHu-zrR_;i934`1zJ#d~>XjFMV4$4y-&!VmAm3y@9H|3xNCWD0 z&XPM@B&O5nnIn}1gXlDsTNy~{ZozG^1M1231nE}(1$x-cNuWiXqP>a0^wW#PnzKiZ z77~GLlgHujpq7RSH`Fw?(1^iC!kiUx&a%8ZHmv&2!588!fF|ah)!=>~z`z+}#q7C1eJG2i$2YC6tVg zNT|IMVw&D#IzjavwFizFSC+I%BHW8ecrhWwg#(Uz>XD5lv_i5rPN-}poyk}u91i-` z5<;jGQIeR6B@GPw>q3r&-{`U055l&#tlNdPbaImqUCy zdLjh5C9d6<=mxyZnVNkY=MrU_g=Uyzn2tyRBz8LJw#B@BQJdUxsSZm~X~d}W_;u)F zy3yxkOOZ9LDl1C~am;N!{q?Oq$cxy=E+syDL1kc$F7CXUV)|fWh&e| zV@lw!CXm5C@2Ni@Y7($9-%gU*8tsHF+no@lyz{{U({i}L=XPxWv7FGtq> zH}Qmp3Z-~01qFD|a8G@BIDB`r-N%va117xco)OwYmbIKEC>bjJwdqHSwaNN6&Onta z%bz{5P_D@lSUs8w1!^DAYc_8`9y;NPa)0PE%lZ_q>yFN}qN%9ds3#{Y$<@3s6VLN) zIy2_-CmimXgx|eRtKC%<({1E>^00iZk8*$0zQ08JchWF;c$Mb=0P#L&%=(38Z9zuZ zw&PRYGvrj;5)MM=NCbp`l?m_v0GyqDPt*R7=Y4tVR}4$#`u_mS{{TdM@0ayF9tzw1 ztMvZ>-$P?JosDZwZmDcq(Vm>zaNSC%(30{!$^!C+^X`;`^*a4K>Ayt!chfQP!yA9A z?X%-N-#^OpZ+R=P(Rw7Rb;|m<6jMI1`==Ni*Ps5)dbMrzd2Upb{LRf#w$&;F?uQhT zNgey(o_&U-*3ls~+gAB{Vx5Q_d1^^2E^-L^>J+p#-^i_ebk3`DApz=R!So%uNhwo) z>NmXHczYVdQC)5|}|>8B)Du_|7=HJeEl2LgO*bKGNbLC6Q`tHWQZ z8b*(ALR_GcA%`0!I2+NyKVNNYgqa#zLv1SGaY#r)Fb}7$ewx)d%=cdb`faG=$_SJc z-#l(X{SUX_S|c9W8oeOv7NK|dD^3VF1dqgiYr(` zd6uJE(jF>HO%|L7BWV0b{{H}76^VnIMYm{-l9?@}g`g7SWM}^XaQb=?=ycz2}khn~Fj=v|GyAC6-Wf4pd0*r(FQE4W%fR5;5tgPoW>O=zy)@ zjtAFI#Q?Vzji3^o5OJf)Bek%^1x0X{h#P?IoNK=72L?7<_6wCi4x=SbFwcFYVN3r2 zVfEEx9c1s|T54GRN2EuL!Xw6DAqgBL4Qf0X|KzN(ov zp33V)HJ>=zf6Op{T~$z|ttwn_6wARtb_+l2r&?n6f-x>O(nC{HT34ZP`A^wj?~O{a z*R|Nn()M0%tjHO4m0k(OdC~%RH1*YalZC z9?5wgMIZW-jd}SzJ6*%syC0j4{{R}%^A-O9(SEITUQwj=7RRbl9ZA4k*u*rys$CgE zzay+yis$%|zAkBQSQ4L7oXSexc&P;NbEs4zlTT%7bb6(7cmDtnZ+7F|M@+J3r_7|_fo|xB-so9*`7VEHT zr3p#SagAu=VyYk9qf2%eLR6!X>Dyf8p?M}$MFOQAKfVMVcYJ_RoEs}Gx^M^c(e0E3 zROvr73gW9jOljrmiA!fxR;9BcF_unpJ9_H;`XbX^8lAMv2yl|*hI5qn;Pb3GDY`V{ zOGR3p`o+IDbR=_}?K-w5*JQIb=!&P;nzc=V5mAzmo;W(aWqRm>g-ni#albkL03B{& zN01J@+?7q5;UrzHR;4(`=Nw5X83RixqMJ|HGKYFWVo(#@A3(2t7t29hQ1eW zNJ7 z-$@YUYNbc2lOjs;4hO!qOKlNrObcFl_Y|g3IUUZc5=Q7Q>`tRkOtSP}g;A$8cBN@2+dApnIlTm1uE%q0QHcBM>JnQb=w_f+9cCy{ za1eX@>Q!BoOK81PtVxoDNBLqrMCBnv(?Qok)|s9|tTfWVDNsJgO7CT>SK~F~ z$IrOeB)8aUy%%gtlA~3Y1C5X|@27H-CAQyYf|`?5#y7|VKAAoAqXVi}TnA7>QZjRl zdT2edrEP#}caj-xO~(W%jYX|9QpdDsmn~MWHlkLy70R*-PPJicMm*4!43;e=*?}pT z;+4laIo9TujE%jAEqz97uTHgu8Q@4-fD6e4YbH#OMySS_saVwe zagdc3(lOsXj=b!(bZf^mJ(llRm}VlB&J>-vPTgl%`7=Vck&)LWRF?9#Hmqdhooa|k zjniaw+GP1i`ISXE&pA4}a*>tGY#{9lOGy$~PSQK%YO_ZyY#&y*q|yRXr7LOgjU{j3 z)e^PX!)I3G)Ei5PN`9n`BWxCu3RY_rxcP11KMn{3T$5z^Ark6l4Mk@*i^8h0{;LnO?FGs()P_I%1j3!rMV0?l7GYpZBAa8@6fk!(c!SsTO@noJZnVy zGt$_HQ(E1h;IvN%_0tA=4^u;kgOU#e8ih}0iKU=iw5jTWNC(hpDQIp;Z?oyiZa(EC zgy)l{me)k`LSfpCMv)z)x1Gfu@N~_POH3Ii94}SX?~~XVZXD9e_!x^f#O7D?U$uYtk<9M7g%ky9(S$Zf409hs)?sool`!G z598>Ss$IU&Dymi8a~=FX0sQqJz2vv7aF_Kx9C;G<%JX`KXWJ3+OpMwJhbt#?mG?TX zKc@NKU4C!=h2NKo7qdLRz936MQ7N((;?yu3Xk|n48v1Xi{>>-(TG#b3XZoDW{Cj3) zT&-MJI{ZqUm9T|!TS~VqkIT39*Vp)77A#lx@JBlSOaB0W?0BAEom9DHts;^qe6t@Z zPh(;e?dpH?^Viz_FZN%aPrc`M{{a18`~LvhA1mhlVyQU6(*1wzO$Hrivgl>Dmav?8 z2Vt+e#Tf9ynOaNMkDs?z_SpAgbe^GKn%hq>P!zG^ka+{xajUAP`XxzBn;pB+3uXXB zXDLl^k(IvCQ6F>u+Oo#jeH!p-kbYF`T7RHy_=+#nlBMS%WdogLzXIDRyr?Ko=q$vP zxZE!yc~INQ8ijaSC$X22j=Bn4y%ugN0$hp`3CJZq^=v*X`6H7m-$Q*1rHzNu+idPg z?~(lV=;HC7%(t7Nrk&GdHjqSA@NxKkKi6BQ$7ss(2cp@SXcEXuzyl|@{l>J$2ck8R z7Fo5K0YS)(rNB5*86QnuW6>u^;YPxP=|D@PfTD4NKZN>ykFnJzL~lnwvtqXY0GBN( zL(JNM1swW&r#_yU(UwLflSLgZ@x;v&Qine6O}=&7EsfX!P267%EPF`t_m=RY6uFZAica^45uzNzpoE zoaFlI$!MEofwZK49O|Uc#X}g`qqcDx_9!1I&^t_kp(s&OK|fU;amNakA-}-9eMXN* z5j#_up6{Q~Xm$DnOyxDnC^>MYUv%rLVW6i(sjNqIZFL(@p&X4umc0(1&K;4SQ^?f$ zXs)(bc3UN0bAzXxtK?e7^g#G&e58Y`%_r!KU#U^{LcfPPvU(+?Q(J0aZe_xbeKhKY zYe(Zzc?rab;c5Q>5`WuORwG9!mbjq5OnpgCa;Cix<)d70*cRu}ehtAETDCrfrGHK} z8jX4#TQ4;DLGdHLN7Ni?G|>A@u!@Vju(bp1aihtdq;~YwsTp2IJ#8RI>q>InE|;VeK4Sve?3CJnTD6(+Alv+&Y$He{{W$wbsPR0 zU45l8wb}O_7PGLD7;$Te>HL?J=kprNm+4ux_&u7jeOCtcX`>#wx*zcs(*zXWT_>)v z$}_%8FwBO2;cadh*O!yP&yDWn^zr$aGB3h~FWuCiQe5(^94#baL-IV0JmYY?CwIy8 zU2ca?OF%Y&PB}i>om)(3g+&>$W440ZNy>+PG}k0i<5TDz{g{(cb88Vn9{C!bNzzz> zNnHj~RQh%hau24Aqp9e0ru7yu{r`sPMZ6B+3S1xG9Qk0x+z(PkF z#PRXIjbC?^ndN>OC{k4^rp5}18r_R;*^4UZyKQwABPrP-Aw(a2S;-E<(<|t>k`W3i z?dUZ+TJ};~p?alm%z49xh$q}>IZAz%Aa0Q|IN0Q6kT~Hwr$pY+PTr!kCSY64fJbe^ zNpDloC2!cpJbZ*=+MED(1RX^!vdQ(KX1PU3jHwPQJG&g}^U*6^3vnZ(=X?>80qv%K ziOSOs#&R@Op+VdqZ9&f2Wb|2^IWpsr3C=vD8X8C`>_x3m>rT90gtey!$^q45Un1IV zbYHg>UWBBgWVL~jk=svPHPIzBpJQZO z1-ouMu$8#7l=_l2Co5rD24O{|rZ_@Zm3H81lGyH(7p_<^qlGCB^Zj*MdM4#IC`*=B zvY5yugT@ARczZ;ubONkY-(--c6jj@9xyHm*phQI0XG!rI3P(I(`st-ii`yJ5^~$D7 zL)AouBpe0%AANONYon!hIiWrplOhlcK|7X|oPa&Y(^>EJG$pakyK;Qzku|1NwCuqk zeNLfPmqSh_`!PzqInd;8QieVAt#bJjwZ)&KN10LqzXeMF0HkTuy@|;*H(2!33Q!Ad zqtxVS+WbV{eFp9)gv5p#B!rH`OEcIV0g}R5X-n8bl0S&*oH{yfp<1Uk^C4krAP-z? zJeE_dP8Ms%V-{ibE$EbKH5YHysA=ArYAl& z_aRz8X$kii$x>XV7Ut!1lc48AOH7fgt(txtLupZ2+K_q4)V(r}dM>KzY=G33fi_^d4s}(g3T|IOifuN19UEJeQ~a@_v_{)yDy!Ai zWyGz=J-H`T{78W$&Z;SYyxwu$BzDtE7MmL^8p@*(r(M{uKu)KUb~G^kUbi7jN`7>! z)PQrHPkc+KvgBsXN+C#d%ts+dL1#sN*3cqNtl^j)X}?~0@2xR>k(VU!3`VxrsN{O% zk*aZ)Pm=?`NnA<5ypS+`PLJd0?oVOUAx*&C+P2|2;Oa$F=u56v>LN;mOIN7QbUGH7 zV3^gpZacDK)!&YE^0bK#c9lJf>UMbQWxzJ2&iFrXZF%2T`erYv_|F~n`ajX0hk@th z@N%o3*UBfSx76ANc~t)Z*{UrAl*=kU0U6-$!N>I){4?smv7UGD6%~!X{iW0X{{Z(t zLGb>$2X)4F0&ON^r1)yl(*jS#v!wAzYEbz{^a zBq#WYI2yJO{*!%r@BaX|62DhV{+nXt{ki&fCHYl9JX=#0zu-v)aB0Edd7^=W_H%C3Hl*tSyE zS9eUQ6drsy>5PSa`BJ~0b$I=a@Ub=bGCSAkw7=?C{{WxzZg&!={Y2T3(NI~7M}in< zb_URQEA#Gk?fCxyPw{*>V37c zF;@B@?iaIl=}*IppE6@lq@NW@&zpgde0vRg7`!{bW^A5R!r8D;dK*W!epzrJDa9er zJL^0v=zhB2i@}t6xqQ9$jW(IlsFK-cN*ZX9%8QL|$o~L+ZI2g^!HWEr_o0RRQapG_ zrZmt>(vgLDc?mxH(y_`iRkC`0l^bX-HMpyi5XRyJ}HP0GnDrgxp-f%|T?7SVx z00jOa&wWm@w1-wun?ou|d6x>ZJm8-A{{XoDnvF;3QfP&`QSd=+f|3)!C;tFF#-`=y zZT4G-Op_8a-E{>=fTfejIpZVwX;RW3+X=$3<=l&Fa|M|DNLf-p5Y9&2`yBJ^bgvC% zeR?@$Sl9D3n>xg#(4&T;Knc$(IOLymt@u1>#=RLbWvhP1xR6^&000ND*2M^edI`jc zlmUZ{Q7sDI%Wb6t%kArpRFn2}K--T^HzT`eJ4qa4NbGJW;E)e-uIA3-aWW1@Ewo3AAb=Ogc~4v`Rjc;MN(Bngvj?!l!x(*A)L;S;5jMTnKRyk*mdH8W0dyQ$F zt&pr_N@X}H&VMd-b$cY^L{1^14$?9{nxc9aizu!Z;8uX75AiarkIWw0Zb$`))2dNW z6sLoMJ&8^U`fIvp7KOq#Zb>LV#FL=oVNXP#wfuBv#{?hY8k?4eO*8a${LbR1FogHU zir>gj3v4MuOc^0cLcLT7KTQ#MqLkO^v!5z?K`KbXlBHmeriRc|m1fIn)Ci0qZBJv5 z>7mIF#g)rRC@D}M=Hp$=UL;RLK~CfjM!T52QAS(@EjyH){#s>yiBb%iL21BHqy;4M zGuD;2_ES#(JdT=|G4ZLKG;BoV6p&4}YcDqZngUkA$Bp)3Lwj7-`qb;e@D}6SYs(tfq%%n+A1*(KqG;{PS7(bELO!%)F z{FaSa^F=0) zMFq{>Y;RJdt^u;N-%nMv>Ou1zmTR^PHZXG$7UcLxp+ISSBuDGQ`LS(e>0iyWds zNx=RitXb~qm%@~hSF3a+&G6d@BRD4-l+Eb9R2@2K!kxK-f(XywO1|$d#I8CPU#dio z`h<5A$Dre0ghe&knY5U@b62Vk$O&!b5T4sl16n2}Ass)1^D=8PBH`Xsj>L1NdQ3gE zQH2UgeOsF&pHZc6U`tHqRW_vb(c!5;4`HR+7-EGLO~VS1fx8{mrCMxm_?(}Y3MJ5y zlfcz@^bT4iZpn74K4-+(k~rs5s^Y`^K--p)K8}GIw@E=A&Wyc`FDBT2T8pkNT%TWE z7wA2Fhi!@qAv}_jayx)^DouMIoXQv~?Ux!$J{racriA+?c@~P4>MS_x`InGSKDw_> z5_hnJ^|+CTgv&$_Ip;%$&g5F5$#Qd~D<_?I9R)T)b=#_x%F9Ow+dAZ)#^jO$P_1^M z1u5jD`ffhDs!T_dkUs3Bz;*CY$~S*qI_gByD^sbE8XH_f6OPHorA_Q)kX{`wogyOU zI6*>lfsQ!te!5+)2Z>IBEy`U;haXsqrGD)yIVk@Cwvy>+q^+|yIYYEO`p`2OErR#wS7 z_!#IgU^Pq>+0stXPSp|t?nv*dHL!9(>xzL-V=|qVcIS=B1e5KfC`u!w(IGy_Qc{wC z!JS@ok)D{f)EY`4W%eRtjNl_osW3I69h#)1y~2tHeKabx6*~-3DlfS37*mHmv#fdR zXwi*nnkA%(6E>v5a4BAx*P60wy_=HgdPR*X*kV9rg%tk)hn;N2ogx`A>>id`rxhk* zGE?c>TE6lku=Fb3l?VYr#HlGz_t#Cg+67}v*flj1HIU0|<8QX9$%bVS3vtOt?JzQ=Nz?7M0sN%0cE9>W>Nt1X#sbj~eC=EJNdk_bUpr?#Hj;!M>fPgFP{As>kx zk@nU-ZI??%vG9lRL3;d9$Y%1nks^y>Hu*2r*W`MqwBby|2e>CGQ|HQ_cJ5HX(=o*@ zlDxc6x~^*dx6?~nHHXvMRBBx&lNB-8Vl#VC%V``ok?q`*-114}t6BVv{C1Jpu{@Q^ zkCuAhdep0OR;Onc(BolEHdW?WKD=^~kEcGIYvz2+*OBYs`acgG#F!P)21NCQyoGGf znBy4w0sjDpUR}=5QBpyB6Qpm|Wwjy5>PF+_PBH-dXigVQ>dh$nN2eVW6gnW9h$?a7 zjDSW|rDyRU_Tyf*KMs=Y^K*Gp-$t3!&YV`II;rk5v^oY9r+EQBgC4&8arf5zICQ&5 zotrz^quN%)c2t83u?M&u3% zB#t{BI+{m1mRdsI7%M;kB!kX%d8UapM*5?+;bm&cPB&-MBRSJ^UV+8v1zM?7BXXpu zfH0G=kU0m_@2TEcmORBWqO0^bUMxqP(vAvGp$CmB@^H7Uh2qJtN0a1GrLvX;*7923 zorkw#5Ay@_(Y&}?*1<7*^a-0D6eKw$JWgH-OG!?0Pi%erewxozrEIjO&Y{sN^(K~S z?IBAJ0)#rCk`hmtd}k!60*O6o((Lw zg4zbOOc16Ug%M4oB_xr_3D%jNF3C1pj8x-+4I?D`>YD3f=(N}faZRhbPJzVeb8jjd zZcG|SMMwNzzS>HyjF!*aiR7zEy^W-Dq6xrP=cBfBNR7g8Ia7Dy>@&3eV@M(9(E^(xZW#{WTJ+ z(I|C&f{*4jn_)i?R(#1Hd}thYnDU$Dyb!wSX8_{x+RAOvLsjj*S1dZwS2iHpReuGV~ zk|tgy2H!30iOy&$!d9-JJ298dBc_Era=Llb%!U zlX$4FBF$z(vQ`pDrZrj5EJuow>?>sy*GtXKSxG)*rJVl&uB@^qO|1o?%!LtK1d=n{ zI@wS2=Tz3gy&ct{(`xJo8fmu{2Ma@^BkXj`lITaK2~D?92lrAC2d3lBs<-kZ(kwMf ztH($0LvC@{9B6@i1zfg`7V3toUDIktpBY>!iHsrC5%y3z=P`4t>@#%_a`a%`PyYah zzd^4j9H?2edDg_mWRKa43XV_JrIG;u0Hlpz$@I?}-q%Lx`j&Y2*@WN!0PxN0jU8lL zu_0F3{s$wJfG^FO0i^5_*hn4ZEs@D(-yl)DlRo8pK$XkPxS*zvDeB9 zseYKa$IZU!Qr+E^bLJd=S`8t$p@JPTZbuFHssN5gbn_b#8^P`1yI;pHHB;#ek$5d@IM$jo2JK7keyylI-cs<3r^gTf_v()m@7i%O~`6^7Mk71 zVXXVtLA-@T@ z=butF(~&pqcP$`Cdb=cGFs%g?{PY2^j9r6G=etIdzv7XqxgyTQRbi zJizxP>WkSLd+1WGPE!e5W4cD}#2(tRXr7-TVoK(^3!^JmJDmpBhFkatPKj~=TwA^$ zuu$hn(ql_w2T$tnt+PR_MIfz2Az9&L>Gc{)#`HS1zRevLbqR`6WX&zCAZ|!fKp&sJ zvvK^2JN!)6>5n3#F;F3w8(}UV4X}G_Ovgm|BQ2*#Q&NzSG75+1uW8Rl7W*~comT$< zWwskbg*;>&>jrr*3_EaMlVrpxWz{%RJvEWyEzk53YPH(Kk~fDGKT)d0XfC!}r%$ca z5xHB`amRjjt~K&Pl0i7POxh}gRS2snJ&786#}(Q-Y5Fw2j8$#Q^<53W8NH!dB}4k^ zv66AiTkMuxZl2kybpqhED6}^tDNL03c^iE-nbNP2C~M&P#`d_{sTTz&B^fw4#+R*@ zNv3Bt%fjZTx?5?tHWTPhr)?udN@%-nT(xkM`2&hOy8% zXok08)6i45AwfFt-ec1pVXbs$%-XNgs^T+|f&y29N_9;uT@!DMHvXGIq9zk=NPV>9 z8;2dW<#`y|zLBdPr#+eit2T=e%6FjcN8d{mXF6Ijey!G{GV8BXPB-=-@vl!5Hnhk* zpP_}@WIzE;7 z9r!GNt!a(b{JrgWdM;T)k17~Sh&=c79;Z^T8l3OoukQ(UzRh!__5@e^X(2@boxxqZV?n?<78<9vmvXVl z=Q;{I4*J?7&6`;MPzW)GC z9VQ*JCDU639CCZ-OTg{3hae#F;g6>p?gwp^-=;Qll8}EbFA(x7IY5sj?kwP^f=8&* zylIWgNUrUw*NfsMSvffbdyRM6?CxM%pH7&WC^)5IB`1U=3>@blZ}!wL#@!X1+C^vj zbxuY+g|&hKP(8;Vr(ybOACD+`%3P*d@ZcxGL}d~c!j^Xu2V>8EJv3t)OF*k{u)JC% zR@dVA2}+NuQZ;3cQ727=BSJtREMR{LKDu;-Z$T*Wb}VoXKAOCt3y>xV&J;S5P=65v zwyd@COtdNf6xQZNIYB;T`($?-E{;8Z9J2bIXr~0^4cbtjh<%_C>Vi+u=s!R`@m)~- zN&NWI6goS{f{7k%`hVX~uJ(4jDYGu6OKAYZ zS{g{gln{R-jXdv>H|&r{iy`#PZb!?jIW9DurC(9)s|IvPY7n@zPPIvPFf3Blk zko_F~$heqR9i_P1f5x&g{I!;{T>K8ES!tSM*b05X4nGQXzj=k@EhY;s42++ykKLvY zDD4gSX9?_mMx9#~%17db9yh2ceRX)qPN6fxhw=Ec_XAqvFGhOCS9uEU;h>+W)|kkd z8l4qfVlneBCe;sAoobw#`6A@}msXLrsicoYxz4mIOp}siPn6G@)>KpO(a8NY$!uLT zNYu1QK1C&5_E!g8rhtBX<<@qs1q64<&^U;~N{8;={(A0OJC4Z1P9Yd2EB46H+B=Ss z0YWyFsyP52NYkcq;|xT6l&oW1^bI1tR@I}=WVI%h8T20Ld4#MV)Ey(>)|v`*y)iE8 z_;To_-qMkB^pb@uBk>w?60iRN86Y3$s9%laTJBM4@-s)OVzPb&{urEZYh5p61o9I# z^pXDn*QoyK!oKN|&fg1oHr@(i2* z01p0@Hp-f_?pnkWMp7PpJOTdz+yVZ2&3{h9-u7vqsOFXF2{)JgHt&~EsaCgBqdMj| zZe%4RKl_qT^wwOTOxpY?)r;zhe;k?h#qeG64{9`2X%T8kPjx|+=0B2vCs=FgzEta7eGLL8kHCRWj& z-%VojR-Z<{9rRzWOk#wrBxGZ_8lDVovbl0`LY2>UnNd`j$n#^qw=7!rVyc>A4B6Eu z-cyQEJfB^66eG|&bGKRtjZ2Q=z~rO?M!Sssfp6eBU|)9}S;93|Gl}Q1@1)5R{T7OQ zHu@FO^Ay11`2|0x(^-8o`q}~4u1TTHBalhP?s2VB-xEDYU}l(^Sa9+H11eTMeFll# zR?QEkJvBvF!G5yBQpk7(5AgHc{WX_1Yl`Til;pS8{*%#Y!8J$(p|p&hgr^7Vs`%bT zThk?Qm!l@GCLC&K&N{G%5J5>v$2rD-J#8dbYp62Jbhaj`&8hP5UUerag>T@m7V4C_ zfyrbJcpz(*{zoszQ^j&ry83kFYe|e3D214S`}?{W~gcQ6&95)RB+)Sf;(;RtXb7J?A3~t zf@j30QkJGrgtxSQA*|CEvt!9Ac2P}5DOTvt1)r(b+;IL(d2%m+#XcHYh>DFxw5!DY z0F2{3xYt~55>|#7apf54mr3B`1t}N`{{Sf-nuOuo-iPM+mud6hmV}pLEVz{CB?BY# z)~tA1A$d3G9_8``#WEBC90c*e)|DDWUd7A4qY`YS6m3{ne0%GjwVcisbXan7^Xjhd^` zRi7N8Hsh+(>XXcvAS=z?Ub^*sTsIM_Fz3xRUx{KJL2O1Pw+c=%joP(iM5dm_84rTC7R`0F`wcRovrLpCg3& z5yswzIuFBa$dQD$B<{$`1nU-GsHXJMvOG%G(=W7%)|;Oqr4liWDCr|7HMA{DhoFRK zVNYmEd4vT6`JGp62`B9O58#X7<`-P5=<3f@>56jAr%EV+N?t&&$!y@ISpNX@X2`<- z0Q=&G&cS-D^kvO$JtOa0i>PS`iWb{@85n7lgtr~AFqD8WI0FOIi~)hBZ$@?KRk$mz zl4HaipDGia@_+5gKVhl6e+6bfL@TBfB?*H}IY2y+JgOtPIP}l^Y8NRjBTQ4?*r77n zdDJ>wK-^B$EDW5VQ}6W09D%HNk7lUI6qRf#1~>surDHv_#bxh9fgun-cg_=@{~2>$?I)8ATDZgfMJ<*=+)5QdQ9 zIsMv6I;!+0&`GqQH{y}_zX|$lw2t3;Dk~M|mrcF+?w&o3r_iam0I+L0Z?99_Qad z_KsRdZJaCpbEVT8Xptm$1J_508$T>Kp_HVbwze|Aoh@8CN`4!B6lkW=rS zE|^NL1P=P`HVvW|S!9F19D9vCpgk3r9zXa~pSc>cT?pQY+;5DO{{Z!CxPy@&%Y8N6 zS=^B{c3V6s53kot_Rx8jQ%*|Lxd)$4bgv8e58PiT;TvEmUkV;d#F@f$gd!;Sj+BlCX$*5YMj1rGeT{4!*FcYX+Lfc`*hRTTvN%Ylc(Zp;x^fhi| zar*p5>?SqeK`K-Ro@ z2we15Q)2`HoNH`e%*|-3v~5;E;QDJ!Q$(p8rDZ&&MJMQWd7^D-kvMb^un*$wQJ7{u2EUFWA2*FW`LXteZ{{SPYx4&l`H&1_$3pT3!~6zQD=F|?sg z@(vDp)LVNflF<{fm~4kUG>@?4>Ta7mNZ}!jlH+~Oah^1d=w!BV;v+2i8X5KjCtRH{ zw30eX652UV-aU2A=;Vs;M2Pxw{xvGPUWeg6*aG6FT2k3tb=D%5Ks&sAar)_{wt&>8 ze7*5MX8b0{p-Osf)f$&PrA4OcSaHQG9A&ie-|eaA#pChaX){-klRN2ld_>YrsSYHp z?a2uwVQ9nzE8h~!q4ZPOI#b>(E^__QM{u8P->E7@i(Q8X}=Fn1syL9VFgDy5AC zA9U9tnH&HI@o2_AEEjyc5G%Cz5h+Par#U^nb*1|<>%EY`w;YuC&Urp=H7e+JEt?-q z>^pVZYFm=idz3lf@AcLkwOox63q+S+O>HzhT!|f}C?4ofAnT&5LpexaYIeBYyy&ie7X1fjU~2$ zDQMVOvuQNzXXh#NeCZhpSE2fiMyHePB~f?FT&lPPI+T=!=$tl*YqghZD%v6!HPRa4!4nyV~lHDr$i~K z_8Eg6*=P~mQi6|ubZK!FJ(ixbDiT^RnLa={8PvY~r=rUpHLx6*rk3e#3swi$M{aV+amB`Z)Kp4tvoAkArwv_834*9b(36~rVA0!KO4 z3-KYnwr-Cil<5_PQmJsyE=md{pD4ziLWQJG>C@XZe}}$<)q3~T>VHn-N_~i%Oq%5O zhcO_aj}b%s>LfOg^DG{~>eA=iBXs2cp<4919i>5uZd%laVAE-_5f%g%Mi9eD7)xXH z$vw%>u5#*|dootr?B<}_*3n9aR=+c=Bf0lJz!{MwMW(jcZk1ww$!q3Xd^!;B;*}!>L%A9ECygJrk^{EJ${jJavWHqy zQ2d8{SuOE_KzFa!Gq)@O)eS z2I?n-++{{-I~!#ov?m>~IsSUpk3?SmgrhXrjFcpIZ6g3`p3yRNIpTuqI}j4eex9n( zOJ@;D#AcSYV}&Oe9+>C-e_bst44KMgB(G{uIqjqvk9NfP#D5tdZE?l8?`}@~`G*+O zOF(O7jHTxA4}DcWggGv4@}9#)9u2eBGPf=DB!2O%VTXmMu}hJsLc91SvBIE^hA zRvBX){WMM{RU#oi66SvJ4B!#{HOCSaMhuE|K|l~Ng&qQc>_PN8!t(raH6G*trp*xj;E02LQ)x9aTWCnO)o@ zWTzukP|3O@+=6fu`DpOb%9}Y_(~M|24%x_iX}~;s=pD99#Pzmvl^@U7O~eH1sG-~i zw~%|_at?(^Q_%yH7z)_oT0N9g!PhAdA~#gZkCoj0hK~_j?5iNC0z!`+v{KMEij0@u zQk3HMww~nbtE4N}!PDq%aSPGj3P>3|gP+e-mMdFDAh!HKwInEeA6;5lkI~%e{yRPc z4ftv8-}!0N(62z(Q{V!SG7o(?qz>UYS`J2g>y9Du5&?1WMWi#Ob;+xR5&@(G@9&m{!vzZ6qR* zkwDQSmG3Ax_fHtti{$t+{{V>Ji^%y!wkQ)>M(TBGWO_FGLb3ewuNu5e*q`BV`c+uggr2rKt@5Z%8 zf7F#h8?`8ea#Rnd26eX{S!Q~J@)n2irpY|_+I7DkL}j>W{H6&dD@O-gW$hz9A_r;i zsDjYW4zx?rH|XWKa+_9EFh07dh3Jq|By!-#t`4~3^Au(#EHJQk_fh(5pF?qHlOr)q zl%Lt7J9u?IiXZQwlV?)m%S(I4VGhGmcazFgJw1+*rh_%2la*Ie3rlDq=LCbGGo_-8 zipvc<;Kxsh>Fkt@<3v>U$im-Yvg7Iq&m^8sk?Ub9nxU5IZkZiV5OAgX54qHy-=L+k zM&V@ml__NZ0QffeAFh*C@;4=}igyL|LA7Ej$&;hRZ6lQ}V1M@OuO=*0%HEENypK|h zuJrhJhKOY}t>(xBN``c0|44z(h-t=z8;l}$go7=A4R=?YFMcH>uaVqEK+jOC^`40a8o~8Tekl*nd zyJjo#YJo@p}JE>hWE^|mL(a4s4Y z6Z~3l9$(4XvdFId8nVC%2L$i{*2hyOJykx7sD)jF7sc=v1~~v7Pw(U2lPa-Zy#ZQv z>6HK^M#r1Xbxuj5PINj`Db%>|!;ZF`k-*gTwlb{|Jynw()AEn4DIda{oP|dhF|cazsX?(>Aabgp{OUC=s68 zU$G}EZHj2Pr&Z;Ls%ye`ei7Im8pqc|^Y5^wN|hRHK$JI}jxaTyCYe?F3$iR_?<-0I ze*U_m&BPyPku*yt8c*+$liyWYxf85BPpZ0qVB4v-zHG!h$~?!uHRfKe_FY?-q-Nbv zw3%vpmcyi{I8gS|#Z1i*KD1zCk6jt^6+W0N0#n)p!KA%fSItg) za>uHbt#NIw7_vf_(c`VkhfpYr(i9s`agSYh1y8Y6G>Va5xGQtqZRm?a623FWaqFEj zl)6GR+b-0XSEQ%MoP@2SKv8URkFL6;q;v(TDw?G(Q;FDCoTY8Ax%v-%8H6_5F3{+* z>amceCB*_etmJF2QUvzPZ#K;x;$3KA2cN#PTIJ}pG@obcb>U8zEU}~ZxvjAnQ2e3;au?5}|Si@(!8kqfe|9HP5-_;VlLo?}8tKQ7Vs zBq+E?yMz2X+usy2%@X&%API&s0_5T1*zMfW}WLwx$qTC;oDPcfu zL0ZV}K$20)H%L>!(w`!04|-w`y!v zRLs|wrizpjbHcg7Q2hIU(lm=3`5D^yIgt9kYHR2R%Df>d<0SBukIMr;L#*!K7qY5W z(hE^3>48#>IJO*dmX?M={{Rsk{{UQmLq-x=ReY~P({395Ly)8hZy2sP2?N);euJk66dK{oKr7UOD9)nDnui4asnNOiP$^sM=G2h$$ zbSq5c^h8+A(raCfv`)CKsXiDv9mv-?Ozor1iETL?9oYQzy3kJIx)#PW z%1+XB^2BSi^Ny?y#W?`;oi^FpXDqqD@b>i4PiHlvZKc7_;?n??EtMyJd+GF$t^6O7 zoxm#}bD-$$X`Lb>NZq&Zr5Nlml#B%W=UfK#aNt8@Bx$&dws#g9CNi}J?N~eyZ@#;V z4$hm7h*R4RJP!1ck7J{x4R%(kQKlKDL|l-iWDt1=NctR-uMsP4rq#;xlar;OqNt|; zHw6-O6VMLP0mS7+T5Y3_)WVW7N&5k(mMt7OwWMQW{{WV%y$V)bw~%m`57#3a4vslR zO#xdRbs+m^UCD1ibNUi0LvHsVpF#$!I%}eB=!w}r8ozo9LF}(XrfWj&kvlah;HyJg zJ8Z1<@!OBM)1{z3$QMxv^!&4`EohltQ$m-JtPK;7%9NAlO2^yVL8YMWoI2t$!udKt z@*_;mio(4#`atB){&^q5=YHUw2R#RpJ5173g)5IuDcp}7efApplnkSHJmW10}YGB`7j- zf!o_UWW{TuyN@YI%0SPtIMovot&u$F0E5UUR7^m7&iE=jPE+cgHuiA>q^CR3d+UxQ zZbnoVgU|5*d+0T=rLy!Ylkooldl^MY&zZB^OQtrEY8_dsg9NnaBlu5nbhLs-?M-o) zl&8NK)-3Rue08GS8nk!En+ZOk_Sc(}39f9hBsAk*D@hxNat;o$UKRQkR>%`2-UfGP zjt&+6$5Z=Aen%@yZaKK8B=^q;^wC(75#G)MBdJ?<56o*!#)-G1+%$uPw4c*jAvDQX zX!SDMNyCg|*o|+--i(%yS0$$aA>}7Mur;oI5~8cV8ob40IOjULWSY_Bc+w@4;B81x zbp>jwkgXSBIaQ@d@m+W=qA|Slx9_6TXLd^ZWgxm2CumnkgY&w8$zl+Dw7+ z1hl=IR!6V>^i(iA{Q<8EkJd`DIMDH&1w zok8@zY&Mh~rbDD|KlG>l_2GG6R8R53zq#pP@Lu9z4B;UQA-0&F~p*Tv68VP5PY57DtjbNwB1!ru26G zH1p$2eKEg%rR^ApRDJ<^`)Msxq}Xez$HqjOE1~iF3@Cn@*%)e2mE_~e=+CK8Za$t$ z`FV7SP~HkVnUuntSLmP)hD=JmjTtn$I;~!nNx-z?z)Ac-4s??WJq=CQvN&~!E#Yo7 zo;f+xa>Y{UwmO;idtK@sJVR7w839a>ECy0)lF@k`7HRjCZ$=Ru_axGQ*@eX7AXF8qA<0nqAWL=&2Bhmy^ zuDG=X_=#~C@5$9;H`{t)cpac*s>Lq2*v}hC zi~9>#rqmMjX2Qrh!S&TuJrHRoY4&BxsyrmKBPdb_Bhy*3;;Uwf%QBB{YUMh?nl9KXdq+`GuUdXxglKfdOWu% z)XRdPg}f3Io)5XvO`tx9y0cWPVv411N=D8PzM|7?1=PJHmL^rxV z=U0WjGbOjZ8C;v*MFQtB;*Tj_6`tRHXr#13wx34NXD&tYOG9PGPFwDcdHE}a8z*%= zfo}eW&Vr*P^2NShG!5D0|y$7XB}cH3kq#scx6%#xhI`;=G*8m8%wc*U5_fs zrzWFMoK&DPQlr@EsvblbwJf#KT1?Kn^?H$D%t0|6d&jDQ{4rX>oag-9BmV$?l5zdE zQzg&aZ2pbGsF+lrnDCOF;B7-=vU?>d9-f%?7}mFwQ?tq9ooKaBs=Vsnj9GOmjPBQ# z>qRJVgruJgpT?Z1BXHv>SNKkwlS@Lhy^&U`(!^JTB}Gl7la9-DkHhv)1MYsBmE@#{ znM?~w{jK{bBCiayA!!Pbg%DJi6f#@LBprb5BphTMYM9$`*q5$d4)KC*t4<^{6fMDx z$sfeOME<|iS|f9fY)WayEzv8JQD_;o%13&f}%Xs@Lt?0DtNr@$?OIb=#osFb=`jh;>mXWPJ zjGJg0?59Nk02xGpq;2Qd2mb)KMjv}Rl1RR~$AJ}Z7X}f4e=;>nr8BZ}ojn9ut~Q4D zsPl~Rr{<8Zc3P*^RQf((XK!@D~v;Dquqt_K!O z=Y+m7+>ZL-rKED(NNg=g;1Ui#x(R3$OoalCssQJ{Mu?{k!%|eNCxUXHwu)Vay_5JV z1QmJ>I0+kU6m26%Y~!z%$8TK&iCb^VKpgw)jyY0FQb{^>=tlN-l(Pmu%|0@gew4xvFVBi9_H`yDG<9g#k|ge|Rj;mnUz z@-&s~W$1)5wX4K^N-8Ikbt?7}WH!=9<+=K39Cx-j87eyCiqaCn$xDQ4fPRWkBmVgn0KjJ^0xZGsnmjyQg( z)ap@`m2Fy1K}qa$&NSOc6u)XqlAVf|kbMe3I_;x~l;+H|Q|a3}8$fGhPAp`oo;2z7 z4RlhIB_NTX*G#Dj(Lvc+BoP)o$UlFs zlnv;$9n#u^(OlZ2$;P4OFfA#3O;VfS#KLfrjdRu_u5bH z)D%C$PO;_2v|ebi)TSf?l_zS4q1Gm}%I&ka)P*;<0azZobo&7k)s%$-NXPMaAD*o` z5v?4l&d0y?)up0UvxgoVi9yIdy48)D?5epdD-E`CRB#5hOW78B>oWuU5Rjk~kf3}0 zHAQZ+3#lF=Osu_5%h#Dx`vjufMl_ByW6jdl-RUG^Pu zhUF|FDj^^&_RgIPNf14BNREQG-{f~B>Z{Qr8g0Qgvn5_E!?UsmKc1s)(CKJpgw-Y# za^e(AiWyp*?oN_pOnvlae-Pgk-8$%95z2+rU1_%pPk|XHE;_G3l#WT%JfABUj~jiz z(6$d7FOd4_AJ4wKd~bC-t&`r5OPuv4my_YL!v6qzwEqB^L-75F>#v>7h%c>G>Zaaz&xwLvglGF)16-E z@uWHywuh>BdXHnME0*@X8&uMs{fgDdGMQw8Hu~^2MX!-7WE3b7WT$k7fg{w7b8>P| z;J7DIsjlr?Aq0OtMIC12D02W+cZr}^g49R!uRjSe_GQ$4= z*m{D9Y%Ms(r_)1mq*;1`nnW_Cx=91jchf0Ha%-bIg;;*1or@($wxsbX^jTzoBy#OJ zv!yobqpTqJAaSK}Ne?ueG@Bcx4cDo^FCI6aZz?Ll*Oi-;S?b|wz$W(Sol4waj<>v? zoac>O5ByG!$(M(~OQrPqtw{_?P*xA2*3Y-ac4NtxlIV82BGIF;9**i8DH+qt(VDiz z8r9argvMdyDPZ~?KPlfr@oXB4f_*W5C$4=*8ZGSwPKIi1`XcG*n^uNhFJo##bKkZG zv(nLZ*>0yY+M>oxg!oLWKinwy)_P^8KSV6dyyMH7MKUl1oNzc$(3;a7rJ;J{w(55S z!egl@0C`f6!Zp7ZRE!yCy@q;oZ@ord>1Ageq^Rc_y;me=uR-g|u?hHo3*|eKoOjS` zU5Y4LvM9-^Eh}NQFL#t5T_#OAD~Yv3U0$n7Wuz9^Luvz%2YqKy*}iQrYzpk(o^ZJc zl&BsyXgJgCTF9%>PNjX%r?jZcQBssK$=1wJnlN2(9$PnX-B#+PF@^k*{bGOG0zNK#Ja ztJhkS(jwE@Y1)Nii66y^r2-CcpKV6e-?EX)LRQu7TzT-fmUgSMeYKjf#*Hf_BSy9^ zf0{sbwIME~4av@-!NnAGu1j|{!#=ANMQ>>IDb}dHkaMTA=nwdO^lh3gt5WJ!QG|Tm zdQptR{ZR>(d4T#Y%;ftZX`J#Qmn-F?>6>;OX*E}?QeAz#5X)$B)dtSOqvC{TXvXpa zfCX3?`~yZ-`($bS1jR*$+xdpTLrUc&3~flx3Ho~dNz?VA0I7TXTU0=yR2yv!s|~n} zEG0vqT!Xg-M0@>on){EYHr#s|DC|)Krd19ag1n?;t3O>-nGAQ-Czg@jSULLVNd1lf z04Zu~jWYOJ)NqmzGwOStPPz*8Rei-yaW3S9q!I_;f&8+6J!h}Um0ch$)br7&M^i&1 z7*Y4hBmF;~mZ{4fE=6w<>V+~|oo{MVg{=f0`0c4>Zt&32Dsm#wkuFQk#cW|EXz|sa z!yJ##7}0l6ND5bMVENW*EqF(t0V+uu_UtvMn#VuTl9x=i9zqoRXj=aO4mTY7<2q$Y ziql23R01UxdMtTPbldC&p!r&c7I?-6xZ?6$K^e)x15^?FC2iznB$1qP&Y5ThrWBPV z4nCS=i99s8ou^!J=EK1W?dh&Kl?YOXR4{eG+B-@@4i9~D>T%?`5W#VH=$cYD~upR!-FNq7Qu&iJOx`lY< zAZL%hxjliT%kkwUY6Cp|bxol)qFFLj+6YRIJYz_4Bqvbl7&uq9f2Nh7r=t5SBMDar z>#Uh^^ja*o+I@3_@2@i^Hkqz#XqCC!M~3P`zdRj7dSj)t#k>?Ulwm%E9O=~|TG<

Vnf;4DD2TGL%@5k=P8JHm|7Q`j1_BzJG&RpFD4~)$u&l zi72(v@vYltR=Ryzdf%+kAB8!kVaU=^f(M}<*_Jz6Biot)z zaw#bz%%tl^JD2h$OGnXv0@rlO6KXv+s5+%Kmc+GWZL6}AL8T}@)(hzL~LdQ0iY8JReK%M%TBQ^(5c zT4%^N^{mw{{#A-2+jJyf6ummG7* zm+C#=7;O6|tk&OOhTmGlxIq}uc$FtA+Z;-DoLq1`0 zy-abOGZ8?6-x~5UZ9dOZ`vg`NCN<<}kWV=swX=VY%8fMKr3rS$8;yu`kYEVm z>B zoy(4OKWPmW0mc$FvSM^)tD``)r_QcY(51#bhH?qf+DzrPk1ID+3tja$E+8Ndc9ST@VS;hS?C7iwduLWg$tGQYwpu7Hr6>b|+ewq~Lqc>0>HV)yrc|45 zq*AS_9%X4_`Sv}}6Hl*EZE;8rvbIv7-|*vuqW7^Sfb1Fd7!@_Q8lq0v%aoe&i>9Vq!kg}NWn1 z2yhNtS30WQc1`4dfc14M-VM{+QanbIFcs7&`Fy7y+P)}h_GHOh z6l#}UR+QS6^GYA|jciG1&ep}@b4{$ieqnAAoMh=M(CShy(<$-VmLy?Yvz^D&Nl&26 z{#z~9<+@r8A??a11D@LGdSl-7H*~&^)9nK-)b1mU`s+WFZ+!<6{X(_QiOjlY@24Rh z^OXAN;qt2t_6x)JE227&MQ)2$o@6wDN=8qYzN`DxWO`xy6$@ayZY=3COnSUt609CE zsOD>34~@O{cX%~Nrz66T9PT5&dukBrvX#VLqSDtcXn7%9eE`;#+9mQ8xFS_!#VQfO z^6(TjHkvfUmM6=*q(gK@4HT>#amI|xYq4#u^f6kMD(h^Tl4Pwp8Ru5}aMqeL)l%&; z^LI_pTC6cgg36qFQ|Mukp5<#$N_hK`s!xxJEs=S0Hh)ZP3Vc4FS~PnKnnucfF{Vm~ zr~}Ne%~?O5vnGJseT*rsDNVHjw?-W&cR$1Q{eM1mALta3X7iIe3=tZhkoMLKj^hlaI?&%}q{_(35**PM%C=n-P{)!*Se{6u${AgoG7gL~-k$=hU4HPw+a{=ytZK zl?BLhp$+8iabzXJFhM_yKI2=le+i!6m}cUa8XBY1+c{cY+~LPz{`#xvRkl-2WvAX# zsB-|guu0<>@2+;Va!0nkO}E%;w=HBT`N|DtM}SV$kI-v244mVge7FAqg1KXjabE~O zR+iiI{2ks@WoswUYMC14p3D7En|f!IiE~p1Nxm+ zPsp5-BB&+T048%T!*4 zpnHo`E|yop2b^oRfyI^@o`xCPh~vcdBiHMo=^@wRRe5`yFD+hkq}mR)M4|_q9O(xm zTJSkKR+~7jAz4pt3ifb1Qja8`wx?do6@-~JDM)>1zJDzg_6D|4mJ;et=T;BoNAntO?RFqNVbG!i^Zx+18Ur+N z;@wC%2Ondq%Mq=Rm)<<3Tzw9xy^7Y3ORGJ-HAM7H`#cV*10-iUd9KB4XM#$Tl9ZtR zQlgWp2u7*vKqXBClj>GZxZ>SDd(-175>g5~C0P7gJYJ4DiiJ|Ey2pP_M=so-ZwGmDgWS$Z;ojm(Evf7G{ zZfkU7VG`rriOz6wGg^AAO5k)?8&6?PJ3l$4FC+%=Z)DlIu$_ImX-nTW!H z1a?sGteHGMXten{Whr#pgaBMZi>V#<_x&~I=E0i}dg#>|apdT(ii>Wi!z$XZZFW4n zM^xyV9Jbhha?aGLBxPQj-xkdG=z^&pkb-8u@KI6D6ughf4Qq-aQ}D_XL<)p8ITf&# zBk-vy+Cdu84`iCqK3!sY!V`d0FjwoVz>WMAR)yrP&cJrnrIUL+r_i62zaC;Xr#VAs z`kh{9uE{sBn!GsUViGbnMLi1Mfi-u^n<(`iwM8Nd^URgFK_|bar%SQZ*$0MK_=)`W zHzOv{mDUb`TK!|ArY%{3+{oan4M7M6Y%AO9lj@)K*PZ5g6XnO~{u#5y^DoDL$oR*r z*2Pn$*E5z)%K)=ApE4J-$n$=SLG?-gU5`5Xb>rp1mCgJf`pu6tDuJuuk}I_zh$wBx zK->F1LZ931w0HdRt=J*nM2y}`OBwgv2x*HC1tYe;gB&THBf_`0vl;k_`FfSu!rTBe zPle(<;)fl{$MVjj5>Jl_h zgbs?+@1C<#)~Ml3)7|;WCm8@B@IN(U^w#gEW30YP{Sk}mHnI5aey7ww9n3=i0MHte zB@ZZDKo9-HUqk04{7O&sJYNE}(e$q8L5o6dyHIIK zk+V3)(ng-9k``QwJxHm+rOI1yP=sXhwCQIbCN)}1p-P(k%A67I;SInmr$d~AL1Izf5d5n+rE&|cvHHx);0saQccK+mR)?ohGY8dXh$Orw`zB}!6KNl@oH820IG zrbLwVWcPJh!91&B{9TkWuR>!;^SL%xqt%KeCD+)^Hm6Z-`gJem7SKw_ z?~Z$G71pTL6S)$4gBAO(NlYmlP)Tr;j3u8z`R>wrNO% zR7w!yzXODK`W+A4@_aIP$hv(zW`R4s{nVk!qxoD;ISd-`u32 z5$F?*T4!j-Pp}16wJzwIWCW0m@yDi(Y7k?SWp^ycYeY8ALF{*GUw4nPs~0~-rF4~= zbYU)3q!OX!PC3x~{GUjp@%XK_4_!K$Mk*>^N3MM}I;x;4NEJF;a^6c&qXIq7no|SU zz{70Gs6;7m!rD&(S>sOOKG>US^ln`ml?~W}MNU9TK<%Am&na|^W7;isE2z}w7AcIw zON}4Kyy`K9{{Rt6$^QT;pY5m3aZj|^M)TzDt81>vJ*En&ST0qi;Y(3Y?2-<6)ZM5l zE0I#X#A`M>RNOoy;1jCgzI1j(rF1~6zL8d@_yvUcn|M0c!H`e0GPoFV72g#s9fg14 z^wUhO4Rrkvv}Rd)j+Cu9B|n6F=z3)P(C6^oXr{B*du@keg4AiMnBq?$_$X4wfA<9I zvR<*Vc(d)aRa|PW;@x}|yO4AIDI5W;9JNC!=(kO)$@%j&OHoU140H6!{-Az(Dz+B1 z8LQV{tFQ!FSyY$M)Q#={k`_P-8TG+d2fEXbO-n20xc;Gq#q1+GuEHx3Xh@9Hm_{9S zPJeak0Q;UjF@fJhp0aU4)`p#LVG$b`_kC*rBp3>>I>A6;2JlO&Ad!bLYQmE;`kNTod-M0vO(84UAaze2(UMfHyOf`Ob9-kmXR)R!<%U}XpI|#{ zlhMqz9l25DrO6Edm2tSJ5uG>>WHj`2tioie$5oXrM0s>}(Av>XRXq$gfTxLcoT%r& zzJL$Oi~@OA>7?xpp3YXl10-bV1g9Wlgpxj*4e1FKLH5!<#y>MpfC(xGKH1}3r7-Q5(8L6%Xh0luxQ$X}5^bEWpB2I7a3??h3>{N~ zV)7}-qpW11Nl^M6X#J`O++QUZ;5e0GNFz$3m$Ww|&QV1#>8iw2^i9%7NwO5; zvX!ME_uhMItH#L0d8HqmvS~;;exOPAY!UvtqVbaVMBaDsijpl#E^ynA6YfTJPq8cH zU%gM@sO_m6X$(sv+j4Y%&*;JTe^d>bZO>qxsPPgz6m$H$>0UaJtCmqsK0@3nZM6bB zNd1iN)Jj2R&oS`OGQT^WkD<+9RHe~Do5b&EICux0IZ%VY9#Pq(xJszk2a>I!|aB0lfLk4<^E z)U$Jv(I zQPzV+DI=V42d=eaosg>0G&sSfe8b5E{{RX|$QsoVqBTXORKOT4p#K2WoNCH+CnBt> zge3#MCNus85vEf2>H9Jd_-6E~R?5#->TwDidiVSQw2>Y;&O58$?XPhzj~1TU^7qCkP#ddkAPl|%&|ITyY}IV zrs_8l4m8@+g*6#JfPe1gUzpd?{VT_Kv2uRd^S@E@KJHyFNKpR(i3d|5#NLc7 zvtRM$B`W8`M`89VKg(76mRFC*;=ktW`wjHWT(di+(qHO)HC|MP*;D=}lxJ@m@MXV~ z+R}c7mhUA&bjC}oO0(G~RoW4=xb>!G)l&43w{m&jc}VxyZ>@@G_U*Fca91(}Kmx{A zl#Wl-Y8fqTd6%t>bvp_*eu&)B7?6Mueh(NU@2NbA`Wa)bixH=$(}f|IH-_6MYD&8d zbFP)Q*y5c2rN2FuMhJAakKtEr`|DKVl2vrY<8(gU@VNW874kvVUMWbQC%%n~ruFkz zrzSk-LXOYFj^kcdRmQqDV|=HuE%j)@eyo+WgoLeLn$?FbIPA}p5>?S|ong@5r>RRy zLee+~Mw|8`MQHsjsmhQH28xnZ{65;nmn5%d%u@7Qt=JD+)U_^4D@h>pp4yCLk)C^Lu^$v#TevHK`BM-g<1G+A~s8727=P zT_r0<1e;^srE}9@tteXYf;(#lYUtUCB#k5g08-Fss%iu2B%=U+TFVgXja5^}MibNv zhO;)}QeFjRYr;r8XFB#V%9!Z#vVRfc>GNSj4@>Mv;zGCw+f7s%MAr4MHmu8)7F#OD zc8^d8^wtcy7Czax9J*RZPuO)i$W&R3DH$9M#Do6FOOMEl^mXB-?5j;wt7b~+brmVn z(Zg;J#G&X8ughqU9X%FiHBqi+Lx*Zd4Ww~_pjUb-vu{p=`_|tB9PQ6-4W#=f*C)|_ z3(!)%1DwOLZeTA<{VORJqYiv;IF10 zP9DmaM^GpDJ_|@jNdOHzV3ftlo|*tRY1}s{FRD-(B$T9QR&gd*Y-j29hf4X>#;Lkg zzRJ#(#}3fS+vwFE=$$G}C_7JeAc5Q+VZR~E?A;huAt(De)fzQuz_*;<&TvjMq4)4P z-8~C<^QWmnm#k~96m?cE##XYV=kWI9QLifvzA(m|86|F!om|~Sg-fak%#~%cfRy*v zxW`pHChij*ES{%R=E6$8MZ&BN`;)BsylUUE;?h04oTOaQl-N1{0161kG?-?wzQb)& z1X`Uhkv>saj-rKo4Q*adKTVTZtKem;^rDeXU`c(1fCoE7lwyV(B(*KL_^j%JoG$yjCTvioB^xxa|HLwhif4e+7&4=<@jakcy-LAWE>7Yr-Ao^m26MC ziNMpU-?3WnptMOXwlYaWBF?GaIwq@%F|v>1_&DZ(?5Xx8$i| zKk9TelR2=Q<)sM+J&=2AuSYJ*YCw!jNm#-`{$pA7qJ*U?TWBDGkTb@g;Nt9fDM~;} zy)q7m6f0$b$<9zRui_s609{or3UrdCtSNoRbE=BjdK`kf>!s3Y`P@laK})7MX= z#66EGG2h+?bLIoF`si^E*iC6eQP(C52`gC6ee_b%-vl(utCLFNN@yzy$Ufsl@y!KDsVW2gUILUr5J_D0G~1EOT=zPN8Lh! z%8ry^T(=a_B&#Fz)T^PSp(02|4l$m@oCEplRP={SY_2D$93e+P;8(BaJ#{r>X%Z%3 zcy0?<)g<$(Doj?idJcKsqCK*B)6cLUl2R3r75@O^oj8x#BW|o5rN#07W2(zyQd%rG zC3wQsyZ)h_UR&2>n$cycX-L}I06v5cHF%^()A>DG9d&+piiSH52C5stpdk(S-au^_eMwXV) z$^L+eSVmKx0q?BTnl7HuCVZlmaB@DH%aNCme2IZd!cH-)&FHaJQdAYVopO6P^)G@s z)|ewijA6nMJx{6Dm_#YE`&exu3HHg>nGl(sr1_5nlco{x!OolKV_y}8?m3yOqPI7+>9#$Kz(#hEXSN1Ia0Xy9-8B{dorki513%` zJ@nGVY5bG1AyR2*L`U`&A2Nr2{Qi1i6y?k{7YqpGmXpJ-o_l&|bdCVero~%|LcFU< zz;UyKthqcqHujdE@+}@lNm}-bq9o)WB&01r=SC0eJL$3b_Z>H|Rz+V0mRo6)y=uz; z0K|2&Cq{Pm&eZ#0U>-GOwj+N9XPrq=%CzE@UsGq2b;lHCBn2ODq0@3_6rNZ~@A>IY z21{96nFsC0r*E;+(fR;;aq|O%oa!!yUd$)rLQUQAH`G|43Y{-2Oc-(+nSIuhoVN|J z=59877Z2ho{{W}!tbR`N&jf7osbR0U*YrM!v}}uarxtu0Ce(O{NasLfMoPZiSX znL?dO$aT_u${$Zm>%#K9n9Ew1(eL<}D;#b7nxDY0!;9T(thaOARMn>4r8<>Jb!p;L zqma-(zvlKFdg>l0hh9crRs1MEUz7H6@m}BhA9P&xc((mB<>9uJY-?j^M*%4VfCr$) zzL737(ev%MNAm;XO6a<}kJb9c*(KLi5xFKjU=IPb5K}5MUNSkcdo^oIEK6(_kP;Fx$R7HQDyPwT;+ENVxpQ1{X%1Aa<%Bfi zeC-~}&!`#;9VR2AFSu$K6N)0R%7O{b0Km?#DX(Y>lk|B`wwS9^l=}%F;QDJ!HjLRd zwjf-QrqL>k!B*6(jO#;t7FNgpid=0-lZWMmgTVyr&(A3uu|0HZ6YH>)r7ULY-RjFrORF0}_d3Vq<80A}(dSj}1yv!b zxbF?BPb2H8;9Os2ayHMN?s`m_lZ$UV!B?lQwk)twf@yWd2o8ZTS21FUu1Dbfh4>Z{US@ZCbTpF&Qb9HY0j z(OuLzUXkLU9(m{ATPBE7+aDt|aoCJ>gD<>e# zccEE!!Bn4@g)D`W+#Uv*J)zprW=*F$jZ7~|oVN;6NIkKlyE(l`s~V>|ttC)elB0ru z5Y=?08C!I8=TGa(cu8=bna`N(m4U+@ELjl}gHCXvE)0UAagAt|vMz*nxZX7RCG*`pq8k%{XupUG-j>EQDE+e4pGE?U*YY$-~BW1yoUBh+gzjp0@-i{z$nAzU9a$+MLz z;&!J{NAAmnf_rz@(Z$ack0zq_*w-rhvTWKIWlKnLD8c*cc^4)=K1p_kN+(l|cBn)a z7Fyk$<5IZN*<{mZy=irplSGJyB^0Gc0OcLE=2jbZv}>HPGo~84I)z2KXv21bgRGe3j zQIi?Xt~SQpHp*58P_>l>ou_utoRPa4oo3@&8AkhNhyMT%eyZO0x5IpySKY-np*7ov zX%AE$Q;s39Py#nBl@J%df_T$o%I_1{DiqnaSxvU5B-Es-NeX48v=TGOD^Vxum1tpx zom2ipT_%!2`b9OHedgaxkhaqTIzY}226_H^>~gU`e+U-cukOp%?Md0ul2YE)Dk4ZK z^eWx`IMpKg&cRd0v>$py&BRlxQ3Wd8IrIk~(@xt+T_d_x##J4{ALOK~Xg=yZ>EkCt z)OLAuPn9X?g|%d%P8?_GKlAg}Zz`&;f4O`KOwrs*@{0+0Iy+z!rd0HEOJjX5upMCm z#}Y7r4iA1czA14=M!zGk+8zo^i&!Nu6(o;PPy1`RB#ujE(^-!&r79yB=jsPKO0>f% zqw^AccRXc&6$9z1F3M|2?lk7o(QVJf+OhZ3r_hZ(g=y29akQ1IANj_qD`LN41iFqE z4hTPpdL20QL1SG~$UVG0QUiL+1)f2avSjkN4M2 z>@G_NaKOs}jlWRnczE{}??lolgB@-dgk(CfW=U1I)A51j;NjP9G`tT#aCPh zxz`+3l0Z)6p4#DBDQ@|9(JLc^oNKh$b+2JLRR@(2E&@s2jH}pt>6%ABL@|*1P*ArC zD(;YTjU5VlyeId08TQVI3bJ1<3?%E0D9D=Xa-^(-^g82;5^C;@g*%_P(m!J@0cX{t zmkK3;f;e$J5%(Utl_XMq0BVbVGQ39I4l<*{hpxQ5s+E5uW;U5Y(6uLfN($qhMW)LT zq^V2Vq>=a0lm_%jm1R3eCqA0h1gV!Ikd*K_&bC6*GdH$bL%iWU=T@IUCT-OZARGhV zL=9|{#t9hhgWp^sGl{9mrP?Y38TW)-xbT{>C;5~pDPJvP`h znF6W+9!{A(gI$%}s3fT5=!(-tc@nZXUUW79AVJ^0gQm(7=Okoj`RQE;k7W}rDqcc| ze%g)D>1-iEq|~eX(-nRjX*gVszl8e_LUkInkm^F#k54EaKBO*_ zh02<;IUI1)L$*&U)*mx1aC1Eyyc`i#$*r(Y!au?V!|^d1Eyr_E-KAS8R_CWYjjNOg z@U#zbf5qF|URRIcWX*ehBzitin;2tL-G8z7tpe1vx@~I3vaDJ=Q6WNXHywr(gr^>) z`kzvD^tkb;T1U^;M^(4%$^I*EwDiNI6}!e;pvX*e%rukT)%j8f+d2HS*|j)nzezCo z^6$u${#pFsdis|xGUKdZs2$sma!+%wg8ko(@;=$-D>}I3 zKv88CNJR@D!lv{3A5o(?`#bKvbQGiCREFY+vMKouk0wX+I@u7CGgl_X`_^S1s7jL2 zNm$O`ZCNO5v3XMTac?;aolY%=fKrDbk4;A9a_D7S_9qQ#99;&VlZ`&Biksp(8WusUUC>wLo3>z0na+ie{C}H$%}Us>xwMk^yR6% z9!8%VO>`~K>JgyzJLDtyDtCI1U^MrQShG$>N>$NSx!A%P1wDz@Tf@clUUF~QV%@P~ zO|A!OoaI2^o;BZ;hP@kgr(@XknC-}0XayrDD%WzRNj1LDl`0V6xhKVQxjdZfTWy1A zW9gLY6ncVVOj=0Y$2yipTG|id&3bKtXIG#ia#Fxrk_bwa21c{1$s(`caZp^R zMM?@uP*1=6>e1vmdZC^@u7FpKBD~y&)Y<$!k`6Ktw!K)n$s3bBCoi(RiE~v=+gf}$ zQj7$vo!-OmsN_u@jjlrT?p7d1KPaN3_0%3UPqSCtb3F^HfpXQR7aw&*6Z}WEsG?w5fq^25Ksy<0TYDQ$%$tAaHr#>yv9IbEH3OP0^PX-b}-S)VV1HW0HiqyCnN9m7JU29Ahila2yf;Qk1oty#b z>8$*ey%gfw*j{~ct&OldEG;KL^#1_3)oz!dM6gXJpt#FJB%d}Ceev)7^*L<}`}8nd z&WePEZ&)gAB_I#{`e?#cM^n_5DzGHMsW_IGhRI8zAo^#KuBdZCPn3sg)m^d_+EK5xbQ7YO&Cj>?Z=Y(%Met zWOh*Y)l=CwCFu196^4SlleC>a*rn=pF1^+x$OWImhYn)gDNy!vKInoNRiZ z@eOgua~W!^+9gJO1p$Ca;E(jz3&ic`TZ>FgKNE6~aD6$>ojrlA5H~Fd19$%bR=a2f zZ%GK;~1ud18P*PRG`Svf)Cf79zf!HWt08dzn;630$U?h zK&0(bzg>4A@gja(PLDc4`sh6{t)i5M8*uJzdFN2L*z(@bLK|@*Zl@~)1z+MHUw^)& z;cRr;Ba;d%qjO}XV0-91X@yfj_v4iISkJi_((!4BXsEVoN2~ zHgTx^y_MvSmjS`%T7NOBEKCm3!dmdvlAq;>geMwLuU(ZgM8rfl&(!6aSeI8F@ zwWeC9vh4RfG%E=oiC)?}IU@RL>Wl->C*jnOTo8VT8XFr&k1dMCQiqe_zS+WtIZ6Kj zQLgj{rizt0O@>oWXnqgH_0^Z^OH3ZOHUb8jJpioipo5*-WcCdrqti|^pU+PxX%&|^ zf<}Ay(b^TQ5UyX8t9R$2$OTtwTS+P>16|1Nc2#zykaA9sByn0rT?t9^<4IScxUf{J z&y42AmV5Gb8qA-e=08)aVN~fUjM>|jVQTjO0KT#1@)Go3aW~nl+e}Apj@)RhgeA1# zB_qGr@21Avp2e=7j%O8T4FE{=-Hm9JiO`SLNL@m$+j1yfJ(|R7gp?GbOY0-TsU zYF%_HX*IJo=+FE%thg2A^#`w2_pb`do$*r=N{`91zfURU!avQ&(^6hCx4U~aWb-SJ z80h+XEiJf^(NBugY%tOSTVa$0p(!1J1A(n+CDJgq-?9pVBEn>;YQ{Y^M883Low-hp=9)uxgy@BWo^i9k+NIla=uR>4hQG2JL)myT2Tw5)9^BQ__tR3K2N`X z9KIo~H%!X!Olr^?!BJD}U}N7SUKRNHA$KRO9!5Nm@ntJ|wIY)nYsuQ+;F2-O^w7sU zLAvaJwEC++MIG98S+qD?#|rfs(70$5S`u#Ft}`yYS)!mc+iqZ_C%E>AkqN>!b3s=%8^>)@^v$;$3_SU=**RwuKY*?h& z4m|OAvXp_&N!F@LNGDq!tm|4-Rp85(? zD%O!+ReItG2xfbk&lx1@(-W^oTmB(pWrCzLy>BSsbI%%i#v`$ITr^SS2OD#44}CWe zgSl*Hq;(cV>Syf4R2G-nP8&PDJv5IRM=NdUZnQe1a?&Y&Ep`@L#x|`dx49mNQLGrP zlvyn!y0uDeZI9Yiw~7$wW|TK4KTmC26;36sopV>-im)ikeM*s4SBRwjagWPe7Ykc6 zS1DlXy-tl1M}`~;PBDT8v)-nP#cdu%xGmOvzAIQg_hU$&#-QRJv?~wM)t`BWgxOMELtXh+blGYjNEoJkgKf%i0zCwPaBG zh0^)GFu0mZ;Z>RuBq*d3+EjwC6*=srt7?JtBT~uMJuhQQ{Puqy?~bK)3XF=sN+nVv zK!ll!g*7fi*ieR7u%l{*;gW!T@&=5~HkEI&>9w?fR6Z5tDUOcNDNz!j9JeX$Fpapt z5zvhOWNEbdX$soe^@KZZs!g>XqGcB)u+dX+8t$|1qv!`8Q~7Jt&57d0zm@P{o8@gD z{PNv($58j1K8KFn>n8Wvp)CTgL_QK_w54T9zzOvrjbzWg?HV!bU6!Overls^bmg{O zSwB<2{)bOZ)_}fG(dxe|Rc*S0cAy=qBik7V^9T88tJBj0o%VyYIjW~lO+~-%R-)R^ zxg4bb05U&KJ~zVm@CsX<2kv*8lMSkq3dlgh!2bXV)$`P}nk9`i+5y6;xgK$8w*lJL zKE1d)&(ET~b}%LGM-rTRBY!_mCGZdL8b>D{?cBOFdsHBs&?!BrN6BAmblh1lngGiQncYB>J6Dzx{jy+q=JdA~m z==Gp)y%e4fB%Q1E>@=^?NZVVBPyqHk=>oKivDBpvrC{UVzPLP(&omD@8bMEF4o1#F z(Bh8TAn?@B8#q3?ZDiC21MXJ+)bS zWa(_IWD<8Rz&__zREf0C9hTVc@cfRQP&CL~ndnvg^vQv(q7}ZQ&h9i*(3)o{bT6`j z_r{q$oOY4{!5H`FL`JlBnGB$C+4}>oIeR>EbNfg`DaYGQ$mX<0B+XwTkd*ccRtM>$ zv;sF*v~sMUU3UA?!1+%RlaMppMBrS|hX@Ld2hjU#hNa09(ZNGcz<3lo3GLhh zF`Y1ouTP6oiBQ_45TD~#cq2vjf^kxiQBqo&aD#veNynzSAU=wYIzkCZ=NhDwdmvNi z!@|3P+d5%NQlH2;I&`#fJ=r{Gcj=-HGMm#*NGD6kC3h+TBP9O-Jq}wJU!h7}O|)k# z`)CXYsN77klD9|OQ+X7WoNj>AE+=Fhh3!xCKW${qH@ zg8YiFOwl-|Sbo=8j`BeqYI629BW3CH(cX*_;>RBTy7WAI+A!sot6@sryo!L|0hASb z6tA6XSEfa#*+MO`A_}+2j&tq?tgSH|gyQUL%DyqGCWJhnRc1R%T9yCQq4GMEdIwnT9cGLea0q%XxO`nRP3tb(d5s5@E<~uy&~~BWY0k9(Cm9 zt}jgVB2#4v9X*=m#q$Uo5s`pLf2r0h%97EtFgooFH5g1mh=#~PAYhDY5l*PKSyF}R zRH0UIvfF8B9E=ZLYV?fVwpVweFau(L&IKs>u$2u3ou&%$rS?<^RT1MA_Lh_mqApcs0@bG8Z;tN*(g&zA$tjVV;@g#YL*hMrrP=BN+oy(nGf2pfhwE#V&XuDm?IW z!PTKlB~FPdl>4fX(2+4K+m3P18mi;Igj~1T;YNi=!;dlW8u6YP~Z@)ST%JZPqn>#=Tzq(HbDo{&NtU+*$I zjYli|OXEq=s?5A8>W>;22~&8%NKa$$`fJCj%Qd!ob6DEZD;HA{+VCMmD^VN~>8oSi zJqu|hdq`%baMTk9LyKV!D+H&GHRxledD)UorPfY}%%V}hYtt$&xyDIw>9@_1^o-7d zM6NuNnS_!K0S8agIeQ+gsyh)9q{@458Oc%aspM^zjeL~unC`@>iFE0E3Qj_jan7du zU5)e5)ob;>;-=HZI->D)2u=Z4IU36FORb`dD@(GB-lo%$IMiQZ%x=g5J+-AKr$n}$ zY@NQnTlEDhBz6j&1G9qwYE|Ra7FlLMw+~V)uR0S+8&U@Y8P{X+W*=hY&g-NES5a&5 zluW^#@>G$HZI-1GP^tEN7XJOWB`vz{0XQo4*Lz^RYF5zKZ(T3ZC51*>(h2-W*G|-> z*)*8!s8BALe?IJ=KHRBFKDzSr`E`o5C!vc3AzN}_Wf!Sq{TnGme^X8j9{n&fAiZ>&4u5{(D-9y-X|^0!D`cw*_aG1G59_Jdqon?0{{Y0=mh}hX zPE#NL$JcKRz&WR=V+c;hYYPJPm&k^J8a1ZH0|tynM2YCj>(d!Zxqqq&GjT_xRvStpki@lurh;-3zo7Oyx}={%IeP3jPGy7x@=k;) z1cKW6N``nEtkPtvT4biQ{ADVf>`vZhm*Qk#_aA)eo6s6Pi!sNR42KC>9#WzBzwfS1 zHgiS5u#|5~yB=_R9T87HWkg{_5PiSfO~~S-(p+q*#C{X_lj--+-+MT$~zNwIV2;Hc>C*)BTZ2$I41yTZ5&DS?K+*LkD=|Z+Bo&Ofhxj|A ziqd0)l@uiZ04)t8xiEXt!U0LhN%U7ELCDGMjffj$c&&m`IZ}N`{j?P6fzdpN3wS6a zAJA^_>eQC zaKfwLxXl@&or!S=?r?vef`lGNW`h+NP#pS{oM`Aq^m!s9t&iO;E_(%W{WZ!(Maq>$ zRCuj6h6`snDkE_Hdvm5;vYfv{RLq50Wiuf>8+`+Vo=4F8jU6#cF4m^2b4ApG4hqsV zz-+7HZ5b-$>yt=QH=hX{ALXZ=98!@WrCAE(cGC+>MHzD&JS+kAI%LHM$&wS26`=i` z4x2C}5xYv>kW$+LRc<6h$x{BuJ@qEo>QfZ%E~nF=r1-PiZ;#_}4MQiF7}sp9c-KOM zol{LpNp6>y)UE@o7)bjA-(F5%JyX=4hCdsM>^*Hd{KrJ8i{7)`pHKGIesxc5w-lC# zXb27<0uSe=PhthBZESQLV0vn>Nv@3|$(W=eDOLajzO`a{W_z8FkXvFyK}EEZd-`iy zt(n}Ny$PIUE#vdmCWL6NUKlwD|DYz^d6e|EZM6yy02{dY>U{}!A6OzqlIP1) z@T~Bx_SD~u@4cF1%UIU5SGOyYFG(Q}#|a7^Tz_2;w6Ly@d0ua2exb20(@I=Vl#%6L zbkf!OC6TBGSk=n?PFh`(rKzm>i9VVy64yd3kABStzi(0M)PP!8@d7#VY>XxU9v zndNfas?t!Wqvr`37#wRQs=TyT^y^_eZRIusv zdW)%cLIQ^GHsg(UX6Mi`r2U(1J$Bq%O>D(2g{8a<9!DC*_bu0K(-SFlVUsUO^!vHk zMskA+aEz1bomQ(-Jgu=_70q!&s3Ih=b}2v=FWX+Lec zU>{C#ubuKdocQu-K95@#99IiwThy+N(QWF++8T1F7JPvB*6$ZRWsl6wnm*lrCzkg} zE*Vl9eq>OFP@Xp)K+|Se-1Nr9S$S=sjb4cs*nJKyDOf&$ay2Y?`zx0wg}aXIo@SxS zGi8v2l2Ph)wSEZ4f158=`ju6z&_o)$s(1u|60IV=P=40I*1XzVt0|PyTM9S;4N*Ob zQ^YW7)Rj6uRm6~^$z+yLB{sRONNI-sYEW*8)+d!{5p(ed+gE2eW4W;C=`mPim*ru z^X(eep4P}yd($*JQY~qeWcX6@=pJOObFQS?C%rPwqT{irDTk($A34E1YtHhaarN1= z1-*qUw$&Qqbo{Q>I8%-fBUtg}cwh1~)<3!`)_QMSraT^H<)J>MNh9;utAo$QQ==95 zw>|tG(p{=hTtSgjQjT%o(^RbLp3yJ0ppDfsEXqFjU*4cHH)zGC#p2T!I(s5jPU&in z%Yi6co@EX(s@q(4cKgwybwj4ETku<|Q>7`#JF5dw#gW+ek4Vez1l_NG=*U*n*&yoa z_Cw^7g$lnNw5nPZe87XBZ6&?3lj!>{*t=0uw_w%5D)C=!;#K|?C;tGqUpsq?(>Eox zu+*tcR9Q={ounXztLuTE>8dBlT{L`e{{Ru+hl!Wn&2M#XiB?Wh^Ax(21)u}r1)Z-p zp~=B;g#+6uAom)cSN4;CsCJ+BKFjC@7A3dR*iXp~wua-OydU6g2mt<=*Q??wj69i( zGj)0vCsJq9Z(4=@Qk>(GE_c-9ar5Md6_$Wur2R^AwIA^>1A&v{c`m;H0Nj7`f49NA z1g;wW2WkbzT9VS4St(OFC+5NpeV(`zQ7BRW013x$=zm=nwt|z`Lb}kNkuEAni0CB<^iszv zN9Te^)E|9ABGVdPx;UoQgU*S}Cn46tTuQwN^gq+|*F|rzwV?I2Ty7MkG?#psB?(uc z&u`0}XvbP)>2w>qAi}s|e6zcEC~uDEs#o;>pQfvsDxEPQxqCt~sx=BzE*T0^(%Avh z2brVjqCdm+{c)@xc9QJZ_T`5YaZHU*jZ#aVBT7(GRu3&KdLM9q*H@g6Ns_5e=)Wqs z)lw>IF&aAxfsoQq;ZW?M>_)EdlG-CF%hL~2Wx}gd(&CmCgyke2K_iSGzO*mN6K$qa zHOk#CV5mH`Ee;*3aXpfLqwTJBSl<2trARvpYNY`oFKp{{Zi<g!Wqtm-Ze1Oucxp%(4tYwu9P5>Vu8!9!DNmRW z%TAueDy=Mqm7}(K8Yd9FxnP#oKRt292`(+NN{%t_px%Z^sPu)Wg04LdG&u)Igi4g# zowpC6(Ay4?VY-@BFjR6h9UM%GyR2h!#y`w>(B-4GvePwCvIrn&>!wryk@RqDwwN`e@JnQ2O*l`wlrg4HM-nvJ6i1tR z{{RT!5BJlj`W#EK!aR)j{w~0Oxz_=$k(4AHmy@4eyy>Ni){Y)|q@e6sy9IN)@Qfix}e*>iUSE*`uiW{rD>c{ zkhQY1)V5B3*&0yx+3a%>Sit~krH!N!hPFxCgz@~e!Un17Y@-NJ&(P>UM-siUO4{N9 z7~>;I9kNy;)Ba6Pravjp{fCqKYq*6K9i>K|*?N~!P(GmHL;c2%*jgfa=}gD@YO4*X z4g;HVm3wyVb;%=v)8@iVa>O_bXrKOK6aJ&uRN%?GK$70VLlp(5=)Qlb(o$hOQtAjt zk!`p=i6c5wh!r}1PGKAl_)ya(z}|{7>g6gS$j^O)eYIg9VCl6qx;SC)$&z$5!npJvr4lvUyvJ zDpCB-yjI(LXQ1?!hYL!Ygt`e&Z(TI{5&AUCeWW1?0AS<4zP3-I18pTFBrBeKY17d$ zikiVI1gH6G@X6TaYdBD#gPmxF*$dJ`%{EhsY$tbbU22m%_E~bEu$(9!H0kI{D?3-( zbF)?CBkdL4t+uSCDarL3bz&7As7O+9(+W}a!cLu2Vm*8d7ahr1f}#@?{WlzIW;|+_ zWNL)k&BtAw6qnra(s(IJ<5yUv5_I-_ukmMhTlK2T7PARy*JG@%LyaI~cd;OIubukd zXwt-=e&6ywi|Dv66Uj@b=*HtnqoKh7GleYU1J_<0Lw%mUN=u|E-Mv4js%VhpM-p6C zMn(Y|)|cpJZ?YCuGS3K?PKK2PfD$|7OHi$8l$vt(iEe6T&D2_QRr2l^JNZ$c%Tkz( zb)eg;MVk+%eMN~JB0U09(eL3NajL48iMga0saI+idwv~imbQ*O$#FW(mO9yNcK4ti zXQ_1QunP{u1gr4z+fhlTUulVx=~SwNhEQcGBWik- zwX~&W8 zL$y|cI)@pm)n-!M!gm0*=knArKKPWWZ`caA*Lt%tK0=L3BOi&vobmS7`M{rTlB|wb zLi5+mirYA=klMSEjAKvs`1&I4*RghOS*D#XFtMERp?lFxdSwZBG{CO}MlNpQI2qI% z(=Wvrs21hjaLPk;ib~X0M`NQoWqgykuh9Au&FE;QT8W);({Sg9m94|ujdRIvy7W!N zh&PRTk8H|ZXwuL^4++OQdc{_O6s3yw>%PBnz%0OZZJ;LrV_BDr81H)Qz301)CMiJu zzA6Le9#XmZ~XkHaw!1q^7KV(izjF%9sj>l4Y z9Tb`3X`MN;ov6{0%kBjbpDuOe=gnC1bb9zP#m8ssgQj$-B}Jp}?DB6LPol#X&B$Fs15PEp`IUo%uE{e<80n@x+6$oD zEQjhy9x?Urop_!{kCNZwdbqO0uE{R?`MD!F?KK;a*yoIAOXJ~qtFg0Xo1TTcTEuql zmZW^@Qc`o39s+f%CTEY}%Q4A`{Yt6Fx2mhRnUELZI#ZH;bxb!;vUe#x7kYT@J{rWr z;sd2w2VR6%$h8{_zP*j5ee*Z-&v`>mY&g|bk5<6Rq66zvZ3PBoOz`u*JwM@{{YgmKP`EF zRBIz^g6o=0Dy#clTFRoJ4(bxyTSh+9J3R#Zm7oRjKt>#SM(wLhV^ z64Y)ytg7aL7JhMOSy&hR}B0sjEczOOWsCgtd0 z6&Au{H1f&}l&J_(y-I)Vf0ndzOJB@QZ?KInru?P^NeUsx&c!Hp$l(6~q0rvJtpuO9 zVb!VXa1tLv2|-W3i^QpaGnKT;R7&yiixLz-;W83WDL#uDoW6=zLv0479;plVWS7cT z_nDQ0${YtEkIZYTRUuQ;EHujAOsQxIZc{1-QwdLScn*(nPY2sST?HLC^Zx+7h1Y0^ zR+yUmPevu8qqSh3$^)OWf&E64?k(*Hi`Qcn4&zjvk>n@^B;*Y7pQfqzISQjhb=qNi zQr<3<65;S9x7|7Z6P`KtJRN7Ke3^A?MGADGMcqcNvXn-9%9lVs5hu6(2k3bAKALE5 zKN=FhC$x5?)a|LCFoZ5dCHY=bKN3^!eZcqqb!k-(`3l;kU87tEflyn4@VKs?Qm*Jx z^~bUG{dKPuCG5{#hhx@LHI>A3lA+=@RDTfv0L+imR;HTJo|!aii?P%nh`jCmXg;IY z^UzO1wXmvc%{Y|HY1|FlT+cfd^&Y7|_tE9h64O01oBr+OgphI)PC@#Aww1nyC5Kin zD7J-%ThHKG^C#`@G|BCYOGSm%5-<{0k}@`|jDA{mS{GX=%eaLyVizQ-Ei7SMhaYfz z9S4(xJC4gQRpTcPEzOBMh5rBv{PgQ0XAvr-i3->qZO<-7#RHL}$u=D_0`yl7-|o(T zEe)U?mec_S2vGVQ9TSL_--dDuHBAw(_0m-7FRGRg`q<}x~C=sgFVKMNy<;AyOR~kB5J54CwJSO zGN5UleE47DAJ0yht!&{_!j-iu#;B+qPXxym_!bY-gQiSV(mX@vP7l5{M9G}3l7tl( zJA3~Cwx}&5fS@@kBiAZUsF4a z_$Lh{sE=K^Nd8)6#b~Dcj)Azik?uC=?E$S2xcJ+Hq5_7cYY*me_U}qh` z!O-M!3ycxVGTlyn3bzmEqomF`hcclKSV)qUAb>e@J({VuWV%1QW!7nRu^Z;NF$ZMK7L%izC+`4rz1v*9+vHU;x*O%t`JQIla zZt<|X{HxHr4$XUSh~s5SIVD8oldqV(bl%TlT%t#90HpwyfjP!8jV}g{cd*R{(Q-B% zRx#+2+x62-vz;U#rxmdO0EV2La89ee6Kmvjp+Hl?B?%*raCB#~Po_6gDXYNa^wy|a zCtA?aL!>DR3&H1Far-mhq0W;TvmAJUa5>JmB#e!{mR)Wz1Qh=OJz8Z5+bgMY5N4s@Ln$ zp)xr_U3db1!@1S6c^*HHJE}-H@aD~Wnc0AKkK+ycjCW|ZAPq2}L$jCo)<4QUKKk&y zzpis!Jb&~50At$mev`qg&HfA;p?IdDA#$Y>tddHUdDn-luHUoRR+ph-qjkoMSxl(N zB>;`UYfMk#NxiV@FIKMk3{x0EIX+@jgQcdR3VA+drwz}<}gT1N_=!tyoIuvxuvfkw8xNmSJ>TSimi;Ar>LssQv|L*eRG<&>1)g;HvQAa8a?8fViq#5rVb2}5oWS5I3FA`x z$_jm+eUj3w>*Ab|GTCj#xSufZ>84&z3+l<%46)n>Xw}}P*Xn7fT}(KX4mK!pspft( zM)9%mEY*6nJ5Qy-ZU@Rjq9t!_!BSi8tax+NugRM-!sF62`u&4($d;wK0d1iF01-|x zuULE^bNDsd<9Ea|VbDtcvkG}qZq_^qUE{Pl|@w#|6&UdAqz z^{#c1S#5O+5?0%81Goc?9DXFz_I6Jp$~Bw+0OI1CdC`R~Eib`V+!ERE#8j`m}$ zwMHvidf%)|QLs~EgAh!k z(zm>&cW7!VpUC|)&Yap8#bzm}GiJIQPbpYILU$nesS4plf-|f++oqC6oNJ2hm^WJbYf!0Ouhn2pDoU5QBqJbe ze~&tiGd5PafNgknN@ZOX>9Ypp`V8^+){39UqFlSttTQ4&f`(gB@b-*=y=GFjYESVD zSrMr7Why;G$Q6vJfq*^rOqFvxMD-N(!<9=S%u}j<6-Bqy6auimK>W22y^;GxCmb(K zzikR_x#K1a!6zwOjT3^ja+M#hGBukuRXwu0Ne$MblDKc~U+-c`K}jbEYLS3{uChLv z$2Df@>Y*kSM$#7TN%xb2e9i>qpUj`PI%V98Ucv8NwOVwf%5CS1>38LUb!9;<<8nfC z_&_9ZJ@mD1Ud2$KM6@d6(OUVrQZwQpq0)P9&VQz-?d_M9rJIjU zib@X9q5;W5hXjAFv`?a3NNThpQiJUWK~+8Svp;>e<0 zFSQjZj@lBY-5xGR)yG-ypLCKx*Vj>W(kP{DVQRX$(i)S!Ogupebv*1>Wh9SOpJTxX zLALuxX=wcFRr4!#_{l=nHpog20`d4(pJEUD9YN1y?GnPM7*kr9^P5^*fex#%ZO++0 zli|oGIskB z>NVP4na%IA)J98e2I(?Vq#%Cfw^y8hkQ3Z{1KYQ4RwYW(Csg0Cbm=jqG_^vCS$&RN zV;+F>A#8q+#@uKhKBCh%Lw;?Lpx{XV+xd|BG$PQ}Wp3fk$&J;C)K?W50-yh&WB z)FHMULHU>q;l`XBi+^L^`snVG{zq$n)Sd*UBcQoYkV6an19#v)-*2X=I@dzA`jE?; zObh=2;!u!Vk8VpOH*AjH%- z2}mDQ6UfzsBbNUFfZ3MoD{Z{ss3ed-+d;h?a@BGgj>J?Fk54%N0PNA5Lb+&}a^6u2 z4W+;bc8-6RolvLdUJk1aNgq@=J89+YR*BOtLtHH%V3Uw_X{IAvCu(U)%2-%Fr9hom zmc(n|?Q@=Z5T%pt>!wd)HKHd|A>I`EQ;xmDV>E?(y6#S!lVZ6?ibYAj%4~g7jOoWxg+Y%aa%%px3p4w?(3&)uH zI5A3-?%ILVIp`gdn!Iu4b8>&`K^k5x?W2X&BWyb)rCekrENAl2?FDv1CN}#)!H@_C z3Qh>f?0&j)pGTER$ekT6k(UwOS^;lm0U^X64bzeSA)*8GlXh}HK6S?x-I&_Zk@}53 z(?IWKM_)$cli%y9x1f~dPTEe>!20Ma?Cor&Dq>cW0qyQJqG>QcKsv5WUUpJJb6HlfvpyI|7oZ(06arj5`);}}K`*ErE%{VZ+t-nC)Zr*)p3Xr0= z70Zhwzx}o0?~^?}@f%^=jTVA-4hKAFtVx5J44Mj2DG3PtO5|fxta>?EK@@gbDP^|C zNWsUxr@;@%Ek>|enBZF0QU`K0uNKaE8XYLs#2RuE2vUF?s~z;yJW0CP$pRD=pei!b zK<|Uw{k5WWC2T1kL|DfGU}Mng@k&V2*=?(VhEbI|0Qb(cEXa$;vW-Ugr^h5Ndt>gQ zs?D~ExD~7YWVUF?QsvcQ(%s02kFID=lEpeb$W78U5a;S|Gw2xq=cKo%6C)B)$JY{kJ z09JZfJP#f{y@@iS)+;Zm`8B6y$XLmCL#1S&&t7(1*H3o#Z-|Lsk3h-R73v)Eo_vt5 z!#n}0PE2DpdhGmYQ=r6BWwr+x+)u8mtulOc3#VFgt8(|lNLkN+OzP6w61o^^RCjG@ zDRx{`pr`nN=TOZw$Hz%9)n?E^>n)BFGuufmuVAIJg&rLxf~l1Tihx#0C%5aV z<*W52@Jw&=F5EZkG9e0eElAo1GLfv&f}L)S*Pc?;mFc%(jR?mr64~vylbvpl9X0&S zSu^c|tB(A`25T>RV8eH{;1Px)yEKS8n2?9-Qlh z=RaK@N*`lXa$Oc?KOWb3HCbq~tYZrF)n?T$h&XAC{Vcnik5v+>(onP$jj1}%f@dO0dwQT%bJCRolgHLHLg^Nsl?)uF++?-iLCyxv|@27~~O*=syzitufYlXHa^F z2Ab-Urb3iEZ5{PG@NT|FUSy)Ux*fWuE(59XP_yO2hI6fWe07CvhD^^Z(7#&vYrAVR z)mNs^d2B6NAvx9Gor-#7*Nu_(h~MeGYTIM>e8$Pg@hD{J@nnp>p>G{yT4gFlmmS)= z8mR=O4l5YOHLAA}v}a4SnX%gc01g&SN}eS&a8@!-bFV-5yoR@f8b)E%e} z6mkg8vt@@%NWMCmeV>iGy*nt3#5Ali8gSWmd%kG{P7$%A@tvt;4T$7ytDcU^wB zPL`L~2)eBDP;-yVTl{F6pJpu8Q$#fmrPW%b1-ngJQ;e06M!g8ex1$x)(Z!3^7_wyn zE#0c!%6-PKSoJK5t+POreutr!U`bL?PJD+PYt6W=n=!x8eYJ1u4GPmS-ghrN04rI~ zBxgDwW~i^+kwtf9N!p8vit@}de8U+i9{SN3rBCxSUAm#R+P6A+89%gYlShc-dz7;8 zl>VN&#pHd&^(Krf8e5|}>IIoWn{c1(f)rMz5=(r8&b9dUOCRP(EXO~@tgBw*q{m5> zDQQZ-hds3XrGr$EUfya0aa=NHsVf5@?(e2tSvuM|wyz6vfpHU1oE%QMQJf!4Xo?r0 zRs081lC7X83eUEmTS7jV!y2}@4!;I4&$0H`HrJ!HnKey_bx5hGz<4&{0R_SQNk4~h_2)^ECb}MLL{vJ`9c{{0NF|rr z9&{;KCmocN>;Bl(aoVn{*lu;&^fX76DcVYBxSioC!|5EH4g&uGPX6OYr{q;z=;0Eh zC=mYDw&HfWfN~at?e!hTmybgPZR>_jEyYr&IpU-MS$DW`1MBVvHPc*rU}-SJ^CC@- z66@G)UxnWLPuKl*ZkVlT6zxiV3Q3Cb9)G}dlsG-X(dWb1IPB@_lB!M#Y^ zG3b8&humpulYI>{q*AET;@6|A!)YgH<7IgYXq5lBGrgZipBpa*c zUCJI(2|bnmqg=A+=NtAiQ?75?F^XIRa2ZKS@AlOmPDoA~XW-~`;X)tI_Qbl5f(}CkA;(; z-LEKD`I1L%BYa-N0Np?$zwH)Ss!K|NGI5i^bC9phdg;~Bj!Vr}TWIC@+jIW_%w<^z z>&JaOk{BwcH(>hHBEfkkk@DvoKaoVp-YfUd|OM?m+Aof3f zJ86h_^2|Gh#*~165oO-TT#?O$1V<`SLfDK{rp5tfVC+8L_|@f;J7Q#%(p1q3L*aW$ zR0=`ovG1nZ29ZWw6DhSwVlqmT{o`W?2SSoz-hu5p7*=Dbpy&8c`e|28;zLw*!?t5S zARoqqwL|Nws_0%N*wP(STcgZOhW%T49FNmaG{kGN;}Q_#WA_AOzlQhv9bRi0?-#%FIhJG4Oh2t$!0IYQNdIodO>6`q+;R(e8;S6$ssrZnTsxL$Pe;dTv9?zh7j>W&uSjyUF;nL5 zTaFx*_c;2Uc$HO=_RmX-g`_^xXeenQC9HovTOK_kRbfV;rIh1mA8l2}iSkSxTnLI% z`hW!_e_cl;^fbM)v`W-P$SN*_gXSdiqwS4le#@^z1Pjue5gT7xPzP>t`ul6QI_wQI zsl8^P)6u!ft$NbVQNW+|~^>G-Fxt;Q8HOtP0i@};%mN85q^x|L;_`6#j5_%iFq z{vrPWB$cLx4fn!(Oop@6YsS2v9=CMKbP>oyyFvP3 zXgv9A(<>NpL-c3YOnDXAWtK7$qml^I!|SkG{Q?wwa-VNQ-7)_FI)+G3bETx3?CE-X z4bvWOGE*i5(nuNFR5hNXZ%nGaA}ZDOaIXw9yx$LG*2&gd6)V@xNRN^(Z~LEJ zbBUH2rqNE@>K#^xH6f5zqOb1KJ@ow}u6Bm$_bttEMjkCKNJtqTPDYi~YqliKZ_zcj z6DA4yf`S1)n#-Fy$6n1?@Kvpe&RVw=`opZal_kC8H=N_>G=F); zUY@~zHc4Bh(OTxPF4|f*K!Wkge-TMeH1m;fvM(F>6GbYzx{_j5$KKwMv&n z+H&;G65Hshn@=(-FQnx;3OwsJN=@`r8{!bPZi{22^>sHRHUQ=qL8JXWqvMd^tvfNL@(+g zd_?shr~OUdC@}mqD0((A_v1z}ymi=J@U%ac5XDK*vJ=5y zro7zV4d#1B+Z6t&&jiEr~k*yOeeVN;9(UN~?FE?stM2X8P-II+| zq;h)=J=6>2r3@L86oJ4=CmMyRe#cGA=$0+-G85udz@v_NJD0W(ZzMnZt}IP6BK@+2yj*=fm*LQ7PtYLbPiK_z4y z53fD-%O=^?Ed(x`9hPm-rt1h=+(#Q+#@$bzt7CEKUbCn*`))y~yDd(DGsj`4d1ks6 zVW5rEU#QhQSK7dke0#M^>^YRSBCBwQe1- zIo6IzF34%O(4$kd?l)xovte6->~pC+vn;O`Yuyl?RieX z5#QMUnxd|N*2Zca_UmvPeJaY@Nkaaq?hp0VCG1wTGg`A0TH11a6S$9bp5s)MB?YPT zUv8)1unV3k8v=cE+xhvF0Pb2B});q|TMU-{0qoJzm2zfwAWM{^2)Osvq zxIf72JuYwgm6ygtbPLM0N_DuER+(@m8$;W+_=rB|x99rnOy#X=iBv=F7OL~o)4wrH zX+;^&gsfx_Z8bm8Gwk*)VaYK}%6dL!rcURhr2h4J+!{pK+`S5x#7CWdY>pd z(!afAtIUJ;{{YXfnPi=GbB5V;RAbD5Ax{O!OaAR?Ib3ynk6eE+J;!BrwWsJjboPNh z6g4lDTxDXjeDSx+hn20%OOrZG8r{$xg~W9D&o7GIDZpMA94PpT~430a#OCDG3&a9kg9D`6D1%0?Zsnh z_fM$OJdl=}4;p@e)mp7AxtJA9r_r}o2}kGZHIpsQ`ZPqgyFXH|8T6-+;B#^T&g76r zr#b3JcvTM+tD!sFszr4QZRF+D=byOxjcmu0PiAY4b@~(5A8AW6qbWNa0IPQ>SFt|F z*o+aXQ}1Y1`WGTr7^<>`F*U|2Or!+`;P|QZ3iMaeU#_gJRQ2pfEj@f6g-H^U3&X;7 zTrDZ(D*BJF(?wEiur;Ernv2wulq}{uipmx_KtBHf<<#z+zvMDoFTt#-2_wYvp85X( zU-#Edfyr$$Tvwhmr6)YLPC?VA_t1?dO%|@&R1)HXcN~3=s;MzrWHm)R+EnU!Z~p+8 zgWUxBk8%G1o|;>1Y4ieOzU*mcpCFX;`=X)i=sw5OS@HQCZ-o@BTb@WONVrobU}5Ig zlmV6HJb~^#^`>(q`y%nMn(pZ8n2`Xs7T=Xc3fNWj# z=b!q=r{7Qa0mKVbuTEE<84auq9>psj*&WC9&~@I>QtPslb%x~<;z2@(4j}p+6-lGD z)`?oG0mAzqeLA69(Q%1sQn$46LG@C9*HlkJwX*big?ziUXVGXoN!1h6Cf3Vr)HV%( zfte*oYfwTcDT~W_HjS!tx=V)WL_lwAHQiuke#MrXm=?X8T`*}U1XL; z#UiuIV5F)sLV@nEy~p*=slAeGOdC*E#FZ%V>Q0LG83W37gbb2WJx>D71e608KJtKhz~nn3Vvw)D%Z>4HKXrN%RXN{WMNVBD1#?(0}`pCmsI)d_UV$eI2ckJ#x$1L4-;F0QJKfUPo{# zNVw-5fe-a~f3|~r8;CYdcBG<7jL`o8snh<0Q+oIrAbiTqthsxl)wloN(He_`fdNIWtBm2?tJ4XRK=os8`#3dN}81Iim|sH&vUJq^k$_=LwPv;IMyr5jT4FdAsWBdYmT54nrcHR=l7~vB>uXK$k}y`BqH3`WmLD~ z%$DPX`uYtRhflH6Ne$gKhiKlG`>-Z31b{Gvsa^B_x}#T(?FiJ;(*o7HT-6q+mgWMu z%5%u2Cz0$9v`$KBlZCK6n_h<1RpA;=$4M9;kkY%P%@Glz#Uj#^U8}Q2W@=EkRe<7^ zz#7qxyCIfzGxa;5w@*!|?N{K-5|Fg{fKEs_)u!g2iE(C4P=|X~pC(N%P)a+jHb5F% zt(`LW=$6!aOlrDm^BhnF@{`|P16o=>i?M8Ok<=~1y0fvA^CwK#n=kJebdmKBR^asY%S9@qQ{yg4W6A?#lZ|fA0o%#DfTzP&#ZvDQClo#ZO}t?2FB-tLJJ6v}el$!o%JevB7Ihnq_*hX4(&JENo{%-Z8xAI?5f2&KZ)|>D1Qz$2GS^A zv12;bKqh1|l@(+K4HTEaDfViDy9hxP#lstvoD3t6&+DY%_pq6jWov-%iWU^0dk%Ti z^Vk%l^eeg6n+BlUiSu_ov8d#h-$f>p_G(=;x+!vLiVJN4Ir8sLb?13ATj*?zrG_j{RV0eQYyPYFlfMcUtR`bwImlyCvA;g z3yi}>Mb#nr-O0&1*%)@aGdd<}*{4BhxquD{1JvkNG(J12C$((}wdwl`UD=V&+=S~p z{C%1pMAnel?J5-(64ECt#0Lsi?%v;h6u#jn_$`2{_iZAVRAwWR)rVUsCC&m*7&-dm zL-%%`&ilJs1YJ=o5YlS2LR1_(j^%QL@1|0>pi_DRO}}QzoYX0fl&L2w1$fUIHIJ@@ zSKnbUrz?RiQr#uoWhx5w)U@GkmX|j4b5XYM7SXz;Eouo)QWCS?I5=xTSIGPMOa@-(@PBXl`4c*< z3P@>gOv;@bWF(;F03XG`=eh0A8snrVXI5LMR{l~`pf*2u;sfPSJOzHg$y$7GR12N1 zhk6}yJUPxpaRYEsLcsLTBmH%w*ljuRuaCEsdU4IkUCmgRud5e0dZnJPvsv*}IcXWuMSaLIj z%N!Eo)qFh>M=WZw8fUlNyJJ{7I zY^_1NOq%3pDe}|bZf4TUG`B-<;PZH zx-tg|C%@ZJ+f1TcB!_q@hdx=rrk(5>Spbi>xYN#My)kPWNFpmN%;nVWQoj)NR;;Nq zEoi#U$k=5ldp;{;Y3GHf{{TOpsmU~V7DY0f8odQgwCHH06-0GIlkSi89>*h5%M)|_ z*P-T|vN{qa!B~~^3tBOUP)I3B_r|9*&TCx+mra8$^vy#|rL`QaCENq~oQ-Ij**$3L zRdtw)5!h{QASY=kK0-aQ&UK=1T@!Lsl~6-S@mpajN$#W$KKS(0auH~d>uM_6|EAYV>`dQLcNN-*#3HDLg_MBYSifMg-&&( z4^7J;enULyx=0*ZLVd#!Bql7L<0F0=2ldjsLrgM@w_JF@rNNKO!{0aUzNt z>L zB!Rnc+ZyAFO9bNy=SfYW(&*tV?{F2P(@V{r#WKPoH;=#x^ul@5tJoaqxf0%&J$qU4 z(0#)A)#iw_5>1%w285cORb&yAvXlZ>`RbcuzkLBKR|629RCw_e`jf`QD5VKMQ;v1q z^c5TSFU`KHMOy_mA+f;>$lLz_@{M=iOW0ODlpVcXK_O5bNct%%{{USFo_|37svwbn z#zK6|Kat#cf9(`^DwXU8XH3>Y^Nuvu#h=R>N)gbT1Sx}{kBt) z)FGYh!+Ase#2|k&q~^AB#?TVG)Mr>>Ps)(gbbpZUQT)ya^3cheG0!UKF^aCVggN&^ zmHC^NwFY-~TJoh2sXFj;`8Afmk?Uc?v7ntQvLlq3=^&mmm1jDXx3TI+t7-a-meOBV zKC3;3wBv8&g`|f%Q?Ih$h{_7EIa-r|KQpbk>qKoPi!N6~Y2LYek72j5`+Ms`%cDDm z@CLeWnDJ?DytlTbpoN00ll1=pwv#4Z$iRW2?rSb_4B?) zMC(ZQaL$r!%qLw;2b7gK+Ce91C!IoZ)p|5?5-%>J)hYFcTP>7CN`~X=zrWL4abSs_ z`(*B(#!1~lva0l!(%DK}Qbs^lK{`Ka%IGTPKG^fo_wBkhJ$1U8!ce5{Y=z?=U-r@C zxziIRchF8{>mK%7tTK^==VHjmiH_f%mby9-ncZ$zsa23-Hll?brD4zIjB%&sGP@q8 zx1=xEtGAOiSo0~e3l27*Tf&A__t95B1nMoHR{TBQH%-rKCEN9e=AjLN=T1Na@2t7+ zZ=(1mO6<9Pbq}QR;7O*UiraDm2s=;)e!pELVb1A2^j@;!ne<{#((I{k$g3g0-X2kd z>91mRk>pctu_p7VRDNYHP~BT)z5q$@q0Uq6KW*{aE=Rp7m^ZJzeyQ~WjwsNmD8Nn%f#=&zRUZN< zq>Lg}&0M$Rc(CY;1bUIExte7a)O-wLal!Z691u7>xonlMTXv*KR+AlZm zd8?D)ctu}`9Zkzjq_o95x>aybP>B&E1MzIh(@wS7)XSYJuif;D(3v695|w8JcGREwdOwpliD>uE@^fmbsOR$%CEY%SVL)9KZyy} z?-$3sFKo+~B+-{mz0>=7s+M7vI`6gCH(3=yv~yth}Tjo9#Y(-Z1*(``!)rcrd~k)Cz43U;<8RHLKx zi}JkNDtZcBY!vcGwzV~*BkhrN^Q*I1xC3>T+;stbm4Cj6CGrk6@MyI2C=EFA#(n4i{dzP zlHdUM+22}X`1>bV>qdH;De7fJJh<*U;8zEpbybsSmmM*vQST?=wppjTmd9@{hcDFb z58(|oZ`zS*0u+bB7Dg47dg@k{K8nL~v=VK)6(WxFl^Tm{b79Xv#p$WcS2U5;Nv((u zSDOlPOpr03FdS>wNodIW>~4BMsCU)Pc1T%nDLyKJP*woXxEyHKC5m`#= zg=Es$^BaAJW?Klf;fh+NxrDcZ7Bi2gvQ<-iH6)TUYulw4EmowetsR91l;+|>P6n@! z%Et>;?9G!6)ol#@J+~`1>rKt6H_At-<2pBzGOb9lH;%T=4%WKuYP|md0_O~&w2%~% zF~+9wIb9mRcviH?@2amy*xmaQJ7vM!!$Fr|9YrRBu)xe$J6K*1;Gl&N%kg=yGML z9J*l+P0?6w6?w%i5(}B{jV^q=F}A&(jyYOG*HPkF_R3KjjXf?ok2*rZB5fp!fJ3QQr?Q9sdg^)b>(H@#_7rZYAxKDN!;JBR`s)jNWt!+J zY6^BZaVr_xHxH(nP`YR55}C15=JDb-oMepTXjgrVy&XlVITQsroaE!4H9a7gpIRiT zGTT5qfC>ZLdj6X2Byd)bSb4dqQ_Cel2Gq44{{Z19RF~giYoWz;h|-|4^DiK*ARMUY zY3x!*(D(WsH8t#--^e6OMN)Wxl9V`tK=BU*V*nHX0Mbv;A6;gqnN*rY5S|E}rdgEi zX(`A~-Vf#IN4P(IMvG6g$THEN9^X8a;3VGBCX&9&+S24un^(Ll#~1`;~vWU=qh{c=DI&tBR0g@ z480vng&{$1H|o;898c$vN6?P=)NXZ64xd4)CFOHdTx?8Qs!e!dw%l6s;+y{f0ax*l zV0j*g(^ia@`mV%qmuO|D-IU_deV3F_qlGl`aHJpbtRL&^tII^GHg!{VZ>ck>%1U1t zT65XldJ+C1+v+*e-|B%s%<>iACRX>F0S>o<<3RraJu0`c+@^z2uUb`2l~U`dLeQk) zNpKI;YRe>2)f3}V_JOnL%(D7LCaS3AUS6T6Fv{h^NgRPjg zIN`(v9j`?tN^JXq-yY-rbh@o+jn}jfnybQ^N~w~XeX+_`h4vp%c^~=PL;fuKVzrLG z0F&-(#cl;krJ=wNbT0&HDz3X|GL-r|i+V~(DU(Z-+M7F+65ilGxCi--1xj3-vNoad!d*%9SFzOoBO9o z9sd5BUCli+oWE#^xwC1`h!d1t8?f7>oPF`w{{UT8Tc2XMPtkSBQd)4TETBPeAr2n@ z0Q8?bGRvVW1}eYJVXq$7j! zs>*dc@weq zgOobcxLQxsvD0u&s3Qe!0F`~n?0+n3iMjSAesr`vOQ z)n<^5JrV-iRlNyMBZH3mvaJzoWKSt8{AtzZg>qDSIB;P;`gHaqS}D5|Ae8q9oeG_t zsIHWu3) z>tqk+H44pe%gjw7I(JlIGNRI@0DXo}^wPgFMpzggUsO=Dy|lito=SswAF8l4zr9Yj z7mMHvSL*de^qAC^8!IFG#~j`h`f>cuvSs>nGl6r*Ot@xQy+)hq;`*Fz8 zSw-Mx{c-DKw7Oc`g5zm_Zq|~cl(s!qe!kk4Zy~AD_FoT=$?|@Wn66Hu$&)mqM2AY; zJUF3&ll0a|!t1tcZAV0Oew^0oEiU3>qU)QENm0lnSFE!?hJzEn%jUq9T94sRXT>Aw zrRDM(;zaL2qrMR$J5MxI$v|Gxe_eCWl6?vGqP>qy+f5?dk4$A@3uq-OK{+6S{9pO& zpsCP!sSUxPQ{mFQWynet5O$W8%6_^kDxY9?G3ZzQiCV8r4X<%ZPYMafN4fgwWQQxT z#zjoH_rvvC;f|`DDU06M;mIGyPHd%yXrPzx= ziD^Yke3y~&X*Qe-(jdzCpC+9BJel##Sx1#4W_ zCAMa@#e-(ks`mpbF%q8vCjk9*Npmcd+bYwjap`DV>U0(i&4R(BN4e&lx(^Ie8iCTId7+0Hl=&lN70|R_x^RJvpVIO5^O_Iw92REEKJG zLw+2TvJzFaV|G8=8uL7c<>?ymrD#s-{p(Yka4l4(zjCKJAYgu4Xya>a6skH7+12SY zXh?*FVa$1f9sauW{FTDCYQ;R(j^;eva9gUngpvw$*fKip112qdGm483J8>7O@`BJ# z0#JEZ<*#Nxfo$_{s$-R*X3e+~=#2%%izbo?KgjAggx=R*Gp6sr^Rl zS{+I(Oj8+o#h?E7-(7b){Fo*?=+OFOM6{^W1$(Ga2}v0uLJG0<)YZoNW4ui*v{vgy z>(lhDOSF)~E#rU(2lDjRnT2@t%=GwJqfW0eRi~myjkpf#2h?`gk>q1>dNt#vQ?Q&0 z=vyVVEP_9tv+rKYw2>@JnGDEo65b%ZcA;72M;RZ`>$yDvErg8n>uD}4ARd1Hhy6cI z4YRbl1Zfoo2mCh(P$Tz#fF9%hwcNB8zd($#mB=41tfA(Ei9VP=>~z~gE&PS;i-iv< zbQuUpdBRi)KaE4v?nfFt_tD&2F2#np^_4c42}_I@Vz@tz9Bxn4j{g8|H9wM{@|A@e zuTW4-CRCTw=GMXvPWpjC`!GLsM55)K->5V(e4?Q z7Sm3sNDfG76tLosd{K^2uX08(eR1!k(|*cyi_KMAgw}TyG^J;r$XDOfPNWU=7lClI zF#$8#NLe0NP?5;``-AE<>XV-7^*EaNayVyFZQt=jv z5}Qjek>qthh2PIoZ?cIbK&ru%-~7XBbN+%t&_}9Ixb`|Czh$a@-%zDT5o&Asx^tYh zB?HdS`LI8pKTQW1q}^dVS~wtGrl3QsqsL2(Omp zp?i?Os964oLud+K`YZ>jwS=TZQbWXY*-*m%$Ne?hOy=|msgV)TmvYm{$w5%Z+#hkF zOF=0a5b6r?Bdsh;LE~ox{zrukC|YRccM9p__I+e*82#FaJ5}@<*9A0=nYvcefWZmoWC-|Q$e3yypy$e`X zEw5o=d@j2P%cQ*0L#f`Nlb7|lDrIZETfcncSsFL!4oKh|{OAc8O!gxY$k;CAW}0 z6jHuFF~)-CgUKAc)ltvx*=3SPWVN(@nZeU-{0q?!&Pk2snGGZV0K!Hm2kwLZg#EQx zw!Mo}FVSJCk!2v3-pNnm2^q)b-}Tmsw8+%7Kpoz~@M`iGe3-0LR<5te(lWqw|#l2PEU~q5_o4v1||yJ@wl_(g4=#jLKz9 zOaas=VMtiWKbC_^y^Nb)j7zK?B(&>nJ5Zz3kpfl;3W(utD*6yO{PC|h$?;;g=caD) z^V0q<&zde^*ve=*|Mjm|ODLf=OjOw%BWa<13EzdC7@S!B24m^qf09{*XodGT@ ztq_|cOvctv@ThM7y|vEtj#4bQdc|CWxg;mlrFi4*pt2zFWHqj?Q7KDqp3}{^t>8`DoXS=quUpfT&N%x6_q3u_v8Nn z4ynhKiE@)H-B+Ym!V4Vs#Tqa&2os6gq#C`_<;oS zKl8qxTyIA-+7r>$d2#A!Vr<1IgM!c){+iVl(VDUMvqYzLGTIQ*6zUprNgS;}XHm~C zy&5r8%Is&fZ`y1&Tyyrj1T1GIeZ95iSKL*kjf?HI+ZL}H%t_OXrAuwbl)hAxkae#W zxt_^!-DwtL+xD5JCaPqhDM|AXp2t}4$jb6LUXNNlTx$;}?57^rq10Yfku(G+k)GPD z<+O~Kj$1sbTXs4aDqN(g&^W>8Iv;l36RbGY><j@*#5Sw2vzm zl)Gimm8jAR7Ozz&zLK&|PUVjfr=|*A5gGpg9i$ZVoMRe~+U3~Qdh``$jdIjk4l=HRsy|(zvKf^ta&ga~)~UX~ z-&GlN#X6G_Z-O{cNgB@m7g{Vrw=Q~&vbwD~O{9-50U(W5a;ZdbA0|0l6>1$iiuD>| z!d5{6Do?JVlgQO<(T~SYbRt#g(Or2r7i~+INm#J=auA4^`0nb&TiTzYMoN~$~{TcAtdff z9XQvw<7d=p^E2SpY%6H>KJ|!^PiCg^Bw&>+opxNet&55l^bxAoCzP%C-BEP%InO@& z#Z>FrvSBYkYA;o;+67s0WU}M2)_5OHV9nv;x3%oqk0r|NW@f2x$c}2#+HyLSGMtTU z#GIujJi2{}*AL58Cl%ABlas**TQ#IbSHLD!t$5QH`&K-+lGqvElYxyS!SWTcQOyQG6w_%0cIiH6(WQH`DsVL}HTURKOdtgslK_ ze!91#z~bxwgrx1>vb^eM#xQrK2VC(~K01yvS|>QJ9%^?h~9v+AD%&s-GjF7Rd6_Qs-n#V;;KcqCswMX5bRZiiO5}hUE+9^3+&Z-uqbk&1Q zJW4lUk=skHA==tByJ8piVu&55Fw=)-a^iEZJII%oyDf`SFW%i=hf#p4M5<^?(r{GT zbhtcv$9vfMGR;nmuD?VT=TiRw&6XMjl@ZC;ua3B*4bLV+Z(LMcO~q3jn76!T;YsbC zCVVxSZ5@u(bTPQ{n0>d{Qk2S*fOm2Ryh=?`yImJroU|``7BV^dD1W|@qk_;XOL2nW zUO_zlG{V=i{A$6Df)=5WHzy~KKc<$nFk0Tb5X;QI5Ql_!NDcQ3WqhB$4u4%4rkEPo z!*xlvphx*yBKM@Z;pmMIS=i9w|q$Mk4FgPf9~)1 z&XqBXE?pBN$=ur5+@Xaar1A9Q(Ek80xY2t%M3JXB?58Is^7$z79c^p#sUE7&s*-(2 zr#|{s>|m>EgHma=O?e>>d0Cin2Ji4W{uA}=ewuzeLT#h3*iJ-}BTGRkS=tWMkbSZ0 zKcD5La1}*4^yw6(2V#IxxP%bB)aq}RH>6;xMdFf$bsD5L)>9BVg$>T7qq!=_t_PVa`izfpt_$=;-OWc+>59ao7%5+cX$jh+ z_u&5kEpw#7t#%uNiu6cEe424fB%SUQg)+4Jtv;V|&(}?-t(~>K5UAVJM~ecZ`z`l7 zC2J~<;rc7E{P`Z*Y2yAs`4P>!E-QV1CvnAQTy^u8R91!kQn8#LuLs{tROhAylPUbw zxmr@cVAO+e5tYD{uQ&eR@eiovdks%&nO}p2)@$uE`!1^)sVD=;i7UZS`Y#wK=%KE3 z*FvdHf~MElrV_Z`A`+AP$d8OIBi$#Eq4qjgeI3WW255Ddb;@$31h!Cxe(a@S?@1l; z>CQ*xsM_CXbp9Ax-Jea3EI7_VSSTTv3RFJ0_58Gpp@S>AXi?YV&U@wwJb3MuIF)+^ zcOPS&HzqF>8;vf5c2J#p$cj)%Ax>u`W1Yu7zg<>!OR+0(!G#sbtSTGiR4MMG%$E_B zBzx!E-%9bhefERNHTp0-i&CL(NfpaM<%EnW>T{~fRzJ#pIQ7yzTsx5R+tm|Ds;9ti zsSvHEAIQRn3r-H`Q2KvO4~?P8VqFhLSBCoVM>~P%KI7k1ifENBmKeHQnII&-gsAyc zbAWZCZ8k=wq#2W3n-jt@n@W_EhXR+6OTk@0l#)Rdj z!%~n&9YRbs6_DDSSK>#7yJ`AmIo0OcCf3i@DADJjIUGk}!{%+~k}wa@_5H2>$>h zz<(o+Qd&Yi`#p9n$4X3PJI8b3=lW^WYy|Y`)9lFkNn|0we5&MUPs>1Q1(8)lNk1~A ztv;nn{{USy+Fr$LN90u~uDX`ew5Vs!8*g#_byafx2-O`{E%#KU)hOX;QgV35m;T>P zKfcg6)|nLd$fmHF@q=R{_sC9CqDQZ&{$o{)mA=r8Ep!fA0u_*RofZ9nIzR9ELI!?mE( zq$4NPpKrE=C3V}-)S6pJQG;b)vg&PI*CS6dt-$YDz)1E3&}($@){zFQ+ctZ5s?sQM z8GzfR#}EQ`fs%BeVNpeqBm?T5M!#~p)afm)hBpF82P*#nwyBQ_htMwek!s4gWVI9I z)mT0Xc>o+Fk6+LF>gyCGvTrr|J?kPXP$I&vP$jL+iQJ?F?%nks{{U@Hl9jYu9eu~9 zAyuwHRq$1C!CFZGr7BKA`)5;avFa513B>BGSd4zlksA#JVYIAg^EyZ4yL(JUnL^V9 zK(i@#?Z9PInpcQbz)E$u95p&-JH0)Pi1gU&}d($yq@t7A(37^s%K z6fUiKIJa@;9v}lhZDww_(kQrzeMb2UQH0YW%klS|1p%Ej;dZt<%fX4VF6*Kke*sRc zvaUR*fHmK`wOk2y5(|G)YDTON(kf*#Ax0qmAw<3wNKb)BqyXer7EDW z5Pl>9&)-r|pJTggqQn{-6(ye@VlspH2;}PW+?ncCb`QEB!;S+cFeDxnb*ePc2h##O z^Uk(n)7vOtY$Z85j$I;{`wLpu{bAOX{h^YivyM5&N7q1z#SoervIwim8-+SR`*fwIdfSQr2&JnOLd^@tfV{l*T>A=$!ggdm|R z$RKw7wXrRt9JI=p75g!U*B*?=l_Q<4_tJf&-(!8wx)G~&TcY4!$<1MCB>4i7-&WQ* z?J-v9n%A=@!a}FjAunos9ft!`rxo&d(m0h=!1*1z?T3yT{23_mb#4TWm|q}vUxc?mh~Qu7-Ppv^7azyjT)gY z*ZGPpbS61Sz)yT@KZ(ib)Al!!rH`XKvXGj6MJtx}-$fIzpvNsE$*SyVyP+bZ4Gz<* z0bqhAlj-x74lzAiT ztsK#lgLSg4IfkopRG4flB>6xYI$Fw-+buY$`VLdNbvD&MwN&s+u6_iQ-`8GNUnVlW zN$6w2So>kYaT{KksnsaWtxhL`c{%p_Y9G72)uh9D6fVT7r%~%QFzYnhLO@^PCGq|g=(RyIhAX4B`U@eq9wXN0Xdd^gWPk*9E^5a~_(`8ob5}A@;apf;@ z$x@Dn`a9$+2H;Z@8d@JMg)ek>hyMUA!RUU6{eHS#_7&`7rdFc1R`S_VjN#il8V(C* z{7KGu&tvJ>`W;a;E|6XwZ7|Y`eCL$>QUapNX<1ui(4_i+e}^EBa7LL^OF(n-k1Ouf zK3VF-3ZKlYKl2gYJAta{{ZsVGDqja{>KOFt`<+v%ZF0iK9w*s z@=nzyISDHEAo7Fv_L4H8^#k#J$3J~ay$-#Bn-gQB zz^2vR2;IbUB}ht$_5|!F=x~0T8)16cGj|lYt}O)~63G4QTL23BlpF*3XsT!peuaoP zdr--a94(<=i7lgY5B*H9`lm%bfudBzr&pPBR49x*mQGe;Ekq;hxA7zN<4dOZqqn1h zCu?CQqc9`TxbKLc{{S1m>NE%Rh$?a;%ZR35b@wozBAZHAgZAL-pJK0Mc5tXNveYPY zn~tHiP6+u}FT`;^P+_cGx zX-UGR7V;DK1JmoFSX$db=b~Dz;U<=#ZP$ow4hv@+lkA`I4NGo)9Q*cPvUR`5%2 zk>fEjouydpLXZd~e~SZy-&x$f=%)GvOAukaA+AYEH-xsLcYTINe_a-|FC;@!iy{Mt zQqjGW!$@pfE;sjMt;7UZhPofw0>d`in8PDnUPTIQ;at8-fEyIdt|;X{MKI=(uao#>8C zZfT&z24GHJ%5-Kz2P@iz0-x1d(JgPH9sH7h*k+d`!fn)+bLdIfe_nNItq9hR>QkSL zz;Zkm-ee~y!gC4(+-HqhQ9UpV)ff`;#8x&fT$DP13Vy@=wMnJ0HTs{LX+v|RI0FN} zbE>Kmmq%|lHg3*7$5l-PY<>D>ELO!a`f46N_ML$BSmF(I2AJJQfsLcz35?M_(qlBHK01nvJynZXL z{t0CA=O0OSH1*%4mQ$89%~NWOiBZsU5TFW=+gl^WnD4VCc{ObL(%P}Bbc80cA`^~= z)^JZ8XuLH($LBB5%YVC1HmeLQ=lRB!3D1x;s*sQf-UfJE7BSQ^hmIMsliL^T)s!+(R%mzN4RZz-+?G*I#rJoc5|vV#cdFaR`kZ(2dCC$ znIXE2si38@H-JC@{{XI_vr``NNhe!6msCp$kzrJn7zrDe-T=q`dg|EfDfUXSw6NR9fJB;;>yo3CpAh%ec_hH38~u){CY$s1nF?EgWhp*jpTF|gJc-tj+!|YDG|^2? z3ywJG322<>f;5$ri_y~#md-6z$B8V6`EVzNq;s85F5HyH_^|VG8l6(x4H!`$gr^^_ zrH)xjq~Av|Y>D$OM26;;lC^oTc*e9TX>6AE%}Tk@AxN~_x}B;p`V!XVCmAGvzN0tE z=@od=?U}XS^%|K*U0RNE@E^jQbM5ufaZjczs9ngZPp{Xm%5tL0VQ5YW-HdUeI8uEE zvi_iG-4Bsksj0zGDJ0~L+NDng*);jSjen!R4A5k-r`?j0usGY!59hBd$@3m6(mf0w zFWjB6E3Q*(T`aCH8%=o4r0vR6jO%BMndXg|e2jl>v?5db%UP%?Ex@6;rS9#GYjOO{ zyqh$>pBkOygsjp_PX+MVMpO^i+gQAq;+ss@g0}QO)m)oxQ#4!vR4@~Wp%2fNV?o+ExqJR>Pmn{0OwxB%lT$Et!#Q#_YSiisR^ZRSQ$IJjaf-9 zZ6b{8il+RAnu^%UlmJOOd2=k4)l)Yr9ic_5*gyPHmQy6QImq_<>NTHCw8rGm>3u(> zL9eOW-9QNGUOC_qqx;V;k^;e}wn0gab#)#YQ;ayIAvr2v7#fLng$$GJtsI>SmV|L}UT@S)`XwdRFcpyI(sTN0xXbCC%U+FlrB`k3T&Fu0 zbvGFRziY6E9c<%b0MaMA(CS)^=)z{wTdr)XO9DER_)?SGT=6D4$l4*VT-OL~ z6t`wLty9>#5wAk}*^n%g2Eb~>7A!&ERDpti~(?ioXqOi$rwT|w$iW^JqTu^(2{Cxij&Jv7lXHM6Rox)*Hj zvrM(9PCY4KyddvRF`YHab`Dg~PMg%om3lk%cy%DB-Q*wvkbQqWEkfRqS0uYMUx&+v zWl5)MD|j7;Ah?cjIKj@ac`~=fny@y%Ak|jy%{a&)H`ge v$%kURc*^CG;z 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 Iboq`Jf>X=f{2K2WKKW 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≺=S@1Lxnk1O(?h+Nb=kA-x_v5{ZMx+} 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 max_simulated_time: + break + + video_frame = DUCK_FLAG_FRAMES[send_frame_num % len(DUCK_FLAG_FRAMES)] + video_frame.pts = pts_timestamp + video_frame.time_base = VIDEO_TIME_BASE + + start = time.perf_counter() + + force_keyframe = (send_frame_num % FORCE_KEYFRAME_EVERY_N) == 0 + if force_keyframe: + print("Forcing keyframe") + + _mid_encoding_video_packets, timestamp = video_encoder.encode( + video_frame, force_keyframe=force_keyframe + ) + print(f"Encoding took {1000*(time.perf_counter() - start):0.2f} ms") + + start = time.perf_counter() + wire_packet_bytes = [] + for i, payload in enumerate(_mid_encoding_video_packets): + outgoing_packet = RtpPacket( + payload_type=VP8_CODEC.payloadType, + sequence_number=sequence_number, + timestamp=timestamp, + ) + outgoing_packet.ssrc = _ssrc + outgoing_packet.payload = payload + outgoing_packet.marker = (i == len(_mid_encoding_video_packets) - 1) and 1 or 0 + + # set header extensions + outgoing_packet.extensions.abs_send_time = ( + current_ntp_time() >> 14 + ) & 0x00FFFFFF + + outgoing_packet_bytes = outgoing_packet.serialize() + wire_packet_bytes.append(outgoing_packet_bytes) + + sequence_number = uint16_add(sequence_number, 1) + + print(f"Outgoing serialization took {1000*(time.perf_counter() - start):0.2f} ms") + print( + f"Total frame size kb: {(sum(len(packet) for packet in wire_packet_bytes))/1000:0.2f}" + ) + + start = time.perf_counter() + received_video_frames: list[VideoFrame] = [] + for incoming_packet_bytes in wire_packet_bytes: + if random.random() < 0.01: + print("\n\n\nSIMULATED DROPPED PACKET\n\n\n") + continue + incoming_rtp_packet = RtpPacket.parse(incoming_packet_bytes) + try: + if incoming_rtp_packet.payload: + incoming_rtp_packet._data = vp8_depayload(incoming_rtp_packet.payload) + else: + print("PACKET HAS NO PAYLOAD") + incoming_rtp_packet._data = b"" + except ValueError as exc: + raise ValueError(f"x RTP payload parsing failed: {exc}") + + # try to re-assemble encoded frame + pli_flag, encoded_frame = _jitter_buffer.add(incoming_rtp_packet) + + # if we have a complete encoded frame, decode it + if encoded_frame is not None: + received_video_frames.extend(video_decoder.decode(encoded_frame)) + received_frame_num += 1 + + print(f"Decoding took {1000*(time.perf_counter() - start):0.2f} ms") + + start = time.perf_counter() + for frame in received_video_frames: + plt.clf() + plt.imshow(frame.to_ndarray(format="rgb24")) + print(f"Plotting took {1000*(time.perf_counter() - start):0.2f} ms") + + start = time.perf_counter() + plt.pause(VIDEO_PTIME / 100) + plt.draw() + print(f"Drawing took {1000*(time.perf_counter() - start):0.2f} ms") + + pts_timestamp += int(VIDEO_PTIME * VIDEO_CLOCK_RATE) diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..a40acc6 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1085 @@ +# This file is automatically @generated by Poetry 1.8.1 and should not be changed by hand. + +[[package]] +name = "av" +version = "12.1.0" +description = "Pythonic bindings for FFmpeg's libraries." +optional = false +python-versions = ">=3.8" +files = [ + {file = "av-12.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0df2ad330ccf63ed8192d637306f13123cdf1c06717168d1de8b9a084d62f70"}, + {file = "av-12.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e66ad48dc3f618cf4a75cc14dd7e119d1151ff3c13b9b064014c79bad20df85"}, + {file = "av-12.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e8fbbe3cffd04dcbfaf7f9e0469c8c9d3ae962728487aae0dbbac9ebb62567"}, + {file = "av-12.1.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c24d21b116e3af45e2f4b3a7ff1c96ae9a266bcde33a689ace0c52888e74d9"}, + {file = "av-12.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1eff59d1eb0ba263e9efe8e460ca239c6ee2285f1b92c6b3c64f002c1b2ffd56"}, + {file = "av-12.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:09f8bd1fd124e389a266c770d209b5b4333f69c4b5a66b9aa2d09a561b0b54ab"}, + {file = "av-12.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e4c409639699d75e85a5b4b9fbb0538388bb009c8b426f7976b218731815e645"}, + {file = "av-12.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f624a61d8062bb7128a4b0af018ef5c7642acff2af7cea1bb6cc5aa663954b77"}, + {file = "av-12.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:73c61635e959dd50857f1ae3ad28984ce813688262672a5188376686dd293333"}, + {file = "av-12.1.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f8dcf20ecdfed62cb8b31790d3f394c76f05d5d58d5cc516f7b37c8608b78e2"}, + {file = "av-12.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebb11aba1ef2acb945713be5f4f7a359439230dc566243c354dddb2b06361367"}, + {file = "av-12.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a309994db77f632b606fe22c5bac03302e3dbe48d53c195abc435ccc56192746"}, + {file = "av-12.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:08401e59a9e33a42511d28cf1fdc570c31d3416426a2d73f4f4aaaaca5945c54"}, + {file = "av-12.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:efd45e3aa1e478ccbaafd84baf7d95d660b9cef30d850816129fd37d76813589"}, + {file = "av-12.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ab553ce72c631477181d6c08c6e710afa44fa3452e61b82d9a75be07b1b2fef"}, + {file = "av-12.1.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:555f3240306ff02169ff209b152f97b071b57957868c3004c65e25c28130d593"}, + {file = "av-12.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07706499489f2047b54a4675dd04e2cf88322caef904b7b6eb03f480e682cf15"}, + {file = "av-12.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f669f5fb2515e9a4c9ee05b24ffbe3168d33c241bda93c84c8e384ca682a5cde"}, + {file = "av-12.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:876302ee793a457a03c4faa8281012671bb52dec843062bec59d6f0ae3735ba6"}, + {file = "av-12.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e6ad88e1e61e65c69d92ff1db8826686f913f147b427c99aa3202b027e766128"}, + {file = "av-12.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49a8f88b26d3d25140633a8ec48328a9467bbe001d01c54472394484cdb60b10"}, + {file = "av-12.1.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:97873f344344b9b6aef786b22b57fb42c6eaa4ea0798d2020c5ed061f29ab3d6"}, + {file = "av-12.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdf4c54354580abbea9390e23a471a346e9a4b4ca19c6929ad11a59d525e2ad3"}, + {file = "av-12.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:dc1a82e7d43495be6d34b50fd917989a72de7c3a7434d8ec72af0952c1ad4ea3"}, + {file = "av-12.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:41d13494401bd3968255f7f9af2af203c30b684efc5a7ed92ebe9ec37f9f9264"}, + {file = "av-12.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc36f7b74e88db8e73fa69dc869331da74abc4f034ecd55f85f6232fcdddca60"}, + {file = "av-12.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff7a43ce921f2cc3c794810b148c4fa2cfd7ff10f4404072c94cf57b39b13d"}, + {file = "av-12.1.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce02915698d605c19c372314b7894033a451e838300d0a45c2708a550044e2d1"}, + {file = "av-12.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eadd5c7c374c9ff889a9116802cdda7ef9d574b623338f4045effc0f3f3c2cbc"}, + {file = "av-12.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:f32893849fe34300f3cec51c4ae71c45b0acac448d36336d3452a5bb4f7e11bf"}, + {file = "av-12.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0a2a8693fdaa3bbb00255cda388f110f7a0b00817470a8cd8f1aa5c8dcbc3c9"}, + {file = "av-12.1.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:615f440856cbc5b96b8ae52c75ba722f082b898c3ab837eae024a06a0914e8a6"}, + {file = "av-12.1.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257fe519b0ffb4e900b737515137fb9ae0490edca7d70818b6c71c3cd79994ca"}, + {file = "av-12.1.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04afe8f9005bb42f95717bcfbb22a8950b4b942a862444edb1f0bab71ea702e9"}, + {file = "av-12.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63cbeaedc0184094b7d36bd4267cd61e6c69c18cb3464cc726ce6a8a438ac87a"}, + {file = "av-12.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0a0e056baa87037f932d12de3d3f258cbc4284d18d85099ccd845b333ac1bb91"}, + {file = "av-12.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:7d549c2e6e9035022ea2280b781150a8c81acc4a03c69bde20b2f53262041a88"}, + {file = "av-12.1.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b1e02715cbb985b0efe6b6aaf134f9d1fee760822a07fd19e995a8e461909f4"}, + {file = "av-12.1.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b348264ba26152d7b06f2aaf0b2a11c90b13c628a447f6daa2a6770b9443fb0"}, + {file = "av-12.1.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6a3b3e4138cd1977f14e3d16c5f89979de8efa251d7558e2dc10a51cfcc0100"}, + {file = "av-12.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:105b017958eb5b6a128a5399200a4ec2b1040c2047e0b5f5e3714cd64fe7046e"}, + {file = "av-12.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:00596e53db3082193142e32fbdf47349724221de117645b0ed8fcaaec508adf4"}, + {file = "av-12.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed7c48d2d79961d70ea59f44fcff453bb2444a152793f80d2ceaa17af4331b9c"}, + {file = "av-12.1.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d2c486adf83fc5b8e444efcc32f3eef27eefd6d0966ef68607d41205adcd8ec0"}, + {file = "av-12.1.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe9475dd2c8bea47338d5e90d6a45a28930d0fe3820ed2d3d09dfbb3316d476"}, + {file = "av-12.1.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0130a8391aa258eee60da3c09d69eb5c9480f14a9f1b1b5312336bac879edd2a"}, + {file = "av-12.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:669f206cfdd5696d0edf2c81c5d220acc40b4153b71cf6662618c376e00b6d3a"}, + {file = "av-12.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e322533f585c2e8df07aa708c594fcb67f5f27a2f8b4107a7e6a6f90606190c7"}, + {file = "av-12.1.0.tar.gz", hash = "sha256:67adab9fdabcb8a86bd542787196580e38ed4132331ee9e82234b23cea9546b3"}, +] + +[[package]] +name = "black" +version = "22.12.0" +description = "The uncompromising code formatter." +optional = false +python-versions = ">=3.7" +files = [ + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, +] + +[package.dependencies] +click = ">=8.0.0" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "cfgv" +version = "3.4.0" +description = "Validate configuration and produce human readable error messages." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9"}, + {file = "cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "contourpy" +version = "1.2.1" +description = "Python library for calculating contours of 2D quadrilateral grids" +optional = false +python-versions = ">=3.9" +files = [ + {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, + {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, + {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, + {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, + {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, + {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, + {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, + {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, + {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, + {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, + {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, +] + +[package.dependencies] +numpy = ">=1.20" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] + +[[package]] +name = "cycler" +version = "0.12.1" +description = "Composable style cycles" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, +] + +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "distlib" +version = "0.3.8" +description = "Distribution utilities" +optional = false +python-versions = "*" +files = [ + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, +] + +[[package]] +name = "filelock" +version = "3.13.4" +description = "A platform independent file lock." +optional = false +python-versions = ">=3.8" +files = [ + {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, + {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] + +[[package]] +name = "flake8" +version = "6.1.0" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"}, + {file = "flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.11.0,<2.12.0" +pyflakes = ">=3.1.0,<3.2.0" + +[[package]] +name = "fonttools" +version = "4.53.0" +description = "Tools to manipulate font files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fonttools-4.53.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20"}, + {file = "fonttools-4.53.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6"}, + {file = "fonttools-4.53.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9"}, + {file = "fonttools-4.53.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca"}, + {file = "fonttools-4.53.0-cp310-cp310-win32.whl", hash = "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068"}, + {file = "fonttools-4.53.0-cp310-cp310-win_amd64.whl", hash = "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec"}, + {file = "fonttools-4.53.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161"}, + {file = "fonttools-4.53.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6"}, + {file = "fonttools-4.53.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e"}, + {file = "fonttools-4.53.0-cp311-cp311-win32.whl", hash = "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005"}, + {file = "fonttools-4.53.0-cp311-cp311-win_amd64.whl", hash = "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a"}, + {file = "fonttools-4.53.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06"}, + {file = "fonttools-4.53.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109"}, + {file = "fonttools-4.53.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2"}, + {file = "fonttools-4.53.0-cp312-cp312-win32.whl", hash = "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea"}, + {file = "fonttools-4.53.0-cp312-cp312-win_amd64.whl", hash = "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12"}, + {file = "fonttools-4.53.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce"}, + {file = "fonttools-4.53.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206"}, + {file = "fonttools-4.53.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd"}, + {file = "fonttools-4.53.0-cp38-cp38-win32.whl", hash = "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"}, + {file = "fonttools-4.53.0-cp38-cp38-win_amd64.whl", hash = "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac"}, + {file = "fonttools-4.53.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1"}, + {file = "fonttools-4.53.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64"}, + {file = "fonttools-4.53.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0"}, + {file = "fonttools-4.53.0-cp39-cp39-win32.whl", hash = "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9"}, + {file = "fonttools-4.53.0-cp39-cp39-win_amd64.whl", hash = "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2"}, + {file = "fonttools-4.53.0-py3-none-any.whl", hash = "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4"}, + {file = "fonttools-4.53.0.tar.gz", hash = "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "pycairo", "scipy"] +lxml = ["lxml (>=4.0)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=15.1.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "identify" +version = "2.5.35" +description = "File identification library for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, + {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, +] + +[package.extras] +license = ["ukkonen"] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "kiwisolver" +version = "1.4.5" +description = "A fast implementation of the Cassowary constraint solver" +optional = false +python-versions = ">=3.7" +files = [ + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, + {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, + {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, + {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, + {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, + {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, + {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, + {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, + {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, + {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, + {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, + {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, + {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, + {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, + {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, + {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, + {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, + {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, + {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, + {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, + {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, + {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, + {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, + {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, +] + +[[package]] +name = "matplotlib" +version = "3.9.0" +description = "Python plotting package" +optional = false +python-versions = ">=3.9" +files = [ + {file = "matplotlib-3.9.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2bcee1dffaf60fe7656183ac2190bd630842ff87b3153afb3e384d966b57fe56"}, + {file = "matplotlib-3.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3f988bafb0fa39d1074ddd5bacd958c853e11def40800c5824556eb630f94d3b"}, + {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe428e191ea016bb278758c8ee82a8129c51d81d8c4bc0846c09e7e8e9057241"}, + {file = "matplotlib-3.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaf3978060a106fab40c328778b148f590e27f6fa3cd15a19d6892575bce387d"}, + {file = "matplotlib-3.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e7f03e5cbbfacdd48c8ea394d365d91ee8f3cae7e6ec611409927b5ed997ee4"}, + {file = "matplotlib-3.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:13beb4840317d45ffd4183a778685e215939be7b08616f431c7795276e067463"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:063af8587fceeac13b0936c42a2b6c732c2ab1c98d38abc3337e430e1ff75e38"}, + {file = "matplotlib-3.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9a2fa6d899e17ddca6d6526cf6e7ba677738bf2a6a9590d702c277204a7c6152"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:550cdda3adbd596078cca7d13ed50b77879104e2e46392dcd7c75259d8f00e85"}, + {file = "matplotlib-3.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76cce0f31b351e3551d1f3779420cf8f6ec0d4a8cf9c0237a3b549fd28eb4abb"}, + {file = "matplotlib-3.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c53aeb514ccbbcbab55a27f912d79ea30ab21ee0531ee2c09f13800efb272674"}, + {file = "matplotlib-3.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5be985db2596d761cdf0c2eaf52396f26e6a64ab46bd8cd810c48972349d1be"}, + {file = "matplotlib-3.9.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:c79f3a585f1368da6049318bdf1f85568d8d04b2e89fc24b7e02cc9b62017382"}, + {file = "matplotlib-3.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bdd1ecbe268eb3e7653e04f451635f0fb0f77f07fd070242b44c076c9106da84"}, + {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d38e85a1a6d732f645f1403ce5e6727fd9418cd4574521d5803d3d94911038e5"}, + {file = "matplotlib-3.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a490715b3b9984fa609116481b22178348c1a220a4499cda79132000a79b4db"}, + {file = "matplotlib-3.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8146ce83cbc5dc71c223a74a1996d446cd35cfb6a04b683e1446b7e6c73603b7"}, + {file = "matplotlib-3.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:d91a4ffc587bacf5c4ce4ecfe4bcd23a4b675e76315f2866e588686cc97fccdf"}, + {file = "matplotlib-3.9.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:616fabf4981a3b3c5a15cd95eba359c8489c4e20e03717aea42866d8d0465956"}, + {file = "matplotlib-3.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cd53c79fd02f1c1808d2cfc87dd3cf4dbc63c5244a58ee7944497107469c8d8a"}, + {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06a478f0d67636554fa78558cfbcd7b9dba85b51f5c3b5a0c9be49010cf5f321"}, + {file = "matplotlib-3.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81c40af649d19c85f8073e25e5806926986806fa6d54be506fbf02aef47d5a89"}, + {file = "matplotlib-3.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52146fc3bd7813cc784562cb93a15788be0b2875c4655e2cc6ea646bfa30344b"}, + {file = "matplotlib-3.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:0fc51eaa5262553868461c083d9adadb11a6017315f3a757fc45ec6ec5f02888"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bd4f2831168afac55b881db82a7730992aa41c4f007f1913465fb182d6fb20c0"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:290d304e59be2b33ef5c2d768d0237f5bd132986bdcc66f80bc9bcc300066a03"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ff2e239c26be4f24bfa45860c20ffccd118d270c5b5d081fa4ea409b5469fcd"}, + {file = "matplotlib-3.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:af4001b7cae70f7eaacfb063db605280058246de590fa7874f00f62259f2df7e"}, + {file = "matplotlib-3.9.0.tar.gz", hash = "sha256:e6d29ea6c19e34b30fb7d88b7081f869a03014f66fe06d62cc77d5a6ea88ed7a"}, +] + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.3.1" +numpy = ">=1.23" +packaging = ">=20.0" +pillow = ">=8" +pyparsing = ">=2.3.1" +python-dateutil = ">=2.7" + +[package.extras] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mypy" +version = "1.9.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, + {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, + {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, + {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, + {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, + {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, + {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, + {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, + {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, + {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, + {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, + {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, + {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, + {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, + {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, + {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, + {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, + {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, + {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, + {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, + {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, + {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, + {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nodeenv" +version = "1.8.0" +description = "Node.js virtual environment builder" +optional = false +python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +files = [ + {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, + {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, +] + +[package.dependencies] +setuptools = "*" + +[[package]] +name = "numpy" +version = "1.26.4" +description = "Fundamental package for array computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0"}, + {file = "numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4"}, + {file = "numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a"}, + {file = "numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2"}, + {file = "numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07"}, + {file = "numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71"}, + {file = "numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e"}, + {file = "numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a"}, + {file = "numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a"}, + {file = "numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20"}, + {file = "numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218"}, + {file = "numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b"}, + {file = "numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a"}, + {file = "numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0"}, + {file = "numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110"}, + {file = "numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c"}, + {file = "numpy-1.26.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764"}, + {file = "numpy-1.26.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd"}, + {file = "numpy-1.26.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c"}, + {file = "numpy-1.26.4-cp39-cp39-win32.whl", hash = "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6"}, + {file = "numpy-1.26.4-cp39-cp39-win_amd64.whl", hash = "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c"}, + {file = "numpy-1.26.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0"}, + {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, +] + +[[package]] +name = "opencv-python" +version = "4.9.0.80" +description = "Wrapper package for OpenCV python bindings." +optional = false +python-versions = ">=3.6" +files = [ + {file = "opencv-python-4.9.0.80.tar.gz", hash = "sha256:1a9f0e6267de3a1a1db0c54213d022c7c8b5b9ca4b580e80bdc58516c922c9e1"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_10_16_x86_64.whl", hash = "sha256:7e5f7aa4486651a6ebfa8ed4b594b65bd2d2f41beeb4241a3e4b1b85acbbbadb"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:71dfb9555ccccdd77305fc3dcca5897fbf0cf28b297c51ee55e079c065d812a3"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b34a52e9da36dda8c151c6394aed602e4b17fa041df0b9f5b93ae10b0fcca2a"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4088cab82b66a3b37ffc452976b14a3c599269c247895ae9ceb4066d8188a57"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-win32.whl", hash = "sha256:dcf000c36dd1651118a2462257e3a9e76db789a78432e1f303c7bac54f63ef6c"}, + {file = "opencv_python-4.9.0.80-cp37-abi3-win_amd64.whl", hash = "sha256:3f16f08e02b2a2da44259c7cc712e779eff1dd8b55fdb0323e8cab09548086c0"}, +] + +[package.dependencies] +numpy = [ + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, +] + +[[package]] +name = "packaging" +version = "24.0" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, +] + +[[package]] +name = "pillow" +version = "10.3.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "platformdirs" +version = "4.2.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, +] + +[package.extras] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] + +[[package]] +name = "pre-commit" +version = "2.21.0" +description = "A framework for managing and maintaining multi-language pre-commit hooks." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pre_commit-2.21.0-py2.py3-none-any.whl", hash = "sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad"}, + {file = "pre_commit-2.21.0.tar.gz", hash = "sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658"}, +] + +[package.dependencies] +cfgv = ">=2.0.0" +identify = ">=1.0.0" +nodeenv = ">=0.11.1" +pyyaml = ">=5.1" +virtualenv = ">=20.10.0" + +[[package]] +name = "pycodestyle" +version = "2.11.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycodestyle-2.11.1-py2.py3-none-any.whl", hash = "sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67"}, + {file = "pycodestyle-2.11.1.tar.gz", hash = "sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f"}, +] + +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + +[[package]] +name = "pyflakes" +version = "3.1.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"}, + {file = "pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"}, +] + +[[package]] +name = "pyparsing" +version = "3.1.2" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "setuptools" +version = "69.5.1" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "types-cffi" +version = "1.16.0.20240331" +description = "Typing stubs for cffi" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-cffi-1.16.0.20240331.tar.gz", hash = "sha256:b8b20d23a2b89cfed5f8c5bc53b0cb8677c3aac6d970dbc771e28b9c698f5dee"}, + {file = "types_cffi-1.16.0.20240331-py3-none-any.whl", hash = "sha256:a363e5ea54a4eb6a4a105d800685fde596bc318089b025b27dee09849fe41ff0"}, +] + +[package.dependencies] +types-setuptools = "*" + +[[package]] +name = "types-setuptools" +version = "70.0.0.20240524" +description = "Typing stubs for setuptools" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-setuptools-70.0.0.20240524.tar.gz", hash = "sha256:e31fee7b9d15ef53980526579ac6089b3ae51a005a281acf97178e90ac71aff6"}, + {file = "types_setuptools-70.0.0.20240524-py3-none-any.whl", hash = "sha256:8f5379b9948682d72a9ab531fbe52932e84c4f38deda570255f9bae3edd766bc"}, +] + +[[package]] +name = "typing-extensions" +version = "4.11.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, +] + +[[package]] +name = "virtualenv" +version = "20.25.1" +description = "Virtual Python Environment builder" +optional = false +python-versions = ">=3.7" +files = [ + {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, + {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, +] + +[package.dependencies] +distlib = ">=0.3.7,<1" +filelock = ">=3.12.2,<4" +platformdirs = ">=3.9.1,<5" + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] + +[metadata] +lock-version = "2.0" +python-versions = "^3.10" +content-hash = "e4d8b8424f210a60567ba773a5d839e46fdfcbaf7c0998cc28837fc3f41fa40d" diff --git a/poetry_scripts.py b/poetry_scripts.py new file mode 100644 index 0000000..9b7d37d --- /dev/null +++ b/poetry_scripts.py @@ -0,0 +1,24 @@ +import subprocess + + +def isort() -> None: + subprocess.run(["isort", "."], check=True) + + +def black() -> None: + subprocess.run(["black", "."], check=True) + + +def flake8() -> None: + subprocess.run(["flake8"], check=True) + + +def mypy() -> None: + subprocess.run(["mypy", "."], check=True) + + +def style() -> None: + isort() + black() + flake8() + mypy() diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..25812e7 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,46 @@ +[tool.poetry] +name = "vpx-rtp-py" +version = "0.0.1" +description = "asyncio client library for tcp modbus devices" +authors = ["Josh Gruenstein "] +license = "MIT" +readme = "README.md" +packages = [{include = "vpx_rtp"}] +include = ["vpx_rtp/*", "*.so","*.o"] # include cffi compiled files as otherwise gitignored + +[tool.poetry.dependencies] +python = "^3.10" +av = "^12.1.0" + +[tool.poetry.dev-dependencies] +flake8 = "^6.0.0" +isort = "^5.10.1" +black = "^22.3.0" +mypy = "^1.7.0" +pre-commit = "^2.19.0" + +[tool.poetry.group.dev.dependencies] +matplotlib = "^3.9.0" +opencv-python = "^4.9.0.80" +numpy = "^1.26.4" +types-cffi = "^1.16.0.20240331" +cffi = "^1.16.0" + +[build-system] +requires = ["poetry-core", "cffi"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry.scripts] +style = "poetry_scripts:style" + +[tool.semantic_release] +version_variables = ["vpx_rtp/__init__.py:__version__"] +version_toml = ["pyproject.toml:tool.poetry.version"] +build_command = "pip install poetry cffi && poetry build" + +[tool.isort] +profile = "black" + +[tool.poetry.build] +generate-setup-file = false +script = "build_cffi_bindings.py" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..5a12770 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,21 @@ +[flake8] +# Recommend matching the black line length (default 88), +# rather than using the flake8 default of 79: +max-line-length = 120 +extend-ignore = + # See https://github.com/PyCQA/pycodestyle/issues/373 + E203, +# artifically low for testing purpose +max-definition-positional-args = 3 + +[black] +line-length = 120 + +[mypy] +; plugins = numpy.typing.mypy_plugin +; ignore_missing_imports = True +disallow_untyped_defs = True +namespace_packages = True + +[mypy-flake8.options.manager.*] +ignore_missing_imports = True diff --git a/vpx_rtp/__init__.py b/vpx_rtp/__init__.py new file mode 100644 index 0000000..f102a9c --- /dev/null +++ b/vpx_rtp/__init__.py @@ -0,0 +1 @@ +__version__ = "0.0.1" diff --git a/vpx_rtp/clock.py b/vpx_rtp/clock.py new file mode 100644 index 0000000..00c8ebc --- /dev/null +++ b/vpx_rtp/clock.py @@ -0,0 +1,29 @@ +import datetime + +NTP_EPOCH = datetime.datetime(1900, 1, 1, tzinfo=datetime.timezone.utc) + + +def current_datetime() -> datetime.datetime: + return datetime.datetime.now(datetime.timezone.utc) + + +def current_ms() -> int: + delta = current_datetime() - NTP_EPOCH + return int(delta.total_seconds() * 1000) + + +def current_ntp_time() -> int: + return datetime_to_ntp(current_datetime()) + + +def datetime_from_ntp(ntp: int) -> datetime.datetime: + seconds = ntp >> 32 + microseconds = ((ntp & 0xFFFFFFFF) * 1000000) / (1 << 32) + return NTP_EPOCH + datetime.timedelta(seconds=seconds, microseconds=microseconds) + + +def datetime_to_ntp(dt: datetime.datetime) -> int: + delta = dt - NTP_EPOCH + high = int(delta.total_seconds()) + low = round((delta.microseconds * (1 << 32)) // 1000000) + return (high << 32) | low diff --git a/vpx_rtp/codecs/_vpx.pyi b/vpx_rtp/codecs/_vpx.pyi new file mode 100644 index 0000000..9991e61 --- /dev/null +++ b/vpx_rtp/codecs/_vpx.pyi @@ -0,0 +1,4 @@ +from typing import Any + +ffi: Any +lib: Any diff --git a/vpx_rtp/codecs/vpx.py b/vpx_rtp/codecs/vpx.py new file mode 100644 index 0000000..c5f1c93 --- /dev/null +++ b/vpx_rtp/codecs/vpx.py @@ -0,0 +1,415 @@ +import fractions +import multiprocessing +import random +from struct import pack, unpack_from +from typing import List, Tuple, Type, TypeVar, cast + +from av import VideoFrame +from av.frame import Frame +from av.packet import Packet + +from vpx_rtp.codecs._vpx import ffi, lib +from vpx_rtp.jitterbuffer import JitterFrame +from vpx_rtp.rtcrtpparameters import RTCRtpCodecParameters + +VIDEO_CLOCK_RATE = 90000 +VIDEO_TIME_BASE = fractions.Fraction(1, VIDEO_CLOCK_RATE) + +DEFAULT_BITRATE = 500000 # 500 kbps +MIN_BITRATE = 250000 # 250 kbps +MAX_BITRATE = 1500000 # 1.5 Mbps + +MAX_FRAME_RATE = 30 +PACKET_MAX = 1300 + +DESCRIPTOR_T = TypeVar("DESCRIPTOR_T", bound="VpxPayloadDescriptor") + +VP8_CODEC = RTCRtpCodecParameters( + mimeType="video/VP8", clockRate=VIDEO_CLOCK_RATE, payloadType=100 +) + + +def convert_timebase( + pts: int, from_base: fractions.Fraction, to_base: fractions.Fraction +) -> int: + if from_base != to_base: + pts = int(pts * from_base / to_base) + return pts + + +def number_of_threads(pixels: int, cpus: int) -> int: + if pixels >= 1920 * 1080 and cpus > 8: + return 8 + elif pixels > 1280 * 960 and cpus >= 6: + return 3 + elif pixels > 640 * 480 and cpus >= 3: + return 2 + else: + return 1 + + +class VpxPayloadDescriptor: + def __init__( + self, + partition_start, + partition_id, + picture_id=None, + tl0picidx=None, + tid=None, + keyidx=None, + ) -> None: + self.partition_start = partition_start + self.partition_id = partition_id + self.picture_id = picture_id + self.tl0picidx = tl0picidx + self.tid = tid + self.keyidx = keyidx + + def __bytes__(self) -> bytes: + octet = (self.partition_start << 4) | self.partition_id + + ext_octet = 0 + if self.picture_id is not None: + ext_octet |= 1 << 7 + if self.tl0picidx is not None: + ext_octet |= 1 << 6 + if self.tid is not None: + ext_octet |= 1 << 5 + if self.keyidx is not None: + ext_octet |= 1 << 4 + + if ext_octet: + data = pack("!BB", (1 << 7) | octet, ext_octet) + if self.picture_id is not None: + if self.picture_id < 128: + data += pack("!B", self.picture_id) + else: + data += pack("!H", (1 << 15) | self.picture_id) + if self.tl0picidx is not None: + data += pack("!B", self.tl0picidx) + if self.tid is not None or self.keyidx is not None: + t_k = 0 + if self.tid is not None: + t_k |= (self.tid[0] << 6) | (self.tid[1] << 5) + if self.keyidx is not None: + t_k |= self.keyidx + data += pack("!B", t_k) + else: + data = pack("!B", octet) + + return data + + def __repr__(self) -> str: + return ( + f"VpxPayloadDescriptor(S={self.partition_start}, " + f"PID={self.partition_id}, pic_id={self.picture_id})" + ) + + @classmethod + def parse(cls: Type[DESCRIPTOR_T], data: bytes) -> Tuple[DESCRIPTOR_T, bytes]: + if len(data) < 1: + raise ValueError("VPX descriptor is too short") + + # first byte + octet = data[0] + extended = octet >> 7 + partition_start = (octet >> 4) & 1 + partition_id = octet & 0xF + picture_id = None + tl0picidx = None + tid = None + keyidx = None + pos = 1 + + # extended control bits + if extended: + if len(data) < pos + 1: + raise ValueError("VPX descriptor has truncated extended bits") + + octet = data[pos] + ext_I = (octet >> 7) & 1 + ext_L = (octet >> 6) & 1 + ext_T = (octet >> 5) & 1 + ext_K = (octet >> 4) & 1 + pos += 1 + + # picture id + if ext_I: + if len(data) < pos + 1: + raise ValueError("VPX descriptor has truncated PictureID") + + if data[pos] & 0x80: + if len(data) < pos + 2: + raise ValueError("VPX descriptor has truncated long PictureID") + + picture_id = unpack_from("!H", data, pos)[0] & 0x7FFF + pos += 2 + else: + picture_id = data[pos] + pos += 1 + + # unused + if ext_L: + if len(data) < pos + 1: + raise ValueError("VPX descriptor has truncated TL0PICIDX") + + tl0picidx = data[pos] + pos += 1 + if ext_T or ext_K: + if len(data) < pos + 1: + raise ValueError("VPX descriptor has truncated T/K") + + t_k = data[pos] + if ext_T: + tid = ((t_k >> 6) & 3, (t_k >> 5) & 1) + if ext_K: + keyidx = t_k & 0x1F + pos += 1 + + obj = cls( + partition_start=partition_start, + partition_id=partition_id, + picture_id=picture_id, + tl0picidx=tl0picidx, + tid=tid, + keyidx=keyidx, + ) + return obj, data[pos:] + + +def _vpx_assert(err: int) -> None: + if err != lib.VPX_CODEC_OK: + reason = ffi.string(lib.vpx_codec_err_to_string(err)) + raise Exception("libvpx error: " + reason.decode("utf8")) + + +class Vp8Decoder: + def __init__(self) -> None: + self.codec = ffi.new("vpx_codec_ctx_t *") + _vpx_assert( + lib.vpx_codec_dec_init(self.codec, lib.vpx_codec_vp8_dx(), ffi.NULL, 0) + ) + + ppcfg = ffi.new("vp8_postproc_cfg_t *") + ppcfg.post_proc_flag = lib.VP8_DEMACROBLOCK | lib.VP8_DEBLOCK + ppcfg.deblocking_level = 3 + lib.vpx_codec_control_(self.codec, lib.VP8_SET_POSTPROC, ppcfg) + + def __del__(self) -> None: + lib.vpx_codec_destroy(self.codec) + + def decode(self, encoded_frame: JitterFrame) -> List[Frame]: + frames: List[Frame] = [] + result = lib.vpx_codec_decode( + self.codec, + encoded_frame.data, + len(encoded_frame.data), + ffi.NULL, + lib.VPX_DL_REALTIME, + ) + if result == lib.VPX_CODEC_OK: + it = ffi.new("vpx_codec_iter_t *") + while True: + img = lib.vpx_codec_get_frame(self.codec, it) + if not img: + break + assert img.fmt == lib.VPX_IMG_FMT_I420 + + frame = VideoFrame(width=img.d_w, height=img.d_h) + frame.pts = encoded_frame.timestamp + frame.time_base = VIDEO_TIME_BASE + + for p in range(3): + i_stride = img.stride[p] + i_buf = ffi.buffer(img.planes[p], i_stride * img.d_h) + i_pos = 0 + + o_stride = frame.planes[p].line_size + o_buf = memoryview(cast(bytes, frame.planes[p])) + o_pos = 0 + + div = p and 2 or 1 + for r in range(0, img.d_h // div): + o_buf[o_pos : o_pos + o_stride] = i_buf[ + i_pos : i_pos + o_stride + ] + i_pos += i_stride + o_pos += o_stride + + frames.append(frame) + + return frames + + +class Vp8Encoder: + def __init__(self) -> None: + self.cx = lib.vpx_codec_vp8_cx() + + self.cfg = ffi.new("vpx_codec_enc_cfg_t *") + lib.vpx_codec_enc_config_default(self.cx, self.cfg, 0) + + self.buffer = bytearray(8000) + self.codec = None + self.picture_id = random.randint(0, (1 << 15) - 1) + self.timestamp_increment = VIDEO_CLOCK_RATE // MAX_FRAME_RATE + self.__target_bitrate = DEFAULT_BITRATE + self.__update_config_needed = False + + def __del__(self) -> None: + if self.codec: + lib.vpx_codec_destroy(self.codec) + + def encode( + self, frame: Frame, force_keyframe: bool = False + ) -> Tuple[List[bytes], int]: + assert isinstance(frame, VideoFrame) + if frame.format.name != "yuv420p": + frame = frame.reformat(format="yuv420p") + + if self.codec and (frame.width != self.cfg.g_w or frame.height != self.cfg.g_h): + lib.vpx_codec_destroy(self.codec) + self.codec = None + + if not self.codec: + # create codec + self.codec = ffi.new("vpx_codec_ctx_t *") + self.cfg.g_timebase.num = 1 + self.cfg.g_timebase.den = VIDEO_CLOCK_RATE + self.cfg.g_lag_in_frames = 0 + self.cfg.g_threads = number_of_threads( + frame.width * frame.height, multiprocessing.cpu_count() + ) + self.cfg.g_w = frame.width + self.cfg.g_h = frame.height + self.cfg.rc_resize_allowed = 0 + self.cfg.rc_end_usage = lib.VPX_CBR + self.cfg.rc_min_quantizer = 2 + self.cfg.rc_max_quantizer = 56 + self.cfg.rc_undershoot_pct = 100 + self.cfg.rc_overshoot_pct = 15 + self.cfg.rc_buf_initial_sz = 500 + self.cfg.rc_buf_optimal_sz = 600 + self.cfg.rc_buf_sz = 1000 + self.cfg.kf_mode = lib.VPX_KF_AUTO + self.cfg.kf_max_dist = 3000 + self.__update_config() + _vpx_assert(lib.vpx_codec_enc_init(self.codec, self.cx, self.cfg, 0)) + + lib.vpx_codec_control_( + self.codec, lib.VP8E_SET_NOISE_SENSITIVITY, ffi.cast("int", 4) + ) + lib.vpx_codec_control_( + self.codec, lib.VP8E_SET_STATIC_THRESHOLD, ffi.cast("int", 1) + ) + lib.vpx_codec_control_( + self.codec, lib.VP8E_SET_CPUUSED, ffi.cast("int", -6) + ) + lib.vpx_codec_control_( + self.codec, + lib.VP8E_SET_TOKEN_PARTITIONS, + ffi.cast("int", lib.VP8_ONE_TOKENPARTITION), + ) + + # create image on a dummy buffer, we will fill the pointers during encoding + self.image = ffi.new("vpx_image_t *") + lib.vpx_img_wrap( + self.image, + lib.VPX_IMG_FMT_I420, + frame.width, + frame.height, + 1, + ffi.cast("void*", 1), + ) + elif self.__update_config_needed: + self.__update_config() + _vpx_assert(lib.vpx_codec_enc_config_set(self.codec, self.cfg)) + + # setup image + for p in range(3): + self.image.planes[p] = ffi.cast("void*", frame.planes[p].buffer_ptr) + self.image.stride[p] = frame.planes[p].line_size + + # encode frame + flags = 0 + if force_keyframe: + flags |= lib.VPX_EFLAG_FORCE_KF + _vpx_assert( + lib.vpx_codec_encode( + self.codec, + self.image, + frame.pts, + self.timestamp_increment, + flags, + lib.VPX_DL_REALTIME, + ) + ) + + it = ffi.new("vpx_codec_iter_t *") + length = 0 + while True: + pkt = lib.vpx_codec_get_cx_data(self.codec, it) + if not pkt: + break + elif pkt.kind == lib.VPX_CODEC_CX_FRAME_PKT: + # resize buffer if needed + if length + pkt.data.frame.sz > len(self.buffer): + new_buffer = bytearray(length + pkt.data.frame.sz) + new_buffer[0:length] = self.buffer[0:length] + self.buffer = new_buffer + + # append new data + self.buffer[length : length + pkt.data.frame.sz] = ffi.buffer( + pkt.data.frame.buf, pkt.data.frame.sz + ) + length += pkt.data.frame.sz + + # packetize + payloads = self._packetize(self.buffer[:length], self.picture_id) + timestamp = convert_timebase(frame.pts, frame.time_base, VIDEO_TIME_BASE) + self.picture_id = (self.picture_id + 1) % (1 << 15) + return payloads, timestamp + + def pack(self, packet: Packet) -> Tuple[List[bytes], int]: + payloads = self._packetize(bytes(packet), self.picture_id) + timestamp = convert_timebase(packet.pts, packet.time_base, VIDEO_TIME_BASE) + self.picture_id = (self.picture_id + 1) % (1 << 15) + return payloads, timestamp + + @property + def target_bitrate(self) -> int: + """ + Target bitrate in bits per second. + """ + return self.__target_bitrate + + @target_bitrate.setter + def target_bitrate(self, bitrate: int) -> None: + bitrate = max(MIN_BITRATE, min(bitrate, MAX_BITRATE)) + if bitrate != self.__target_bitrate: + self.__target_bitrate = bitrate + self.__update_config_needed = True + + @classmethod + def _packetize(cls, buffer: bytes, picture_id: int) -> List[bytes]: + payloads = [] + descr = VpxPayloadDescriptor( + partition_start=1, partition_id=0, picture_id=picture_id + ) + length = len(buffer) + pos = 0 + while pos < length: + descr_bytes = bytes(descr) + size = min(length - pos, PACKET_MAX - len(descr_bytes)) + payloads.append(descr_bytes + buffer[pos : pos + size]) + descr.partition_start = 0 + pos += size + return payloads + + def __update_config(self) -> None: + self.cfg.rc_target_bitrate = self.__target_bitrate // 1000 + self.__update_config_needed = False + + +def vp8_depayload(payload: bytes) -> bytes: + descriptor, data = VpxPayloadDescriptor.parse(payload) + return data diff --git a/vpx_rtp/jitterbuffer.py b/vpx_rtp/jitterbuffer.py new file mode 100644 index 0000000..fcecae0 --- /dev/null +++ b/vpx_rtp/jitterbuffer.py @@ -0,0 +1,123 @@ +from typing import List, Optional, Tuple + +from vpx_rtp.rtp import RtpPacket +from vpx_rtp.utils import uint16_add + +MAX_MISORDER = 100 + + +class JitterFrame: + def __init__(self, data: bytes, timestamp: int) -> None: + self.data = data + self.timestamp = timestamp + + +class JitterBuffer: + def __init__( + self, capacity: int, prefetch: int = 0, is_video: bool = False + ) -> None: + assert capacity & (capacity - 1) == 0, "capacity must be a power of 2" + self._capacity = capacity + self._origin: Optional[int] = None + self._packets: List[Optional[RtpPacket]] = [None for i in range(capacity)] + self._prefetch = prefetch + self._is_video = is_video + + @property + def capacity(self) -> int: + return self._capacity + + def add(self, packet: RtpPacket) -> Tuple[bool, Optional[JitterFrame]]: + pli_flag = False + if self._origin is None: + self._origin = packet.sequence_number + delta = 0 + misorder = 0 + else: + delta = uint16_add(packet.sequence_number, -self._origin) + misorder = uint16_add(self._origin, -packet.sequence_number) + + if misorder < delta: + if misorder >= MAX_MISORDER: + self.remove(self.capacity) + self._origin = packet.sequence_number + delta = misorder = 0 + if self._is_video: + pli_flag = True + else: + return pli_flag, None + + if delta >= self.capacity: + # remove just enough frames to fit the received packets + excess = delta - self.capacity + 1 + if self.smart_remove(excess): + self._origin = packet.sequence_number + if self._is_video: + pli_flag = True + + pos = packet.sequence_number % self._capacity + self._packets[pos] = packet + + return pli_flag, self._remove_frame(packet.sequence_number) + + def _remove_frame(self, sequence_number: int) -> Optional[JitterFrame]: + frame = None + frames = 0 + packets = [] + remove = 0 + timestamp = None + + for count in range(self.capacity): + pos = (self._origin + count) % self._capacity + packet = self._packets[pos] + if packet is None: + break + if timestamp is None: + timestamp = packet.timestamp + elif packet.timestamp != timestamp: + # we now have a complete frame, only store the first one + if frame is None: + frame = JitterFrame( + data=b"".join([x._data for x in packets]), timestamp=timestamp + ) + remove = count + + # check we have prefetched enough + frames += 1 + if frames >= self._prefetch: + self.remove(remove) + return frame + + # start a new frame + packets = [] + timestamp = packet.timestamp + + packets.append(packet) + + return None + + def remove(self, count: int) -> None: + assert count <= self._capacity + for i in range(count): + pos = self._origin % self._capacity + self._packets[pos] = None + self._origin = uint16_add(self._origin, 1) + + def smart_remove(self, count: int) -> bool: + """ + Makes sure that all packages belonging to the same frame are removed + to prevent sending corrupted frames to the decoder. + """ + timestamp = None + for i in range(self._capacity): + pos = self._origin % self._capacity + packet = self._packets[pos] + if packet is not None: + if i >= count and timestamp != packet.timestamp: + break + timestamp = packet.timestamp + self._packets[pos] = None + self._origin = uint16_add(self._origin, 1) + if i == self._capacity - 1: + return True + return False diff --git a/vpx_rtp/py.typed b/vpx_rtp/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/vpx_rtp/rtcrtpparameters.py b/vpx_rtp/rtcrtpparameters.py new file mode 100644 index 0000000..d12c2c7 --- /dev/null +++ b/vpx_rtp/rtcrtpparameters.py @@ -0,0 +1,93 @@ +from dataclasses import dataclass, field +from typing import Dict, List, Optional, Union + +ParametersDict = Dict[str, Union[int, str, None]] + + +@dataclass +class RTCRtpCodecParameters: + """ + The :class:`RTCRtpCodecParameters` dictionary provides information on + codec settings. + """ + + mimeType: str + "The codec MIME media type/subtype, for instance `'audio/PCMU'`." + clockRate: int + "The codec clock rate expressed in Hertz." + channels: Optional[int] = None + "The number of channels supported (e.g. two for stereo)." + payloadType: Optional[int] = None + "The value that goes in the RTP Payload Type Field." + rtcpFeedback: List["RTCRtcpFeedback"] = field(default_factory=list) + "Transport layer and codec-specific feedback messages for this codec." + parameters: ParametersDict = field(default_factory=dict) + "Codec-specific parameters available for signaling." + + @property + def name(self): + return self.mimeType.split("/")[1] + + def __str__(self): + s = f"{self.name}/{self.clockRate}" + if self.channels == 2: + s += "/2" + return s + + +@dataclass +class RTCRtpHeaderExtensionParameters: + """ + The :class:`RTCRtpHeaderExtensionParameters` dictionary enables a header + extension to be configured for use within an :class:`RTCRtpSender` or + :class:`RTCRtpReceiver`. + """ + + id: int + "The value that goes in the packet." + uri: str + "The URI of the RTP header extension." + + +@dataclass +class RTCRtcpFeedback: + """ + The :class:`RTCRtcpFeedback` dictionary provides information on RTCP feedback + messages. + """ + + type: str + parameter: Optional[str] = None + + +@dataclass +class RTCRtcpParameters: + """ + The :class:`RTCRtcpParameters` dictionary provides information on RTCP settings. + """ + + cname: Optional[str] = None + "The Canonical Name (CNAME) used by RTCP." + mux: bool = False + "Whether RTP and RTCP are multiplexed." + ssrc: Optional[int] = None + "The Synchronization Source identifier." + + +@dataclass +class RTCRtpParameters: + """ + The :class:`RTCRtpParameters` dictionary describes the configuration of + an :class:`RTCRtpReceiver` or an :class:`RTCRtpSender`. + """ + + codecs: List[RTCRtpCodecParameters] = field(default_factory=list) + "A list of :class:`RTCRtpCodecParameters` to send or receive." + headerExtensions: List[RTCRtpHeaderExtensionParameters] = field( + default_factory=list + ) + "A list of :class:`RTCRtpHeaderExtensionParameters`." + muxId: str = "" + "The muxId assigned to the RTP stream, if any, empty string if unset." + rtcp: RTCRtcpParameters = field(default_factory=RTCRtcpParameters) + "Parameters to configure RTCP." diff --git a/vpx_rtp/rtp.py b/vpx_rtp/rtp.py new file mode 100644 index 0000000..0949f99 --- /dev/null +++ b/vpx_rtp/rtp.py @@ -0,0 +1,349 @@ +import os +from dataclasses import dataclass +from struct import pack, unpack, unpack_from +from typing import Any, List, Optional, Tuple + +from vpx_rtp.rtcrtpparameters import RTCRtpParameters + +# used for NACK and retransmission +RTP_HISTORY_SIZE = 128 + +# reserved to avoid confusion with RTCP +FORBIDDEN_PAYLOAD_TYPES = range(72, 77) +DYNAMIC_PAYLOAD_TYPES = range(96, 128) + +RTP_HEADER_LENGTH = 12 +RTCP_HEADER_LENGTH = 4 + +PACKETS_LOST_MIN = -(1 << 23) +PACKETS_LOST_MAX = (1 << 23) - 1 + +RTCP_SR = 200 +RTCP_RR = 201 +RTCP_SDES = 202 +RTCP_BYE = 203 +RTCP_RTPFB = 205 +RTCP_PSFB = 206 + +RTCP_RTPFB_NACK = 1 + +RTCP_PSFB_PLI = 1 +RTCP_PSFB_SLI = 2 +RTCP_PSFB_RPSI = 3 +RTCP_PSFB_APP = 15 + + +@dataclass +class HeaderExtensions: + abs_send_time: Optional[int] = None + audio_level: Any = None + mid: Any = None + repaired_rtp_stream_id: Any = None + rtp_stream_id: Any = None + transmission_offset: Optional[int] = None + transport_sequence_number: Optional[int] = None + + +class HeaderExtensionsMap: + def __init__(self) -> None: + self.__ids = HeaderExtensions() + + def configure(self, parameters: RTCRtpParameters) -> None: + for ext in parameters.headerExtensions: + if ext.uri == "urn:ietf:params:rtp-hdrext:sdes:mid": + self.__ids.mid = ext.id + elif ext.uri == "urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id": + self.__ids.repaired_rtp_stream_id = ext.id + elif ext.uri == "urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id": + self.__ids.rtp_stream_id = ext.id + elif ( + ext.uri == "http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time" + ): + self.__ids.abs_send_time = ext.id + elif ext.uri == "urn:ietf:params:rtp-hdrext:toffset": + self.__ids.transmission_offset = ext.id + elif ext.uri == "urn:ietf:params:rtp-hdrext:ssrc-audio-level": + self.__ids.audio_level = ext.id + elif ( + ext.uri + == "http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01" + ): + self.__ids.transport_sequence_number = ext.id + + def get(self, extension_profile: int, extension_value: bytes) -> HeaderExtensions: + values = HeaderExtensions() + for x_id, x_value in unpack_header_extensions( + extension_profile, extension_value + ): + if x_id == self.__ids.mid: + values.mid = x_value.decode("utf8") + elif x_id == self.__ids.repaired_rtp_stream_id: + values.repaired_rtp_stream_id = x_value.decode("ascii") + elif x_id == self.__ids.rtp_stream_id: + values.rtp_stream_id = x_value.decode("ascii") + elif x_id == self.__ids.abs_send_time: + values.abs_send_time = unpack("!L", b"\00" + x_value)[0] + elif x_id == self.__ids.transmission_offset: + values.transmission_offset = unpack("!l", x_value + b"\00")[0] >> 8 + elif x_id == self.__ids.audio_level: + vad_level = unpack("!B", x_value)[0] + values.audio_level = (vad_level & 0x80 == 0x80, vad_level & 0x7F) + elif x_id == self.__ids.transport_sequence_number: + values.transport_sequence_number = unpack("!H", x_value)[0] + return values + + def set(self, values: HeaderExtensions): + extensions = [] + if values.mid is not None and self.__ids.mid: + extensions.append((self.__ids.mid, values.mid.encode("utf8"))) + if ( + values.repaired_rtp_stream_id is not None + and self.__ids.repaired_rtp_stream_id + ): + extensions.append( + ( + self.__ids.repaired_rtp_stream_id, + values.repaired_rtp_stream_id.encode("ascii"), + ) + ) + if values.rtp_stream_id is not None and self.__ids.rtp_stream_id: + extensions.append( + (self.__ids.rtp_stream_id, values.rtp_stream_id.encode("ascii")) + ) + if values.abs_send_time is not None and self.__ids.abs_send_time: + extensions.append( + (self.__ids.abs_send_time, pack("!L", values.abs_send_time)[1:]) + ) + if values.transmission_offset is not None and self.__ids.transmission_offset: + extensions.append( + ( + self.__ids.transmission_offset, + pack("!l", values.transmission_offset << 8)[0:2], + ) + ) + if values.audio_level is not None and self.__ids.audio_level: + extensions.append( + ( + self.__ids.audio_level, + pack( + "!B", + (0x80 if values.audio_level[0] else 0) + | (values.audio_level[1] & 0x7F), + ), + ) + ) + if ( + values.transport_sequence_number is not None + and self.__ids.transport_sequence_number + ): + extensions.append( + ( + self.__ids.transport_sequence_number, + pack("!H", values.transport_sequence_number), + ) + ) + return pack_header_extensions(extensions) + + +def padl(length: int) -> int: + """ + Return amount of padding needed for a 4-byte multiple. + """ + return 4 * ((length + 3) // 4) - length + + +def unpack_header_extensions( + extension_profile: int, extension_value: bytes +) -> List[Tuple[int, bytes]]: + """ + Parse header extensions according to RFC 5285. + """ + extensions = [] + pos = 0 + + if extension_profile == 0xBEDE: + # One-Byte Header + while pos < len(extension_value): + # skip padding byte + if extension_value[pos] == 0: + pos += 1 + continue + + x_id = (extension_value[pos] & 0xF0) >> 4 + x_length = (extension_value[pos] & 0x0F) + 1 + pos += 1 + + if len(extension_value) < pos + x_length: + raise ValueError("RTP one-byte header extension value is truncated") + x_value = extension_value[pos : pos + x_length] + extensions.append((x_id, x_value)) + pos += x_length + elif extension_profile == 0x1000: + # Two-Byte Header + while pos < len(extension_value): + # skip padding byte + if extension_value[pos] == 0: + pos += 1 + continue + + if len(extension_value) < pos + 2: + raise ValueError("RTP two-byte header extension is truncated") + x_id, x_length = unpack_from("!BB", extension_value, pos) + pos += 2 + + if len(extension_value) < pos + x_length: + raise ValueError("RTP two-byte header extension value is truncated") + x_value = extension_value[pos : pos + x_length] + extensions.append((x_id, x_value)) + pos += x_length + + return extensions + + +def pack_header_extensions(extensions: List[Tuple[int, bytes]]) -> Tuple[int, bytes]: + """ + Serialize header extensions according to RFC 5285. + """ + extension_profile = 0 + extension_value = b"" + + if not extensions: + return extension_profile, extension_value + + one_byte = True + for x_id, x_value in extensions: + x_length = len(x_value) + assert x_id > 0 and x_id < 256 + assert x_length >= 0 and x_length < 256 + if x_id > 14 or x_length == 0 or x_length > 16: + one_byte = False + + if one_byte: + # One-Byte Header + extension_profile = 0xBEDE + extension_value = b"" + for x_id, x_value in extensions: + x_length = len(x_value) + extension_value += pack("!B", (x_id << 4) | (x_length - 1)) + extension_value += x_value + else: + # Two-Byte Header + extension_profile = 0x1000 + extension_value = b"" + for x_id, x_value in extensions: + x_length = len(x_value) + extension_value += pack("!BB", x_id, x_length) + extension_value += x_value + + extension_value += b"\x00" * padl(len(extension_value)) + return extension_profile, extension_value + + +class RtpPacket: + def __init__( + self, + payload_type: int = 0, + marker: int = 0, + sequence_number: int = 0, + timestamp: int = 0, + ssrc: int = 0, + payload: bytes = b"", + ) -> None: + self.version = 2 + self.marker = marker + self.payload_type = payload_type + self.sequence_number = sequence_number + self.timestamp = timestamp + self.ssrc = ssrc + self.csrc: List[int] = [] + self.extensions = HeaderExtensions() + self.payload = payload + self.padding_size = 0 + + def __repr__(self) -> str: + return ( + f"RtpPacket(seq={self.sequence_number}, ts={self.timestamp}, " + f"marker={self.marker}, payload={self.payload_type}, " + f"{len(self.payload)} bytes)" + ) + + @classmethod + def parse(cls, data: bytes, extensions_map=HeaderExtensionsMap()): + if len(data) < RTP_HEADER_LENGTH: + raise ValueError( + f"RTP packet length is less than {RTP_HEADER_LENGTH} bytes" + ) + + v_p_x_cc, m_pt, sequence_number, timestamp, ssrc = unpack("!BBHLL", data[0:12]) + version = v_p_x_cc >> 6 + padding = (v_p_x_cc >> 5) & 1 + extension = (v_p_x_cc >> 4) & 1 + cc = v_p_x_cc & 0x0F + if version != 2: + raise ValueError("RTP packet has invalid version") + if len(data) < RTP_HEADER_LENGTH + 4 * cc: + raise ValueError("RTP packet has truncated CSRC") + + packet = cls( + marker=(m_pt >> 7), + payload_type=(m_pt & 0x7F), + sequence_number=sequence_number, + timestamp=timestamp, + ssrc=ssrc, + ) + + pos = RTP_HEADER_LENGTH + for i in range(0, cc): + packet.csrc.append(unpack_from("!L", data, pos)[0]) + pos += 4 + + if extension: + if len(data) < pos + 4: + raise ValueError("RTP packet has truncated extension profile / length") + extension_profile, extension_length = unpack_from("!HH", data, pos) + extension_length *= 4 + pos += 4 + + if len(data) < pos + extension_length: + raise ValueError("RTP packet has truncated extension value") + extension_value = data[pos : pos + extension_length] + pos += extension_length + packet.extensions = extensions_map.get(extension_profile, extension_value) + + if padding: + padding_len = data[-1] + if not padding_len or padding_len > len(data) - pos: + raise ValueError("RTP packet padding length is invalid") + packet.padding_size = padding_len + packet.payload = data[pos:-padding_len] + else: + packet.payload = data[pos:] + + return packet + + def serialize(self, extensions_map=HeaderExtensionsMap()) -> bytes: + extension_profile, extension_value = extensions_map.set(self.extensions) + has_extension = bool(extension_value) + + padding = self.padding_size > 0 + data = pack( + "!BBHLL", + (self.version << 6) + | (padding << 5) + | (has_extension << 4) + | len(self.csrc), + (self.marker << 7) | self.payload_type, + self.sequence_number, + self.timestamp, + self.ssrc, + ) + for csrc in self.csrc: + data += pack("!L", csrc) + if has_extension: + data += pack("!HH", extension_profile, len(extension_value) >> 2) + data += extension_value + data += self.payload + if padding: + data += os.urandom(self.padding_size - 1) + data += bytes([self.padding_size]) + return data diff --git a/vpx_rtp/test.py b/vpx_rtp/test.py new file mode 100644 index 0000000..b80e322 --- /dev/null +++ b/vpx_rtp/test.py @@ -0,0 +1 @@ +print("hi") diff --git a/vpx_rtp/utils.py b/vpx_rtp/utils.py new file mode 100644 index 0000000..ef4bd66 --- /dev/null +++ b/vpx_rtp/utils.py @@ -0,0 +1,54 @@ +import os +from struct import unpack + + +def random16() -> int: + return unpack("!H", os.urandom(2))[0] + + +def random32() -> int: + return unpack("!L", os.urandom(4))[0] + + +def uint16_add(a: int, b: int) -> int: + """ + Return a + b. + """ + return (a + b) & 0xFFFF + + +def uint16_gt(a: int, b: int) -> bool: + """ + Return a > b. + """ + half_mod = 0x8000 + return ((a < b) and ((b - a) > half_mod)) or ((a > b) and ((a - b) < half_mod)) + + +def uint16_gte(a: int, b: int) -> bool: + """ + Return a >= b. + """ + return (a == b) or uint16_gt(a, b) + + +def uint32_add(a: int, b: int) -> int: + """ + Return a + b. + """ + return (a + b) & 0xFFFFFFFF + + +def uint32_gt(a: int, b: int) -> bool: + """ + Return a > b. + """ + half_mod = 0x80000000 + return ((a < b) and ((b - a) > half_mod)) or ((a > b) and ((a - b) < half_mod)) + + +def uint32_gte(a: int, b: int) -> bool: + """ + Return a >= b. + """ + return (a == b) or uint32_gt(a, b)