From 05df08f7dd6e3c1a25ff616443b378fbbd2e70c1 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Thu, 8 Dec 2022 13:12:53 +0100 Subject: [PATCH 01/11] Add and setup Gitignore --- .gitignore | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..90b8c50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,132 @@ +# 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/ + +# MacOS +.DS_Store \ No newline at end of file From d176d3ee08cdafb5b8cdd9191c5c55a6b168af4b Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Thu, 8 Dec 2022 13:40:34 +0100 Subject: [PATCH 02/11] pycache clean --- Backend/FastAPI/__pycache__/main.cpython-310.pyc | Bin 523 -> 0 bytes .../FastAPI/__pycache__/users.cpython-310.pyc | Bin 1755 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 184 -> 0 bytes .../__pycache__/arithmetics.cpython-310.pyc | Bin 319 -> 0 bytes __pycache__/module.cpython-310.pyc | Bin 310 -> 0 bytes __pycache__/my_module.cpython-310.pyc | Bin 431 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Backend/FastAPI/__pycache__/main.cpython-310.pyc delete mode 100644 Backend/FastAPI/__pycache__/users.cpython-310.pyc delete mode 100644 Intermediate/mypackage/__pycache__/__init__.cpython-310.pyc delete mode 100644 Intermediate/mypackage/__pycache__/arithmetics.cpython-310.pyc delete mode 100644 __pycache__/module.cpython-310.pyc delete mode 100644 __pycache__/my_module.cpython-310.pyc diff --git a/Backend/FastAPI/__pycache__/main.cpython-310.pyc b/Backend/FastAPI/__pycache__/main.cpython-310.pyc deleted file mode 100644 index a539fac6c1b5db27c05af88b752cff2feec52516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 523 zcmZXQJx{|h5Qc5%ld45*3@k8qpx!Hl03lQcqKXe8Wizp%QIk5d)1r0)m4Tf<03#Cr zf`5^fiH*4vXH%(>IO$&b-uTW>PPSSN1o83noV*Z(zD!XM2Z{qo-38%@;|%3E#uy1a zM==rP)#2m~bBDW6XpUpoIvzMa53J+y@B+2hzM&traTS~}T^{yN7nml-st1PR6H@yi zkCu$aflgG-cwnz?kWvVY*Pxj%5T zOasnIYT%uya^U`KYfzSj?ow*$xR`VjnbX2TtbU|+@?ee%KsF(l2qCdf)b``x7M940 uRGEh>hZRNT+=r28-ZcPcdggG%oTiD#@4tKf7 zYrOswu9sld;LXeRGRRkWi?5=*XNHcjesTHQuasZo>r*nJp{F?;z`4%f(VUv*+yKs| zs2>^pU4C)UGV36+x+&_3LCtAK>VEPgOUxuI%9SW$S(X>9Nb*d9 zj;RWHMq~?O)Np?iVcrm*RTD~oz;fQn)Tm%mR8*XL*lqSS^zJ6sh?Cr$)V1@-Ly$7tH9tznzU%OE1 zGj^P3T4e`R#`P-h=PJ+MDk{4C4Tky<;5Frx8`!_x{uzp?`?jKW_d@3azh^=r8(nz~ zcF1*v4TS3ezV%-RkvCAj2@pCDb!_q`a&94PAzW5#fm#JYS<@NE$Z@+`1~6VV42#15 z7tDXkZD5U^>V$8d4(p&#hv|Jy3vxitXcyYNuI)x?0^Ra2=i0BW<(NH%r8Zt!hFr*H z@Lj@R>cYk7;^IRZi-s=$z!wEwp27t_Ao4aW&uF=%1e0+;Li=a5s{KC!Xx|pfK0p(d zYtNAH!)kuW;D0^JJD{cg$h%0rhj7)lHq=2r+P`864unk1)Uf# z>DVodQ#zsC+$7H+l~n)OED3eU*TC_e?iHgK3BguTn2=NQocutJjd?%IvH;*q_4A^<}pjv9uSqLM1Q3%q|D`byPLO_X!luLWO1GqlJUGP z()LJ=m`rltES;kyEkL=AyDaPl->53G1Dq;#I*AyMya(_x41JC@YS3lsP`L2O@A}Qq zJ%UG+4HJo>hTiamv#dyBi3x>wZ8+3VL*>lui9&a-ZYtRXl`02lY@ueldh={luizdY iQDHwcNP{{?%WZj{z6~w74W3h{o(scnQO{}7HS2E@Tx@Xw diff --git a/Intermediate/mypackage/__pycache__/__init__.cpython-310.pyc b/Intermediate/mypackage/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index e22069732ce769d91b4195cb0f1ad52389321e2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmd1j<>g`kf@?fE$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o10cKeRZts8~O# zC^54*H@~zfRo@pxx}=urhvye%7Z)TZr|O54XO<*q=zFB*jmZa+ERsz*!C#I+B$H!;pWtPOp>lIYq;;_lhPbtkwwF6mN%mgG@7yuZQFLVF^ diff --git a/Intermediate/mypackage/__pycache__/arithmetics.cpython-310.pyc b/Intermediate/mypackage/__pycache__/arithmetics.cpython-310.pyc deleted file mode 100644 index 6e2cf7994364deea423de7023b3bb3fafc504ec8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmYjLK~BRk5VTVc5ly)Ah8(~js1Ony+5;65Afz5>jlB?4JFdJ=t4KZa8NQS&zu?5W z5uz*2%#J)Ok1xwpMzbod`XK#I=6EtP*90txG}HW(Ett+8ST$1V?Qhbaa6`bHXwUZi zoKcR?zgU&^<2Ms9F1OOQuqY6eZ}i{-r}%+>Uc?hZK=B%+LFd~5;x6$mY{jz=Yurc$ z;&Er9s>Kwn^%wVDtbHS9O@!b;8yP{kj&f`H4nhVKYX{LNyxesC8Mba2cYgR7N2zRT do%3))GOq^xZ!~Nv*XI-Gb!*`&)jeDl*)PQ*N`e3Y diff --git a/__pycache__/module.cpython-310.pyc b/__pycache__/module.cpython-310.pyc deleted file mode 100644 index 0d63bb63fcf06780639d20e9f71412492849cace..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmd1j<>g`kf;BbD$%#PvF^Gc(44TZz%s?R+0I@;X z8HkHTfJ6yH4MPp1I71DSI72fdBTz3;52K$Z<1N;LqRhM!P39=hywcpH)FS`9R2Va) zJU@yXA{vrWl$yGdp$O!FUrzd=#i>Qb`bkBJnZ>#JrA4Xwz97;iwM;)ezbL!7ATc>r zKcqafBsoLhBQ+-{UpJt#BqKjhKQ}+6G$&QBpz;=HacOQ?VoqslF~~?TA;MV10%QXn Y1*XAvArT<|+~Tl-7-7c<)5XIG04`rdmH+?% diff --git a/__pycache__/my_module.cpython-310.pyc b/__pycache__/my_module.cpython-310.pyc deleted file mode 100644 index ca5d74d7bf51a1e3f975b64d6047395ec10e1b07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmYjM%}T>S5Z+B1i8Z|y`T(AC(0u_BK?N^Xp-~|hNt1;HlWdqxS^~j~UVM~1Pj9*U z7M`5h5a_^s^UVzN^QpyR&d?5@=kX85UrLV6!sG^BFA)-!@NX8f#7b<8Jeh5n@5DB? zCL>OMi*9CW*0GMSSZA%+7w5QR!+O5%`QTKLm9=k&r)5)YB|MdKqQPE;XJa);LCT)N z3>W_0ix(|Hi!DT%E>r_jJQCi?op@95p{ppCBG_kjoQemT=j!6Qty5KsqJ1w^(&X~8 zY6n+0#cPx|lGJH}C5ICXF-Mq;IQ5Ja4+%+`Bmi}R+CD1T(K7Sm2oBbVxzT6tP;Tyc e99-mU-!k`1ax_OG!3?`s Date: Thu, 8 Dec 2022 18:12:49 +0100 Subject: [PATCH 03/11] Entorno virtual creado --- Backend/FastAPI/README.md | 285 ++++++++++++++++++++ Backend/FastAPI/main.py | 6 +- Backend/FastAPI/requirements-global.txt | 57 ++++ Backend/FastAPI/requirements-preinstall.txt | 0 Backend/FastAPI/requirements.txt | 16 ++ 5 files changed, 363 insertions(+), 1 deletion(-) create mode 100644 Backend/FastAPI/README.md create mode 100644 Backend/FastAPI/requirements-global.txt create mode 100644 Backend/FastAPI/requirements-preinstall.txt create mode 100644 Backend/FastAPI/requirements.txt diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md new file mode 100644 index 0000000..069bfe4 --- /dev/null +++ b/Backend/FastAPI/README.md @@ -0,0 +1,285 @@ + + + + + + + + + + +
+
+ +

FastAPI - Ejemplo de Uso con Entornos virtuales de Python

+ +

+ 🎯 Desarrollo de Python con entornos virtuales +
+ Archivos » +
+ Reportar un bug + · + Asignar una feature +

+
+ + + + + + + + + +## About + +Por defecto la instalación de Python, incluye una gran cantidad de librerías de manera nativa y por defecto en la instalación de Python. Sin embargo es habitual el uso de liberías de terceros, como en este caso FastAPI. + +Para instalar y manejar paquetes, el módulo pip es la herramienta que nos permite instalar estas librerías de terceros, sin embargo esto lo realiza de manera global. + +Cuando compartimos el código, mediante un repositorio en GitHub por ejemplo, para poder ejecutar la aplicación deberemos instalar todas aquellas librerías de terceros que hemos instalado previamente de manera manual, con el riesgo que eso conlleva. + +Para ello existen dos alternativas: +* Usar contenedores (Docker por ejemplo) +* Usar Entornos virtuales + +Porqué? +* Tu tiempo es valioso y debes enfocarte en crear soluciones para resolver problemas que ayuden a otros. +* No deberías pasar tiempo instalando y desinstalando versiones de Python una y otra vez por cada proyecto. +* Deberías implementar el principio KISS para el resto de tu vida y esto es parte de ello :smile: + + +En este tutorial nos enfocaremos en el uso y desarrollo con entornos virtuales. + +

(back to top)

+ +### Backend + +Para comenzar el backend esta creado con: + +- [![Python][python-shield]][python-url] +- [![FastApi][fastAPI-shield]][fastAPI-url] + +

(back to top)

+ + +## Inicio +The following tools are prior to follow this tutorial and you will be need it running on your machine, however you can find here is a quickly reminder: +* [![Docker][docker-shield]][docker-url] +* [![Git][git-shield]][git-url] +* [![Postman][postman-shield]][postman-url] +* Your Favorite IDE +### Prerequisites + +This is quick guide of how to install the tools that we will need to use our pre built backend. +* Git + * macOS -> Use Homebrew package manager -> [Learn more here][gitMac] + ```sh + brew install git + ``` + * Linux + * For distribution based on Debian/Ubuntu + ```sh + apt-get install git + ``` + * For Fedora + ```sh + yum install git + ``` + For others distributions, visit [Download Git for Linux/Unix][gitLinux] + + * Windows + + You can download the latest 32-bit version [Click Here][gitWindows32bit]
+ For other downloads, visit [Dowload git for Windows][gitWindows] + +* Docker + * macOS + + * For Mac with Apple silicon [here][dockerapplesilicon] + * For Mac with Intel chip [here][dockerappleIntel] + + For more info visit [Docker Install on Mac][dockermac-url] + * Windows + We suggest read this first [Docker install on Windows][windowsDocker-url] + + You can download clicking [Desktop][windowsdektop-url] + + * Linux/Unix + + You can dowload directly [Docker Desktop][linuxdockerdesktop-url] here and follow the instructions, but you must know that in Linux/Unix you have two options and you can read more here [Docker Desktop or Docker Engine][linuxdocker-url] +### Installing + +1. Clone the repo + ```sh + git clone https://github.com/molro/backend.git + ``` + +2. Run and stop the backend + + - Run the backend + ``` sh + docker compose up -d + ``` + - Stop the backend + ``` sh + docker compose down + ``` + +3. Test the endpoints + + Actually the backend has only two endpoints working + + 1. GET ``` http://127.0.0.1:3009 ``` - Response status 200 and Json. The first time the reponse will be an empty array ```[] ``` + 2. POST ``` http://127.0.0.1:3009/crear ``` - Response 200 and OK message and Post a preestablished message + ```sh + { + "_id": str, + "tipo": "Usuario", + "estado": "Feliz", + "__v": 0 + } + ``` + +4. Code! + + Write your code, make the API-REST growing up or connect with your frontend. + +5. Testing your code + - Running the application and review the changes + ```sh + docker compose up -d + ``` + - Stop the application + ```sh + docker compose down + ``` + +8. Add, Commit and Push! +```sh + git add . + git commit -m "Your Commit" + git push +``` +

(back to top)

+ + +## Roadmap + +- [x] Create API-REST version 0.1 +- [x] Create Dockerfile +- [x] Create Docker Compose +- [x] Build Docker Image 0.1 +- [x] Push image to Docker Hub +- [x] Create documentation version 0.1 +- [ ] API-REST version 0.2 + - [ ] Re-estructure endpoints + - [ ] Implement authorization method + - [ ] Create new docker image + - [ ] Push new version of image +- [ ] Case of uses section +- [ ] Troubleshooting +- [ ] Acknowledgments section +See the [open issues](https://github.com/molro/backend/issues) for a full list of proposed features (and known issues). + +

(back to top)

+ + +## License + +Distributed under the GPL License. See [License][license-url] file for more information. + +

(back to top)

+ + + + +## Contact + +[![Twitter][twitter-shield]][twitter-url] [![GitHub][github-shield]][github-url]
+Project Link: [https://github.com/molro/backend](https://github.com/molro/backend) + +

(back to top)

+ + + + + + +[python-shield]:https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54 +[python-url]: https://www.python.org + +[fastAPI-shield]:https://img.shields.io/badge/FastAPI-005571?style=for-the-badge&logo=fastapi +[fastAPI-url]:https://fastapi.tiangolo.com + +[nodejs-shield]: https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white +[node-url]: https://nodejs.org/en/ +[expressjs-shield]: https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB +[expressjs-url]: https://expressjs.com +[mongoDB-shield]: https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white +[mongoDB-url]: https://www.mongodb.com +[mongoose-shield]: https://img.shields.io/badge/mongoose-6.6.5-red +[mongoose-url]: https://mongoosejs.com +[docker-shield]:https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white +[docker-url]: https://www.docker.com +[git-shield]:https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white +[git-url]: https://git-scm.com + +[postman-shield]:https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=white +[postman-url]: https://www.postman.com + + +[twitter-shield]:https://img.shields.io/twitter/follow/molro?style=social +[twitter-url]:https://www.twitter.com/molro +[github-shield]:https://img.shields.io/github/followers/molro?style=social +[github-url]: https://github.com/molro/ + +[gitMac]:https://git-scm.com/download/mac +[gitLinux]:https://git-scm.com/download/linux +[gitWindows32bit]:https://github.com/git-for-windows/git/releases/download/v2.38.1.windows.1/Git-2.38.1-32-bit.exe +[gitWindows]:https://git-scm.com/download/win + +[dockerapplesilicon]:https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-arm64 +[dockerappleIntel]:https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-amd64 +[dockermac-url]:https://docs.docker.com/desktop/install/mac-install/ + +[windowsDocker-url]:https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend +[windowsdektop-url]:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe + +[linuxdocker-url]:https://docs.docker.com/desktop/faqs/linuxfaqs/#what-is-the-difference-between-docker-desktop-for-linux-and-docker-engine +[linuxdockerdesktop-url]:https://docs.docker.com/desktop/install/linux-install/ + +[license-url]:https://github.com/molro/backend/blob/main/LICENSE \ No newline at end of file diff --git a/Backend/FastAPI/main.py b/Backend/FastAPI/main.py index 7b9c125..dff93f0 100644 --- a/Backend/FastAPI/main.py +++ b/Backend/FastAPI/main.py @@ -6,7 +6,11 @@ # Instala FastAPI: pip install "fastapi[all]" -from fastapi import FastAPI +from fastapi import FastAPI +## Probablemente esto de error o parezca que no importa fastapi - +# Se debe a que el interprete de VSCODE esta seleccionado de manera global. +# Se puede corregir, seleccionado el interprete ubicado en la ruta venv/bin/python (La ruta de nuestro entorno virtual) + app = FastAPI() diff --git a/Backend/FastAPI/requirements-global.txt b/Backend/FastAPI/requirements-global.txt new file mode 100644 index 0000000..2281ab1 --- /dev/null +++ b/Backend/FastAPI/requirements-global.txt @@ -0,0 +1,57 @@ +anyio==3.6.2 +async-generator==1.10 +attrs==22.1.0 +beautifulsoup4==4.11.1 +certifi==2022.6.15 +charset-normalizer==2.1.0 +click==8.1.3 +exceptiongroup==1.0.1 +Flask==2.2.2 +Flask-SQLAlchemy==3.0.2 +gcloud==0.18.3 +googleapis-common-protos==1.56.4 +greenlet==2.0.1 +h11==0.14.0 +httplib2==0.20.4 +idna==3.3 +iniconfig==1.1.1 +itsdangerous==2.1.2 +Jinja2==3.1.2 +jws==0.1.3 +MarkupSafe==2.1.1 +oauth2client==4.1.3 +outcome==1.2.0 +packaging==21.3 +pluggy==1.0.0 +protobuf==4.21.3 +pyasn1==0.4.8 +pyasn1-modules==0.2.8 +pycryptodome==3.15.0 +pydantic==1.10.2 +PyJWT==2.6.0 +pyparsing==3.0.9 +Pyrebase==3.0.27 +Pyrebase4==4.5.0 +PySocks==1.7.1 +pytest==7.2.0 +python-firebase==1.2 +python-jwt==2.0.1 +pytz==2022.6 +requests==2.28.1 +requests-toolbelt==0.9.1 +rsa==4.9 +selenium==4.6.0 +six==1.16.0 +sniffio==1.3.0 +sortedcontainers==2.4.0 +soupsieve==2.3.2.post1 +SQLAlchemy==1.4.43 +starlette==0.22.0 +tomli==2.0.1 +trio==0.22.0 +trio-websocket==0.9.2 +twilio==7.15.4 +typing_extensions==4.4.0 +urllib3==1.26.10 +Werkzeug==2.2.2 +wsproto==1.2.0 diff --git a/Backend/FastAPI/requirements-preinstall.txt b/Backend/FastAPI/requirements-preinstall.txt new file mode 100644 index 0000000..e69de29 diff --git a/Backend/FastAPI/requirements.txt b/Backend/FastAPI/requirements.txt new file mode 100644 index 0000000..555fc38 --- /dev/null +++ b/Backend/FastAPI/requirements.txt @@ -0,0 +1,16 @@ +anyio==3.6.2 +click==8.1.3 +fastapi==0.88.0 +h11==0.14.0 +httptools==0.5.0 +idna==3.4 +pydantic==1.10.2 +python-dotenv==0.21.0 +PyYAML==6.0 +sniffio==1.3.0 +starlette==0.22.0 +typing_extensions==4.4.0 +uvicorn==0.20.0 +uvloop==0.17.0 +watchfiles==0.18.1 +websockets==10.4 From 82bf5e4d279e89916087ffffde8d9dd4c0fb8bf4 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Fri, 9 Dec 2022 21:22:35 +0100 Subject: [PATCH 04/11] Pendiente Requirements --- Backend/FastAPI/README.md | 154 +++++++++++++++++++++++------------- Backend/FastAPI/enlaces.txt | 3 + 2 files changed, 100 insertions(+), 57 deletions(-) create mode 100644 Backend/FastAPI/enlaces.txt diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index 069bfe4..d75cec6 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -83,7 +83,6 @@ Porqué? En este tutorial nos enfocaremos en el uso y desarrollo con entornos virtuales. -

(back to top)

### Backend @@ -95,70 +94,124 @@ Para comenzar el backend esta creado con:

(back to top)

- -## Inicio -The following tools are prior to follow this tutorial and you will be need it running on your machine, however you can find here is a quickly reminder: -* [![Docker][docker-shield]][docker-url] +### Qué es un entorno virtual? + +Es un directorio autocontenido, que en su interior contiene una instalación de python con la versión particular para ese proyecto. Nos permite instalar además librería de terceros. + +Es decir, permite ejecutar un proyecto con python y sus librerías, al mismo tiempo que tenemos otro proyecto con versiones de python y/o librerías distintas, sin necesidad de instalar y desinstalar cada vez que cambiemos de proyecto. + +### Ventajas + +La principal ventaja que nos encontramos es que nos permiten la portabilidad de nuestras aplicaciones. Imagina que escribes código, subes al repositorio y un compañero continúa con el proyecto desde su ordenador. El deberá instalar las liberías necesarias, pero puede ocurrir que existan diferentes versiones disponibles, esto lo podemos simplificar con una técnica similar al package.json de NodeJs, técnica que veremos mas adelante. + +Otra ventaja es la estandarización, tu y todos los desarrolladores que trabajéis sobre la aplicación utilizaréis las mismas versiones tanto del lenguaje y de las librerías. + +### Global vs Entorno Virtual + +Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes. +IMG1 GLOBAL +IMG 2 LOCAL + +

(back to top)

+ +## Primeros pasos + +Crear un entorno virtual es relativamente sencillo, para ello necesitaremos tener instalado: +* [![Python][python-shield]][python-url] * [![Git][git-shield]][git-url] -* [![Postman][postman-shield]][postman-url] -* Your Favorite IDE -### Prerequisites +* Tu IDE Favorito +### Pre requisitos -This is quick guide of how to install the tools that we will need to use our pre built backend. +Cómo instalar alguna de las herramientas * Git - * macOS -> Use Homebrew package manager -> [Learn more here][gitMac] + * macOS -> Homebrew package manager -> [Learn more here][gitMac] ```sh brew install git ``` * Linux - * For distribution based on Debian/Ubuntu + * Para distribuciones basadas en Debian/Ubuntu ```sh apt-get install git ``` - * For Fedora + * Basadas en Fedora ```sh yum install git ``` - For others distributions, visit [Download Git for Linux/Unix][gitLinux] + Otras distribuciones [Download Git for Linux/Unix][gitLinux] * Windows - You can download the latest 32-bit version [Click Here][gitWindows32bit]
- For other downloads, visit [Dowload git for Windows][gitWindows] + La última versión de 32bit se puede descargar [Click Here][gitWindows32bit]
+ Para otras descargas, puedes hacerlo desde [Dowload git for Windows][gitWindows] -* Docker +* Python * macOS - * For Mac with Apple silicon [here][dockerapplesilicon] - * For Mac with Intel chip [here][dockerappleIntel] - - For more info visit [Docker Install on Mac][dockermac-url] + * Última versión [here][pylatestmacos] + * Otras versiones [here][pymacos] + * Windows - We suggest read this first [Docker install on Windows][windowsDocker-url] - - You can download clicking [Desktop][windowsdektop-url] + * Última versión [here][pylatestwin] + * Otras versiones [here][pywin] * Linux/Unix - You can dowload directly [Docker Desktop][linuxdockerdesktop-url] here and follow the instructions, but you must know that in Linux/Unix you have two options and you can read more here [Docker Desktop or Docker Engine][linuxdocker-url] -### Installing + * GZipped source tarball [here][pygzip] + * XZ source tarball [here][pyxz] +### Creando Entornos Virtuales -1. Clone the repo +Trabajaremos sobre la terminal. + +1. Clonamos el repositorio ```sh - git clone https://github.com/molro/backend.git + git clone https://github.com/mouredev/Hello-Python.git ``` -2. Run and stop the backend +2. Nos ubicamos en el directorio donde esta el backend - - Run the backend ``` sh - docker compose up -d + cd /Hello-Python/Backend/FasAPI/ ``` - - Stop the backend +3. Comprobamos la versión de Python, en mi caso tengo la versión 3.10 + ``` sh - docker compose down + python3 --version ``` +4. Comprobamos las liberías y versiones instaladas, con alguno de los comandos. + ``` sh + python3 -m pip list + ``` + ``` sh + pip list + ``` + ``` sh + pip freeze + ``` + Veremos como resultado todas las librerías instaladas y sus respectivas versiones. + +5. Creamos nuestro entorno virtual, para ello utilizaremos la siguiente sintaxis + + ``` sh + python3 -m venv NOMBRE DEL DIRECTORIO VIRTUAL + ``` + Ejecutamos el comando para crear un directorio llamado venv (De esta manera automáticamente se incluira en el git ignore, puedes llamarlo como desees, pero deberás incluir el directorio manualmente dentro del archivo .gitignore) + + ``` sh + python3 -m venv venv + ``` + Esto nos creará un directorio donde se instalará todo lo que necesitemos para el proyecto. +6. Repetimos el paso 4 y comprobamos las versiones instaladas. +7. Instalamos las librerías utilizadas en el proyecto: + + ``` sh + pip install "fastapi[all]" + ``` +8. Volvemos a repetir el paso 4 y comprobamos las versiones instaladas. + + Podemos ver las diferencias + + 3. Test the endpoints Actually the backend has only two endpoints working @@ -196,31 +249,11 @@ This is quick guide of how to install the tools that we will need to use our pre ```

(back to top)

- -## Roadmap - -- [x] Create API-REST version 0.1 -- [x] Create Dockerfile -- [x] Create Docker Compose -- [x] Build Docker Image 0.1 -- [x] Push image to Docker Hub -- [x] Create documentation version 0.1 -- [ ] API-REST version 0.2 - - [ ] Re-estructure endpoints - - [ ] Implement authorization method - - [ ] Create new docker image - - [ ] Push new version of image -- [ ] Case of uses section -- [ ] Troubleshooting -- [ ] Acknowledgments section -See the [open issues](https://github.com/molro/backend/issues) for a full list of proposed features (and known issues). - -

(back to top)

## License -Distributed under the GPL License. See [License][license-url] file for more information. +Creado bajo licencia Apache-2.0 visita aquí para mas información [licencia][license-url].

(back to top)

@@ -272,9 +305,16 @@ Project Link: [https://github.com/molro/backend](https://github.com/molro/backen [gitWindows32bit]:https://github.com/git-for-windows/git/releases/download/v2.38.1.windows.1/Git-2.38.1-32-bit.exe [gitWindows]:https://git-scm.com/download/win -[dockerapplesilicon]:https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-arm64 -[dockerappleIntel]:https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-amd64 -[dockermac-url]:https://docs.docker.com/desktop/install/mac-install/ +[pylatestmacos]:https://www.python.org/downloads/release/python-3111/ +[pymacos]:https://www.python.org/downloads/macos/ + +[pylatestwin]:https://www.python.org/downloads/release/python-3111/ +[pywin]:https://www.python.org/downloads/windows/ + +[pygzip]:https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tgz +[pyxz]:https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz + +[pywindowsdockermac-url]:https://docs.docker.com/desktop/install/mac-install/ [windowsDocker-url]:https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend [windowsdektop-url]:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe @@ -282,4 +322,4 @@ Project Link: [https://github.com/molro/backend](https://github.com/molro/backen [linuxdocker-url]:https://docs.docker.com/desktop/faqs/linuxfaqs/#what-is-the-difference-between-docker-desktop-for-linux-and-docker-engine [linuxdockerdesktop-url]:https://docs.docker.com/desktop/install/linux-install/ -[license-url]:https://github.com/molro/backend/blob/main/LICENSE \ No newline at end of file +[license-url]:hhttps://github.com/mouredev/Hello-Python/blob/main/LICENSE \ No newline at end of file diff --git a/Backend/FastAPI/enlaces.txt b/Backend/FastAPI/enlaces.txt new file mode 100644 index 0000000..6b506cd --- /dev/null +++ b/Backend/FastAPI/enlaces.txt @@ -0,0 +1,3 @@ +Interprete VSCODE - https://bobbyhadz.com/blog/python-no-module-named-fastapi +Entornos virtuales python - https://docs.python.org/es/3/tutorial/venv.html +Venv Gitignore - https://stackoverflow.com/questions/42306410/gitignore-syntax-how-to-exclude-virtualenv-sub-directories From aa69bda9c55e714cfb5156f2970735006391c0fd Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Sat, 10 Dec 2022 11:36:31 +0100 Subject: [PATCH 05/11] =?UTF-8?q?Pendiente=20Imagenes=20y=20=C3=BAltima=20?= =?UTF-8?q?revisi=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/FastAPI/README.md | 130 ++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 75 deletions(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index d75cec6..e93e277 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -28,11 +28,11 @@

🎯 Desarrollo de Python con entornos virtuales
- Archivos » + Archivos »
- Reportar un bug + Reportar un bug · - Asignar una feature + Asignar una feature

@@ -64,7 +64,7 @@ -## About +## Introducción Por defecto la instalación de Python, incluye una gran cantidad de librerías de manera nativa y por defecto en la instalación de Python. Sin embargo es habitual el uso de liberías de terceros, como en este caso FastAPI. @@ -94,7 +94,7 @@ Para comenzar el backend esta creado con:

(back to top)

-### Qué es un entorno virtual? +## Qué es un entorno virtual? Es un directorio autocontenido, que en su interior contiene una instalación de python con la versión particular para ese proyecto. Nos permite instalar además librería de terceros. @@ -160,7 +160,7 @@ Cómo instalar alguna de las herramientas * XZ source tarball [here][pyxz] ### Creando Entornos Virtuales -Trabajaremos sobre la terminal. +IMPORTANTE!!! Trabajaremos sobre la terminal. 1. Clonamos el repositorio ```sh @@ -193,7 +193,7 @@ Trabajaremos sobre la terminal. 5. Creamos nuestro entorno virtual, para ello utilizaremos la siguiente sintaxis ``` sh - python3 -m venv NOMBRE DEL DIRECTORIO VIRTUAL + python3 -m venv NOMBRE_DIRECTORIO_VIRTUAL ``` Ejecutamos el comando para crear un directorio llamado venv (De esta manera automáticamente se incluira en el git ignore, puedes llamarlo como desees, pero deberás incluir el directorio manualmente dentro del archivo .gitignore) @@ -201,52 +201,58 @@ Trabajaremos sobre la terminal. python3 -m venv venv ``` Esto nos creará un directorio donde se instalará todo lo que necesitemos para el proyecto. -6. Repetimos el paso 4 y comprobamos las versiones instaladas. -7. Instalamos las librerías utilizadas en el proyecto: +6. Para activar el entorno virtual necesitaremos activarlo mediante el siguiente comando: + ```sh + source NOMBRE_DIRECTORIO_VIRTUAL/bin/activate + ``` + En nuestro caso utilizaremos el siguiente comando + ```sh + source venv/bin/activate + ``` + + Para desactivar utilizamos + ``` sh + deactivate + ``` + +7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual) +8. Instalamos las librerías utilizadas en el proyecto (Dentro del entorno virtual): ``` sh pip install "fastapi[all]" ``` -8. Volvemos a repetir el paso 4 y comprobamos las versiones instaladas. +9. Volvemos a repetir el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual). Podemos ver las diferencias - - -3. Test the endpoints + - Actually the backend has only two endpoints working - - 1. GET ``` http://127.0.0.1:3009 ``` - Response status 200 and Json. The first time the reponse will be an empty array ```[] ``` - 2. POST ``` http://127.0.0.1:3009/crear ``` - Response 200 and OK message and Post a preestablished message +### Manejando e instalando librerías + +En este caso puede parecer sencillo instalar todas las librerías que necesitamos, ya que solo nos bastaría con el comando ```pip install "fastapi[all]" ```, pero sin embargo es probable que otros proyectos mas grandes requieran mas librerías y trabajar con versiones específicas. + +A diferencia de otras tecnologías como NodeJS, que maneja sus paquetes y versiones mediante el archivo ```package.json``` que se crea una vez que inicializamos un proyecto. En python deberemos hacerlo de manera manual, lo haremos mediante la creación del archivo ```requirements.txt``` lo haremos siempre dentro del entorno virtual, podemos hacerlo en los siguientes pasos: +#### Crear requirements.txt +1. Para crear el archivo ```requirements.txt``` ```sh - { - "_id": str, - "tipo": "Usuario", - "estado": "Feliz", - "__v": 0 - } - ``` + python3 -m pip freeze > requirements.txt + ``` + Si recordamos ```pip freeze``` nos permitía ver todas las librerías instaladas. Al utilizar ```>``` le estamos diciendo, el resultado de ```python3 -m pip freeze``` sácalo en ```requirements.txt```. -4. Code! +2. Si abrimos el archivo ```requirements.txt``` veremos todas librerías y versiones de python utilizadas en el proyecto. - Write your code, make the API-REST growing up or connect with your frontend. +* IMPORTANTE!!!! Si ejecutamos estos comandos, fuera del entorno virtual nos recopilará todas las librerías en nuestro ordenador de manera global. +Puedes probarlo para ver las diferencias entre instalación *Global vs Entorno Virtual* -5. Testing your code - - Running the application and review the changes +#### Instalar con requirements.txt +1. Para instalar necesitaremos tener el archivo ```requirements.txt```en la raíz del proyecto y tener activado el entorno virtual. ```sh - docker compose up -d + python3 -m pip install -r requirements.txt ``` - - Stop the application - ```sh - docker compose down + Este comenzará a instalar todas las dependencias dentro de nuestro entorno virtual. +2. Una vez finalizada podemos comprobar, con + ``` sh + python3 -m pip list ``` - -8. Add, Commit and Push! -```sh - git add . - git commit -m "Your Commit" - git push -```

(back to top)

@@ -263,48 +269,23 @@ Creado bajo licencia Apache-2.0 visita aquí para mas información [licencia][li ## Contact [![Twitter][twitter-shield]][twitter-url] [![GitHub][github-shield]][github-url]
-Project Link: [https://github.com/molro/backend](https://github.com/molro/backend) +Project Link: [Hello-Python](https://github.com/mouredev/Hello-Python/tree/main/Backend/FastAPI)

(back to top)

- - + [python-shield]:https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54 [python-url]: https://www.python.org [fastAPI-shield]:https://img.shields.io/badge/FastAPI-005571?style=for-the-badge&logo=fastapi [fastAPI-url]:https://fastapi.tiangolo.com - -[nodejs-shield]: https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge&logo=node.js&logoColor=white -[node-url]: https://nodejs.org/en/ -[expressjs-shield]: https://img.shields.io/badge/express.js-%23404d59.svg?style=for-the-badge&logo=express&logoColor=%2361DAFB -[expressjs-url]: https://expressjs.com -[mongoDB-shield]: https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge&logo=mongodb&logoColor=white -[mongoDB-url]: https://www.mongodb.com -[mongoose-shield]: https://img.shields.io/badge/mongoose-6.6.5-red -[mongoose-url]: https://mongoosejs.com -[docker-shield]:https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white -[docker-url]: https://www.docker.com + [git-shield]:https://img.shields.io/badge/git-%23F05033.svg?style=for-the-badge&logo=git&logoColor=white [git-url]: https://git-scm.com - -[postman-shield]:https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge&logo=postman&logoColor=white -[postman-url]: https://www.postman.com - - -[twitter-shield]:https://img.shields.io/twitter/follow/molro?style=social -[twitter-url]:https://www.twitter.com/molro -[github-shield]:https://img.shields.io/github/followers/molro?style=social -[github-url]: https://github.com/molro/ - -[gitMac]:https://git-scm.com/download/mac -[gitLinux]:https://git-scm.com/download/linux -[gitWindows32bit]:https://github.com/git-for-windows/git/releases/download/v2.38.1.windows.1/Git-2.38.1-32-bit.exe -[gitWindows]:https://git-scm.com/download/win - + [pylatestmacos]:https://www.python.org/downloads/release/python-3111/ [pymacos]:https://www.python.org/downloads/macos/ @@ -315,11 +296,10 @@ Project Link: [https://github.com/molro/backend](https://github.com/molro/backen [pyxz]:https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz [pywindowsdockermac-url]:https://docs.docker.com/desktop/install/mac-install/ + +[twitter-shield]:https://img.shields.io/twitter/follow/molro?style=social +[twitter-url]:https://www.twitter.com/molro +[github-shield]:https://img.shields.io/github/followers/molro?style=social +[github-url]: https://github.com/molro/ -[windowsDocker-url]:https://docs.docker.com/desktop/install/windows-install/#wsl-2-backend -[windowsdektop-url]:https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe - -[linuxdocker-url]:https://docs.docker.com/desktop/faqs/linuxfaqs/#what-is-the-difference-between-docker-desktop-for-linux-and-docker-engine -[linuxdockerdesktop-url]:https://docs.docker.com/desktop/install/linux-install/ - -[license-url]:hhttps://github.com/mouredev/Hello-Python/blob/main/LICENSE \ No newline at end of file +[license-url]:https://github.com/mouredev/Hello-Python/blob/main/LICENSE \ No newline at end of file From a0364096a76afd700c86cc002b602da637e31c80 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Tue, 13 Dec 2022 18:30:51 +0100 Subject: [PATCH 06/11] Imagenes --- Backend/FastAPI/README.md | 43 ++++++++++++++------- Backend/FastAPI/img_Readme/env_virtual.png | Bin 0 -> 44735 bytes Backend/FastAPI/img_Readme/global.png | Bin 0 -> 72692 bytes 3 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 Backend/FastAPI/img_Readme/env_virtual.png create mode 100644 Backend/FastAPI/img_Readme/global.png diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index e93e277..6b11e09 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -39,31 +39,36 @@ - + - + ## Introducción Por defecto la instalación de Python, incluye una gran cantidad de librerías de manera nativa y por defecto en la instalación de Python. Sin embargo es habitual el uso de liberías de terceros, como en este caso FastAPI. @@ -85,6 +90,7 @@ Porqué? En este tutorial nos enfocaremos en el uso y desarrollo con entornos virtuales.

(back to top)

+ ### Backend Para comenzar el backend esta creado con: @@ -94,32 +100,37 @@ Para comenzar el backend esta creado con:

(back to top)

+ ## Qué es un entorno virtual? Es un directorio autocontenido, que en su interior contiene una instalación de python con la versión particular para ese proyecto. Nos permite instalar además librería de terceros. Es decir, permite ejecutar un proyecto con python y sus librerías, al mismo tiempo que tenemos otro proyecto con versiones de python y/o librerías distintas, sin necesidad de instalar y desinstalar cada vez que cambiemos de proyecto. + ### Ventajas La principal ventaja que nos encontramos es que nos permiten la portabilidad de nuestras aplicaciones. Imagina que escribes código, subes al repositorio y un compañero continúa con el proyecto desde su ordenador. El deberá instalar las liberías necesarias, pero puede ocurrir que existan diferentes versiones disponibles, esto lo podemos simplificar con una técnica similar al package.json de NodeJs, técnica que veremos mas adelante. Otra ventaja es la estandarización, tu y todos los desarrolladores que trabajéis sobre la aplicación utilizaréis las mismas versiones tanto del lenguaje y de las librerías. + ### Global vs Entorno Virtual Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes. -IMG1 GLOBAL -IMG 2 LOCAL +

(back to top)

+ ## Primeros pasos Crear un entorno virtual es relativamente sencillo, para ello necesitaremos tener instalado: * [![Python][python-shield]][python-url] * [![Git][git-shield]][git-url] * Tu IDE Favorito + ### Pre requisitos Cómo instalar alguna de las herramientas @@ -158,6 +169,7 @@ Cómo instalar alguna de las herramientas * GZipped source tarball [here][pygzip] * XZ source tarball [here][pyxz] + ### Creando Entornos Virtuales IMPORTANTE!!! Trabajaremos sobre la terminal. @@ -223,14 +235,15 @@ IMPORTANTE!!! Trabajaremos sobre la terminal. ``` 9. Volvemos a repetir el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual). - Podemos ver las diferencias - + Podemos ver las diferencias revisando los archivos requirements-global.txt versus requirements.txt + ### Manejando e instalando librerías En este caso puede parecer sencillo instalar todas las librerías que necesitamos, ya que solo nos bastaría con el comando ```pip install "fastapi[all]" ```, pero sin embargo es probable que otros proyectos mas grandes requieran mas librerías y trabajar con versiones específicas. A diferencia de otras tecnologías como NodeJS, que maneja sus paquetes y versiones mediante el archivo ```package.json``` que se crea una vez que inicializamos un proyecto. En python deberemos hacerlo de manera manual, lo haremos mediante la creación del archivo ```requirements.txt``` lo haremos siempre dentro del entorno virtual, podemos hacerlo en los siguientes pasos: + #### Crear requirements.txt 1. Para crear el archivo ```requirements.txt``` ```sh diff --git a/Backend/FastAPI/img_Readme/env_virtual.png b/Backend/FastAPI/img_Readme/env_virtual.png new file mode 100644 index 0000000000000000000000000000000000000000..b778b730eaf2a58cfd5c6ce4b8eab94feaea5010 GIT binary patch literal 44735 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 oOPj@3H8|QJXP>=K5vHOfje4hh5;y^}6c<;K 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 lo3hD4;Noqw6!hIq+CM+?S+%;WHgKSl zrC~secLdRWy*8fI=x(rPu8739VZ2)S0yarDGYN5)2w#52P@0dU**GYVS|IcCpg1Sp z&^d-wXzXzeh{Vhi(x`fEw0`tS^5XTmLuSi*)(`#OpoY@Z?`HY9GU+k;+*xM|bzM#f zND+`Y&!}D;mRB$RrX1v1_fr4+cNj+-`6MpzZ z)#-5^kHpeKu0#;@Vs%BjMp-D+_f_T!UQ>D6qA`7`Zl zO3wy$H*YOu6Jc*m8T+xcp1wFgLEFbj=kK{y#nuuDLo`SEhZliC)2cJLoV}K^cAC>$ zoCyfyqRX#qC8F+RL{8y&!NDICDm_aCsq}&-M|C~fpBvvOCCOc*MiT7~JMKo6HS!u< zFyP&6UY4EG%r5Iw3p81Op&c7c3vjij^D3R=Un8ht1OPTjC>igzt5=W!F;Xifg}JlNNUIxZ|Z{ z`r@p%V#)WiV9zG{1%07ynjpH|fLHnEhUMK`tb@zz@@Z6IF^=)Hb(5ATcV@GIX(H*O zV~3*seUQA!97C*R^wiNd@|O4Mm_3T}Z)SXrBKn29k@B_-f-dfsrSI^AF2_pB7f1mn&XXc%miC`KDJty=SjBcH091t{CVuT z7qk5Dx~f_~f!^9mQvm^K`SXBG?Z^;oRgWjDd=!T3$bI$`WZK>$ouj<_GXFdvLKEF( z^Kj84LG$^nTZ%w4jpW6G)&OELK6CS=JG7g8ERm@kwVs*RN)FjJ_Iq%hI(9PMvstM+ z;yS%?o_o+g?HFSiO{SS9v1_9uo@}#;H>&ra;oWQlRe4#QGtS#W8V-(rNrlCQOx`$0 zn2yk}CfDx|n_K)vmDFt1)E=C+)zuF;rm*q(p(;vOfJS`O!>Ih&q^2u?bvno|ZtR8M zgQO;PwOSkbyuKN9@pJ8Aq`!Tht6%7R*AIQ>`X2#QErtSR=4iWZ&4B8z)w6Iyai?td# zAs+(~vvQ8%H>SilNE{)^1SY#d_?RXn$N^LK5uN7yp=)gh8GWNuLQatB#SZ=xi zcncIPQn#x|b)06n0lw>&Ud$w-z(v4=Ga;ktf}^9HRp%Jl>2egwT>7le)2*uF21z{? zR9KoS(@oC4#a4?_;4EKm#aN(d5x!NvEw40WO+2D z?@QfhUf$2@=CCpjy4cUr_3QD86$(#%G2&~yv32NYy%bN9QhCn(qF>Wnk(KLJ8a(fK zXextm#fnuYefu&J9aX-4JI@lPPs}Qh{pON)In(8P=I>;x7{RGAqE?(J0pZ!plDWio zFa6dy1(qV`6tZhU40ExaZ|STh9dsK^as%EZr@eKQ?4uf zzyXa3MpikX_+vP$`l`?p>t5{w;*<*prB%=2CfJdEHw)gQ^#^Wlo6Lh2<@!0g1hvfY zP?zPq0)>?~;!b*d%E^lB#oS`YO~KZlZ&8Uq5ku{=rjpgWS?jk+6T`5 zFc*H7D^+_Zaew(s0PSs~hG$jlHBT^soZDdsDM!y`@y)?Cz_?V5=|?iw_d2!yHQg7Y zhY9ziR58Rb-fx>3{v}Oj)A32pptnIRT=Xrv-$_&w5*>3sgHpRsVSge_9XVhTHRvowM&Kup{i_y>4 zUKgjWd)Y0G@1P)ymZ~mZJtKW2NjQUvgCE;zA9&)#-n<)ryt^F#Ysx z(>RXn$68Ys`82hxM$}Yc9iaUqCkW1qw@p1$&J1dk{YAJcx_?H@lxt7^emnknK1gQA zoo9l9SKjST(Xs<{g}b6aP$iB*0fyAEA#;OM{qvNo4^?h@MI%?7=MBtrFoMx_uHYDJ z4Z4jn_qAI;`Z;qs<>w}g?MqP5(Nh1qgz-j=K+PM0#xZXxZ$onQpdhHW%;Id1k!=)H1zLZyX%0QUZ@r&w80J_db0eu@HqF__xs0J(`;9jW*!@@Pc*HUi;lS4V4K?c5lD&wZRD?zBtFvtAiX;jjv8eoKh0E+`8taajz4(Zr zr6-*Dqp8yn%xHoOf74yqebw?!`coQ}R3zJx)LRrnY|q-<8FY{>g?GcHa)aqY4S4PF zsx6b^yOhm%Iv3|$`@>v;AnT2e%N~-c0;;L5Qqb&@L3K9JD~W%_H1vkSAWQg3R6|ED zyMM-*ZM^Epx8?{Mr(cqI{hEV+1&{Og%JSiX9GPHjMW5Fiu zMzWqQyP;!?Z+%zTx#t{9Dc!3v%7ss~g>{f4sAZ&f6l3y$EQ6i3=vL8knw0)gNg_m* z=&3x_Jv9DRO!VN*Rx_%sf81hl<+yUlI%g?39VIU(cZ0Sv%1rKbZ`GccSDrZt%k8H6-W`hrD{_jWjARV=`Y z4(Cfod{fR57A_5c8?+H;F zTRPS!a3`o~)`nwUSv37*Y&9EVmuF@+eiZ zF=UoG4%fT88*Eo~8MG?s^qQ>W@C@C=);x}wzaIEJ9KYvT`SSHo=k40=eTH3E93arB z^Shoft+u}UORQ$j+2(FHtbZ$=5ySYNqEW_%Ju(h_WXGFQ90$IM6bEZdcAA)%4{%_ zz%(4eN**N45kt(UMyr@kJxJo3Ia8)NdevpuaW18vLS|0F?-W~J)i%-)_c$s1!1Rt{ z@?vLH5iNU70OEhWP;0t#+`P_h`4_Q_HCa@76TRi>W_btDmJ;8Qx{=dEuoJ5R`g*sS zK**yZuXoA&b~R|P86XvRffz!c6%Yx@QT-d3sbp9Plr|y4o;TJ9zY0QL-He6!ZmwRelq7J{B960?SQI;oweAy#*cvtr^7)QX+G_GNZ;I-G4Q^gE$XeYS>`tN zE>w%zRfQeFg0a+->J35Txg=t9;$-swV6&v5RRN-Cw3<&w#9>Gkq470lqGA+zd92TL z7@;p396};;KPXJGZt%KUw758FKOIRi@}UQmyi^K<{(LcvCxE92*cA2oyYbEu*%Ulb z_mQ5XBjBU4AQ=*@*ugnwv9KZS(OhLhrCzgKv+e4((aU{`?AClTgJv1^n6&wc<4`O` zQ6>PiW{7*)wj`T;Ry|7fOC2&Bn*k~$!zBiv{iE>XnfN7iHI@=D1u9SXy+YxAk~3_@ zGz_jPFv}0a{N4X7Y(*1~&n(+c_1o{q@PJ-bwe1 z&t-rwFu^<5^F}=Oz^ltC?)ECzs>*dptX=?wUz+@gj2H(+rXUGMCCjeA<;&kF@Ray%dgp*ig6M}MC zJ~?o}-VXox{BT+nkYU?43_5XQ+K>G8Lsb>9pI>07)TG7`z;M4Fw%~k!`@b6jyz4kw z?C09RGc6O_pu6-}#-J$D&64BvM-3^fZgA~N!29?d>$MJ@bZ#qM>O)}hV+;G37;OVD zDbL(nnM$3UsTWy&07 zX=kbmU`A|(GfU3XT$jpN<0t>3aKL5vJAG6rqey%Z`j(jMeIzR4Q z-k?D+;8?>&1z{|8q`Dt3A_#hVOi}-F=ND5FsYn3tB0?R$56D<-8#fVP0m1P{kE|x- zj5$M7G4?-$+d^a`r2I}LinwlORYBP-R-&JH0_0gQ&U(=@HY5blBn<#ckkj64vCYP> zQz>zh)sAv(=qr{apz4q7W37RZojJ$`Yu?`)&yy*panRTr4p$5JXgp&4z7yL3ftBo+ z8Z7O*h3o}QZ4pLq0RT%FLL%^T2cVeN`omVh>cf)9#*JU&M;m7ayAFl&>vZT8NJXW> zd})4D4likL)O6B9w|8aM>8PlBv7sCNACN#}Art%{;{u{d@&c#!bB*l5L|Fa^fD>jX z)X+sY=ACo#kdx17APE<>lp<#y9a>8zNv@ecp>iZ~>FOn!5X9=Wy2Klcao=d&D#(0a z5Ng}HgS+(MVmm3Uhu7;~D#LKs!zMrTR#PGjo#D<+Q-bD&=o8WiE)0RHROt!_ ztEqlf4luVGb?>u6>^*k_Qm?unPTJpO;l#6mIRAws-=ajNf)A!_gK+=B6F|6Bg)tP$ zW6&z4V%McW^?ijTJJ$yjcP~X43+y6fKsz$Uf$d)xC^{E%(1TynyE%dxx-?f80>!f8 zrcf732#(_vA5hT@>ZfU&W|KOt=@_{o3635}dIwu)OAy4a64Iaa?(CXW9u*q5pl9e; zvz<|IP3J{(68q*_O^XCGs_7N#Xu0(|c>j~WyD0fFUjg}?E$bUDBs~oL64j5kE}va9 zGZw$cob!hwbO=6zJYp8bzq4@qajjjDEG_kHS`&Kq_1JUz8~Hw6b2FU57fy@3+$oE1 zBAxyQ!U5zIN{Ju5cO`T%JJ7EI9~029A>bwT#ZP-FweU+)nDuB=jO<%ysx$?pZok%T zU}0N`H6za$d0!{xCX#=UTv7NPo77}EJz)N;fHIZ?##*+=#Jrj^|9cIuU65Gh+M3ge zl}M9ahwz4;24K~ZU@RF6H1JEHc|x<6P&&xoIOAir2)rUpRgBz%H%Ee=_U<%H6B*pI zR!0rF*6XE|C3irq)sUphfIOq>f4NnTWC|0bTUDeE%LIe`z%e5TAbEe;HD<8=iPJ&0 z-YzEOK?zTG+$b4CX4Kzbgb{h+tW#_S;e}|^JTrKH)cg1?BU7}K5AsYh0x=&FR&clPJI~CE%h{lx1+_@>j>a!*c~YUhQzr3_d0Js zXH3RqEe*htV6pqZ+nN3%`8@(^Sy1%1fJ2{5?;6T{UQ!M36!qx7&FJ-OWn2=WWDD3S z!Xo()f5M+%7fO%OOcra8xdtT^exEdWRKdeieAl9MiNerp*Yn39*+It+;f&IY2Lm$? z)V6iH>JX%iZL;FYE$kJ|Lfi){{4Px_cE|Rg3V;${m#fp&^+B)ml@qQt!Lr)JqeyFIQhzDYhAwZHc{N{o?{*kJ|VMk8; zZX<`l6s?@mw;m=~r^6Z9s@7e?G$GHX75BX?osv8+oHV9v@Yo929$Zoc5E%+l>aZi2 zudh&ii%zK4c?nWHKn{Fl(5}*__5dgWj%;71RD%vT`#865sCKO52-dEBJOfJb*`>Qd zxcoN?J~hiax1O<1%V}DAI=a}$$46f5p3O~64;HoYJ$flt9Dj}oQK>`>E8k~8A0sLX z0x+_4w)-x@8~9G460O6zN-JDErBpUCV@j!jg|4t(5BI~;;=U>9C{j+{U{nHzFRrbN zT{+%2I`KrbUxI()XCKX1=O6%&YM41Ing+NwPW#7mjJZUG3~uHc;RVtj*m8vaCIDMy zn0;$bMoiWKvJxUMmg^u9kt70IYd#M)2`u~1Luf8^Bj)4j1e;1c=4R&Q(E7edvp`D9 zRP`0Q4BX_hUAItl+VW~Z4X-Qzse9R7$IgBurHU3{wBEd7HO20oH}Yi$LiI90l^*-|lok33?w2d61%KUzsV8j#)rz0y;AP%9-%-;9;b*75$3bC_7PJh=o2e-f!T4(b7l+jx6Er6y(@bC?u?tkv6^0DX zB%Aq3O-l`K@&8OWV7fUiCO&jNQ-}wr;?-oG?e+5m>bE~-jyuf_GcYL`Ki)Oj?fd=F zNA^Ekp}`!z8AnF|#LkatRz5~ss2qE2ewSjOs(Et4WG+U>$)hz*L#|Y4k+DorYDG{G z@%T0Zu_$N#)CR+Q0!(>Nz9lGe+|~35|NZ^u4nXddNd;j&7%GCj=f6Obxx5%dLu^^? z+9A!06d}Zz?e8jR1tR;myRW52X_s9qE|_xIR^|Y8%+xaPlabFI#Qo`d-gJ&EISOa9 z5@OaH5N#_N2Db?4bp9`B5#g({=dcwTt?_9*rk^k)RA~5M7d++96;L@9E8)$sUOBLK zK7162VKB2i< zFYH&c!n|r@f2!8c8Bpf0WEH?6@i9FU24D|RzZ@>vzFR+=?$3?Sy1~QLg03dfgBnb=V;l87g7LvHPFe!N{FKLvAqgCi2EF zqyba3G!BTIbvA>lHwcWYj9uMWr6AVcB~uX32itRYHLwvGpjO+nLOQ`FxD2-E78*1g zaoU@9lqA>27{XU&IPy`U1(rApzBoz6;91qNY~M}P!v#RLtw=(y1(WVE*+V(UT8w|d zth+qShQLVrv#$q2TFn(zEs)oHKB)Xdb8tk8N-b1u8fKKBR3Q*%rD1q?PZP+Df)b!hkJv)FIyMR2ZZM7aK_2Z*H7G$SUPShe2ujiY*Yosg-zF)^TFU=d0X7vT?3?1j5lF zVDONnyYCMf3lbL;aqNJkw&dX*ZGDzTt66Se714&PkI8B6(vzfJV=FUn-tdmCAUlJy zn`^uZpQNX5AY{EjLt!g^u`n z2#53S3>FI#w!aTc`}Ka`L@<&8QJBHkY}azs{!{@k7E`#A4{cp4XQQuaN}MB zUZ;wEWX%$lA7}H6O?NvHm=@D5F+hq7R|-J#1ec;6!L{WjC<`yL{b--2b+m2%0Pbe{ zi=MaM!%h{)m83wD4)|K^S6BiBxboBHiV+QisO5LHF6~&$BKZQ5j)JLf&;Z0<{0J2h zcsCx@&GbQ956v+J-c#)dMyO<1q_L00WtG3 z!dwbN0bQtN`lb~5akG#(ViXY zikN+h&91jA>Sx^Mj*ZdpKl>35HHMaAcSA(D(j8=0JiRM)l%P{p^NN@Ps+;bYrx+%w z#|sRMKJw_Dx8;K2*u}_Aq#LAvy8&Lj5aX4D67<903$9E>Lle~Vr4p-HwIyd#Zx)EW zRN!P@ZtYK2|@dnN`!kSPX$&^vJc6}nP| zC=zpeXY}Pg;U0$OhPQ^dPv7NyPCIYgzFw`ogC4C}1;Rq{gnA$>G`9>;o}v_EgY>Fv ztEiCQ-Q7uUeuZJe;%yLgqWv^e0?S1aav@WFfX%FE2w6S_U^m;$2XIRt z;%#PNZ9EzQzr>9tem9s%4|gm_L4Od!!2!Sp!TlwARn9rCbKY1G~2t`v~^ z{psRUDnJXP1FN{MV)e{&)n(a+!~J5LH$a*R0|=)zjDuQnv@+|zqZh)u;wmfyK}-EF z^K5@xbXtCsvVimf_fetSv*mhDFDeO!hy$DB%E|oz1cv^0OPb1BqT5&|c( z$roHmY!0EuU}>^G{Z$vws@GKkpK(|4;x%Kv@>ck2=wN)gKSnHd@#5*^$H2}MJ3}w` zZ6;zC>IXsi$$AKkg?%|0R*P(jQMf3dIJwQ}(D)LH%bFn#bs4~fR(S!8pSd%ihFFJR z2pXBKOJg8&8XomjgXMIK=3erz3|{$?5s-)mJ&3XcyCxES6jRCj@jTA~{D5e9@p3=k zJthxDdp459kl~mxd>7C)WJkrB2*Wss(e0V*gS{S#LA4DSj1Od5M>$`55ZG@lE<8@5 zZ8`q_1yT6!Bxw^$x(`u=q~0V5BeHzE#2S?|Y!sVq`PBZq7GQPF+hMdGrh_F?7e98~ z8uvQxd|GU-oXw7Us8d2pM#zj_{_g)KsxdL@zCl4Uw}K+Ji6ejS&)|}cf9_y(jVyu5 zOX8T-_XSa2&q{Jz6PcmOL_9&v0scu2g z2gWeIWg?x6F*)g`g_(--@xP4th|Jw9D?$#&Ewl`{YczOwWG*kOZ}@BK}AY zp$T;UG1{nIZRqd=4i6t<7P8U<>amQ_q-^T=Cvz$=Y+Yyp%tCipnGbm$>~gYp_qjFR z>KH6(`AHglACD3I0UToP_EQdfOeSMYXrXSjhaD&QnC^CGa4ahnK~SzWT?%6e0y~w> ziD+^h4MV7f$r|{|QOY?ayrnfs4c|C5kwKq>1g;5~o+U!Eh?E4+CB&^QF?o&B%wVL$ zJ_;lBUXXhJp#XxntkMBplBNlb=&&z8G`k%4CgSD?0au$ihSo}hXnu0l>XMDv%Z(4q z4$<>^#BWl41n2_pYEm5k3qX=jR>cQs1P`6oR&&&^d8{3q=*GUd1Va&4cG39XHbzj0d;H)vA!lRubS=Ezb=K3##Iozn-@E{l>_-6Az;ySw z%Fvhyu+B|`Hb<PSdv>vQ^3^n7bXn-g5$mpl;*)ra|DYM2tX1x-8aOP zZpJJ1_ebgQ+b|!w6GWqUxQyO+T0Y?TYhVlkf>$F(y7GSnv0N{z*qcn%yI|#0!+#|* ztXGK)He5IOAAlP!stf<^_&d6m0MoP!Gt$HxpTN=;5U&XP1sE0Yr0(6;k;x;gA zGNDjoWIlRc@5fR)B7ygtO&xcQhfAt&+Gv?`#bZ5zmBUOk7<)pllrpE|< z@lX(+0i9;K2G=MIuph>Jfgf|#tgK@73*P2zsP#(AFE;0vR%EQ%^7C*}7OGfH2<+&G zi_Hkuw#PQa@TfW*UW<2U$P)N{ z#ElW=!f*4wsxrxq53fK}PxQOb7~-{riB6H{)gRSB2)|s~J2I~tAWI?QdyD-Rre-nl zco?t%*aD|+1JVkk&2kf$9OVe$4=Yxi9GcK9r;DN}N+FeT>w;y9`E` z?^W)R1RpCUzc%B>Ub{iGoVt}gdb18pHU~VLgw*@6LYN_7w~OW6OAV0hBXVQ2sRlka zFUP=N1Dg$6ZUFKX&+Gz8q)ir}g^w@-aFeQIBQ-Q=I5kVjuI+%fK6Dm^j%hm9SNLYZ z)V%!5rf~$VP(te?AKxGrT9_K`!2+V!VjX1aCHYw&z;v<{P+J0jRs}ujXey}M&*=xRT!?c*caIb9bmDwU+F^G$W)QSpmQC8N2F+euqAj}ZCEUXf)?D;coji8;lGW4k4-Z-tHOq7 zJ^$hXWY~Bk2_03`e-r!qHm4#6T6o30oQCU@RCu!p~j^zJI zoM`nEozRhb-KplpC?*sR zWRazFKrjnreY6Gx))S+%^ZDt4s7{^EW1ph#Im9~>$OEH86aJg4)9v4Q@%;@Nyp;e` zExoUKs3xFanccVo3(?c;WTiEjvcFp4dof;{+qsG5Tt%7=yWP>z&%Cdqryq6TtukVX z>^f9|O_nUklfd50$v_~GU~O6pgTfuZIhY=-2wDOtLD6fw+cb9|PFKv(ZMJ20cXv0> zJATD=BmVqFfa@xn_aneQq}P%6S9>LJ-G|>S05V|^UZGWvi+ar_=1SOwAMpJOW2;Bf6 z8~^+WNN5@=_)Nyzgj0!D^J~F5)zM_;@uyrj<0Mgxw>ISPHW<9d2gc_TrL0=Dld?ZMAE;+@naGW^ zaBD*Ooe!yjeHY!eKf(C_sIxN|GV%nAQA0I|iK=AUTp(Xop( zozg+tlE#8jh{g;*)FLJb)-rA$(^{EH=jo1yTFGPdy6nNTegkrh(;Tgib7PM6#e&OdIhJq8*Gt;UxK@2-BHDFN4k`u|LjxtyLjd1MR2)YwhCe@6u9@izKc zuznyauA?GI;*VmVU=dEY7q?Ojz)}5<5xr_|Qugt9icG1GdNYUN08o&G7qS!Qx?4LQ z0JJ7bwjn00fMs`l&yes4qUlHk@-?gr+*0l80@Td*l)CX+6}N;p455leeBjQa;n(&; z&$i)bw5GSE(QLBIFp2>fFbUw5f;9#nz_ZWapMuXLs6$2-8-xVp$Ta`JIpy_;{pvbS z6vXcMF3HlD{Q2=pPDefPq81nBoLBX%$2dFq21G+JfEhhVJQCF?OBX<|Ueq_vlUK1~ zQY{^c4<4}?9|j(2K}R zFZK`PUIjUB%!eh{cS(idaM3ENSoVAkY|N9|la26_-*D`X4@tvFP=!B;(XPWauGNmmOSpq~zaR%ZAav*PBuL@8tWmSpwny0>`2L=K(Kbv(l!4W=E3m;6aqGiI1(F{3IUHJZM4%k{CuWAh{{bHwO&*3El;D}Z79Q^K2Br&h@fD~STKx2d5GFK!@8``ykhQm;CK1@s&< zkb!nU>1V}lyEKe?*Dq4^U;hih8`rhV=~Vra5vGs?5Far#comx3gMxD1QrUlu@)Nf# zkSC4>aPl_Y57gENB?$`jklFF^NI|*X0&28fO=XmjMJdAXtNcuRo8vIQQm_oAsQ=p;Y4_q${2L? zuv3N>61_Zji`M%3=Pa9B=B)5->~kcw!f#w5El1?ojRBJVZRCd7UgT=mSg9@2QG_(U zPe(>i`CJMZ@Dfn8$aDD{zlP9Pt*X1s7v>iOs1?Emj6ixHl>QG>Zy6Wm_kDlE5Dp>T z-Cfch(j_G&-O?o;l0ynew{$2-mxOeO0wUcZ(t=3pea4U9-~WEE9Gw+cjFeh)XSl%^2oeJ@$>Y<5_SYAP~QV{Q}gJ4?fv=A5QBypFm;igN-PTa z2hAiB#?^-fg>Hxw%F|FH`@%?gVON5r811d+rJjk|`nW6@P;2W+md~$xKkEXB%7FLx zuz`&4vWyz~5V_?-b6v!GYx@R_e4K)S>V?ZSI8w%OC`|*C8bRe$NmC0Bb@X-&?mL@8 z5&yAu(te24W;Fd~QGFWsdpvkoLkbxvig(+GwZD?8Gnyxk=Bars0<0F}?`tscAHlHC zTZ~9hBOXJwKkGaZ8E8#t-}-5c8y$vV-7aoKuNcp-Cz}4jC~Ur^A#KW}1Qny z9pnAM2%DTkL@S4}u^xpjBQP%mN$3;IXq)oEhW7!#j$zqvG6p~)VX@h1=7h4^6%?@l zQuXD&yE3+GqbWNi6k2=qAi#pwNy8PTJX<-1X+hQVh1Ax-Ywq_R@E;lt!l?3~pUpe7 z>)yD>-Nigbgt3@|S)*vR475zCj>sxNS##X}x%;npvxE|iI_} zv8ey%!UWuK6*xkmg}>f=t20U`VojVd0N*BToKQ`>^B3QgxDK!!HN-d3AO89*{Ae|o zgB7|o&I4uckh#wc?)ssj zVwl|j8eTnUHdod>H*40=C z48ku;pb$6u$APi%cI=d)3t)Nj(|$-;!s`eP3JKNBr;P!-S$5XIaK38o{piK(sgayFvAnqyrI!?F|CTvR{V6K zOO?@Wkwu;c11|qRPq8_AQWm6H3n0nG3$;4!b(8?W)v4hc5Oz?^+meUA?s4|Yl-|Rb zI|ei%DOm;&8?h3+0%fS_x_LV?`e_u%*Y=axBHK8?9iM48A<$_|G+jSu4+=ykj>C7K zgI|rueFHEQq5rtszWiTIlV+jBW%*<@qT<-(BW*V$^L zub2YUyxxw3cnz_qc!lM(Fq)%z=5Q zbczZWZ+;$-ANYd_FzNwd*;ekJfO7lMM_nA-^rNN0KDxRW44T7iOu z!%=8_B@jRf$vE_&`_;CL#uyuLnclNK`pZ7nDEYBuh9W)4rZnp#z$MkP<*4X%UU%Ld z7$;+5?^wrOG)Ix_028M9vFY!vd$Zury7`B>LbVQ0v}`sAhefRB1Te} z$p_JLB8Ul8cEM~t?Y&9+qIuiF`}XnoB`l=glRGHGWB8FsD|qNc@&fqo7(&?kWU1*gx=EbuIn*0NfsJV7YVP0HIV__dOL zcMNkrixb1J-7&UjDQKAX>%aC>GH(pzvDdV;;%HhbEX-+-kq=K#0B&am6O#hdu+}5Z4&jBpow6Jk-gHhP zyaevcg|o6>reNPV;#36chOsOS{U{3v*{NE&U?J7EJhlUh-y>JSvBe3TXMp}io^$y{ zgjeg$$KVCb^Q6hTyWXpT=j!LmvqYw3fA!SBho&#o%;}S?f$%$%TO2=+$gf5cD~DEq znR#3P1EhQz{yu;6XI^z{dEJ(S8DjIf(Qw9q>?9@!V`7lgtZO;fqXu)W4aJ6p$w@l; zXTK&(pa1bIoW37v<*i^_8e*Zp6sY%%TSqq)7EpU5xzb(t{4<^Bc1sjb+7nE@v;ZmY zkAc=jd^m%6F6eMyMJ`>^Yms8P`Oo3p%5yHJEaU16*R-%^-%uU`*k<3`T9?(!fyuxG zLZ(|Sy-Qg?1CnuB8H6|?sy9H?L06k{IcxVxH3it?s~JRlQp<~m@5?&{nwdEv8_UlW z01uHTj|(fv+}bo{eb<38$z&jFkaw34;E~SIZScAz%4`iSs+Wggy=sccTq`+W_lBL0 zDHa0Wz>4r7hE5X;K6m?ZFc9F*VL#`RipuTmh7__l8Bpu%LMuwL0T9PS8qn@R!ad0C$K z`K~kaeQeVsd*uiTo7-cpR63nPBdw2lVZ)>|Ao zO1#&ZGir=xyk5_r$rm&NKupNwtx!7KJ1^d!Jqs|OR1>*uHBIg5zpqq=B(8#er|I;YnUsYLInHbS2r^$$GwUO08Qwfn(#(6D&L*}enZXFE~)t9o! zp$3=EN{(kdFH%NeE3_`Zd4dTD2uNxae4cUKUrS91Ev0pUQPN!n%jpsOlMcqJ>IRy z7;W?G`EqNWkl|}bz?uml2N7a!a*R&SoqD|<6#!9NC~)=Z0a6dh<9LXImFtSB(T(@Y zz}w-f>#CvW>7k<9_kj&KuGINN@Hl)vg^C?R#qfU8QeKd);c-v|Z6k`Qut8&C7wEdf za89k(V5n^9x8C!Dw0ySXJZcBE<+8bP9_|f($W2jhq9)FZjgOF9s?1buj&uyJ0dbLP zi#%N)PZBJBCJy8|7%SPqFehL)Gb=&8o_3lzLZ|7UfoT+YwGjmyjN;W0-az*GEI*lb z*W^t5W(BE2=`pa8Pym)Z%w`RSi?kd2g3`3W>`M89Zdi#;n)@FP(A z>*J-LjaC4OWOtSG4RJ}iOXyLz>i7MGUt%q?_}&%a{HK+Ma}FQHBbr>-R^=81=LJzp zzn=bhCH>)WN#@(5lfJSjC;69P{5T3Q915W-iqu3mlKw3Aun%Z^55wf|D=*6 zWXrwKY(ZzTC{;Rd2fVHBb=#)qCGPco>&X1FAV0W|;_$gjZUDzBn?%P&hdYz>M*>7* zh}J@jYx|L4!`^Fl$92~DwP7F}n0z% zN#RT_i+8~3T#d?`-3B8PZjxhR@6|Mg22j=YvDz$%AmSIA#fD%5O`}-OSFrAJX88sF z$q%G_yXE#QzS6$_HZP2!yqpA5o1)a(guA)6wy{RcO?YC*LkzJ|&S;tCnjipKY(pTV zrAU@jbeBsO9n0)@J;^rZwj^B7Q^ZV>W!meCs#3ESZ!x}k;XoG5*KCjZ3|)oA%(9)j z3T~&}z|jp?+CS{18;v((g5(FDd}$u4+MLqZ|E41$bU1|YzSog;-kpFMsrh$v0){SYeA6NV*>lQ#u;-nWbG4};&7VbEh8o5@$i(@*y^mBEld{hp; z+O|f$^DTYfVUDjY?Afbcg~y^>81|U>tPq}G^!GJ_@}7xnR3C1xFl?}!O7P227%8_0 zFm{4;mX3mVi#GR9&E}WUfD!HeL}1gN|HCvGh@h6-Kb)*WRRu?T6NALGR;nn&TyYm# z-K{vTLlBWlRMOZW^unvfBV5Mtbc?hRNmyBaDl_u5o&t}}ukT;RE(i>37p?y=@jhRt z$&z~6wQv&IX=;il zh|}%sLI#@CCT2OmIC>1K5`kZ|auexOG6_wvMZs;`~%Q2V)K{--(>&oK%dziSn zr>eGMdk=_Vq&o@!d6%r`V$N>+eBD4Y7HV@TIA3kg8k>X-Uc!>1P~KWhslNS)bhwn1 zFL~OHB;OpylNJ>ygEdYj+EPnGRHQrib-@PHyRKQxvzWDlN&ZD_6Le^zCA3C(A3lFug~K9gDfz< zJ(6POv@6qE8=djxw}#|(iT#7vm++}ZwUJOmw-8IhC5X|Wz~I6L#;4-OvxvjRCiWgQ zMod0leC#dJ*o2IR9dt~G|9?Ic36byQbwPAeL12IBjaWpTtBy-%h!}>EqR95g^y6}^ zVg;r#`|>>7O#_@KA6R-H8W4N38!|Nxrx#t6~8J$n2TlsbKVQ>DpAvEfT`lQH#1kQ z)&O<2?xr^O5N8v_F}OUBFW~ifdAKZtljBFiH9O*sjEVhO@^lx)wPgw#3!?lz)^0TReFxRcC_Tjf;Y=iesJ?6m9|C&O z!UlFPJ=ceI5RcufatZY298Z!|zsfVamPUCNZT8E7Apt#tgK}S)C^T7P_<*0A%J0w0Xa_M}VY$b_sc?2k9-jxC?N*;cj z0jxb9{S6aeP?kEA3%eE6N`_~I%phOW0a%#Fk%Ltpf%1osi^{SDEi{^E~|3g|W)Z!S*v{7~ZJGuWNh zIxw?_lo{-D-C?9*J=dWVNPdNKuW1C&d5nuv4>Fj@Z5I8L2RKxWzA3GTSaOSbdMSxIkL}nlrM(Pa`n|7=B{6U>7V`butiwMEiS|^=%44OU&;m5AfM)KP2fRzd zNmy)rhx+EvBijg0zWew$L@d3!aUx|QAz(T;>W~Ho)$dj2GyaKAv?1+Hy8WwHa$m=- z428^n7Uf!7XA~r+th4sb6#{geRW-X_yo{ zPy^Xl^RYQ2obqlkzK(U|a8$UeNX14rFc_u#(iL<|Ci*7rV>Q3arPeXkSLa>gLd2q( z@Hk(B9y7v&das4~L9d!9_P82&V)uoJFfRYipv``lff$t6p6P03s^UOzknCNPJXZ3wW;Q{K<@NJ4EY(&Gcd`=bHo!|+iz_gfOfPqNVBmd=>!2QMe046y#Fj!FM{U$- zW=NJE06h(?MWe#-!$*69@t8K139M)E(skZp=_akieKGRp})`@!vlk>z- z5ZSrT@RAx~v)qQ&o~>G?@^<=Ndf7e~YCI7ZoD>I%hlNftX8^T!KuZMdbFh&JSQfYo8fEN?kRY zO=pE{KpCEu6XlCF)Rk6pW_9v$s^dZx;l4tE5`6Ogd_6G`QAYr_Yav4`!q9P=B=t+@ zjvoc1*%ATXTY0ckOkUYYxGd3de^0&idswA4n{@k zHT%G&20)NhT!s|jn*iwkb{Ga%^a>xx09<{nGH&A~vekgQ6v2+N@VL9)wLx!qtShf# zQf`VX7DYqsTXm6=sB?^VR~aZpK*yt{@aZ^_lyA^?+Usahzb!)et5X0_1?}hu|nLT*5N_q^2lf3b@febzK2baCxBR)%hceY+bkX_ zg%cL%7{?A%7KlhRcrIEvT(tzU&=GGeK=Q&!vqmhNQ=xGfY#M!pp=z||3oXEk?hxC! z>S}s<1Z+OgQA2Z7^p?(bI&)K+$0Ls+`~| z2Dltsu~e?05uBe3HGWJ(4-$lsqgVg8*`Lt^MeFL(SF(TOAaVGdA~vU~9jt_DILU4C zRZq&oMDh0WXsgH^7UIpQG+!17tfiQ-bEgyv-CUyTyF~aB+?A0GWWbXtrb|_We8T^S{`>$l`JvcQKG&5GUO#|; zeW+Ks(xe^U(yG1HuW{+!zz+b4+&174ao@k7`-P(v$tw2wJXs~n#X802)_d=ZCuoJi zNXI7i+wMm7))upcd+M+8&Jz$d03`>Fr&agFcfb6#|72e+Jli3Ecy!p&X0jp??Z{Im9jVNlxW& zf#2#uc&vDkaLGHGi83lFk|c1}yRh?S8Ou zhC{#5xu}hH>#;^J!{!tJpWhc~z=GRBg^wLNT05&&{(r#@G$02;aL>5dsdrO4pSI!t z*V@`$rQJj}BN)=eT!eSO7JBhb)37-(3rv7ol&C5UHDlqzO|JjG6X zo~h+M-$3e7u<0}_A7S&!@{Rn3%cvN91p_@EV5@0A59U-sM2Oqukct6?y(S5WQ*N$B zqki{ALv)`ZN8sWL*zZQO*S=nrWr=u}vEr*n^Cp69iPje&aH4_&*mioUgxK0%g?RBO zMKvwmc9iJYvN^4_-DB*pqzS<%#q~XlM|#FU-AHP7UMjm^YW=0ztF@6Nixra=V+y223kMA=4ErdA&OUTA_hQ{(_2gF zDeXebja)SnO{qYu0fxtxvhJ-f)&MwI4?p2D)v~gio#=2PS(g$ma@rsIn`(3Np)dI? z$Qc?{L**2^%~a*4-taK?*^aOAga2GClJcvehtjp`XJ=mQ`<2d zj@0NdIVPOOS{|eOf&2x`pMQpN=_f!lq6`1^ZAJ%IsOwCfOy`aPtAs(_f(-v9V)`Zl z<4AD(sSHs4OwC6T?Jgj<#smCD1`6q=OJUnxaC<>ScCqDGQUc=u@U}vtztl zZEf#|ioauJiCr29j}0~n4~?MW6^IPDUS*srN|T#XWwTkVKl*I)=HU!5iyuH!Rf?Xb zLPrraK7jGnNVdRlEVRly;lrAU`o^u>%G5$X4-7<(Q(&ZIEEY<8#ml!S&8ddVVgt4A z=N+As@T)FVo9z?DC6w=eC0zzGlI@Dsd~(1f9c(4_l6I-+=HokeAlAFm`iuDg4oI9( zZ4otnRQFjX5WN7;9x4fy9^{~xDsysep9JPZ*^JGHUmfKON^rW>#RzZmo}Q=8203(s zL;^*)k1bejVKv9joto>N_vQ7+k`OK!)Z1Dq z_9@K0iBx`j-8(uf3=hKq`d+=-f`tDiOK<8#(Np6}GcfT4=`o5FbD9Ox{2~ssEFyqf zK-NQU&X-;1>Q^m zXhj+~T9Jkx3llsMwbR}|sIt9L)WIY={KwzJ=eywM1q0$km-pLn7EJ6NKp046LK2di zdZhqyJ8T2I+#V>|nz$@>@cI~K1C;6k`0!Dxr?rr7je#O+d+QhN(*{-cJGThe#l{h9 z**ZY#WGSpqik(cK&Uyp5nG37d@lJxnsF474se zN`MPuVX!8&ko$V79$8Z6>Ms)o^8RPy1~D7-nj9~rK}?K~(^B+$S^p3SA5#5sex7C` zMn%*)$^$WwS9;1VY83SL+6k^&!}CM{d$Rd%mi@222`IKSRH0Q9qyzfJ`u|oztTYdZ z$O^0bO!D7f3AKDoV>QZx?%1*>QJOtfQ&nN{iQti+^U%F>SMu|?Y9lyZ2M`btVQ^X2 zuns8ZX8V<)r{`^BO1l(KIzT|q@Ms$Q4tN2gb6UBMn;B+Y)N}lhfi^{L!HKIz4K&we z$)Fp#wmPDtjz3eesq3bRB4tCW}Y;HVygg|j0MaY zevHy**@6J~tA%r@Um!3vl}XO2>Q-xiVG;OInd*$JDOaiFzNcFHDq9hk#Sva;wOUBc zxnRiQ@c9@>65z(+Py-Q|ucl8BpM_~yXQ3P05z6FtDe)MDc_VvnvsZM1&=bQe8n}&K zFTHL4=Z+7ylcICh5Kzw9xVx^3#Nxmb{re?bgJy-LxVG8ci^dc<@x?*RlMwo3&Y=HC zfV;30q5R1M3DRn%T?Q8UDR5>KXH4IgbXa2KLi?Z3LLHfRw;N{`OQ=R)lg#xB+=EbR z-%z${-k?Pt8oyw)qgSb2Dm+^7^gFxu=l3B%7SC(|e}`OE<=0bmaKA<0Sz|F$e=b9g zm_pjqb9qj)8NmNUOV4o@Kb5v3sdg_O>~+Z=2I?pmkUI%D@S!?}^o=0jG?SAlTEkX{ ze_D|chVGu+3I>qd1>so9Am~cUK~G&D6-W`ug==qh-(_R(0RSSQX*sbeXV_^cPPd8~ zn6c!58H**piCnzXY3WjwV+|g)oQvu9WIeoz50pFS=j()uQ}`Of@U&d_bE)P){QW?` z8t2wqk~yMFog&Fg{V*+x9zuiCL;CK9$lkiJF~QX|a9TFV?0#!%ZpiyT#>&3k+m4*s z|J~eKw+V61Pfml{Zpzf3=YXxuxliNz@U5uoYboJ>IQ(A^+^C>IaBQ?_oGR{$#~5dr z>;N3(Rd5WxU9l!d;xzlOI#(>1HBw-_M{0Cl(t}%v8m=xu=+ec{AME>r4)_19UN3k| z-cK{l|8RV1ESjW8t{oCVT+h`@F(->?*=fi~%p4MD%}N|8K9al8knP-h-*0zyO^kE8Ti1l{+gni@j|9C^~x z-o?BpK{gZ)&Rujk05DI}!rAhQ!lE3v)FQ!40tt0<6!6?N!>+)#LtsI)Wq&ZNh|57e zc6DSs3PW4wJpJ6{vLZUzb>EA@Jq-79Cj+;3``AUj>)@&~U2z=kZ@fC?MZ_Ac#T z(&sj~UB99uCKRhpWJJG0p`6{zLH^Ki$x$Bk_No(*Ec|&Zo(7~|I zGSXnqC0aL8coQ1RNMRFcaC!9SZchrr-kKA13x=O~!pAhW@@?Mx)AE3j%bOnzz}(3N zuKpii^vy_1UwkW!%I3Aeu|wp*-0W{4`7y@*k^h&H(ek_N%0wQ9!&P<2J)1Z3{QC%$ z=@Qf~AMM z^%I&hlFmwQ>+(*`scWMziu{*D72N)sZ7yV&OYP`Gaw`~%ViVrf2z-vC;CqO-ga>z2 zPg5A4$Z3$NK8RyR5BD`jd>>a3;KTTN#!@cCZoQ&7AsGY(RvI{P9^b_7lr`eX)2PFd zRqg6Gv`wp>0pyF+RmuPJ4%)AEb+S(LS{n^I8BGC0fFl8-TqUSnczam5+2=-j@G6hN z9U9Xm%J}%sWA!%p&=jOzw?azZh?E3B5P2F|sI>`c&p{;0HenU5@LFcg{+D+d#%?_*3Zxb`w0HI!VGX0b zFbkB26vCejcrhyvo7`nE>FH!JH^(KuRA}{; zxUV50!mStw`gOD+gp*jk7%vTiSJ-UE#cOd?|)VldYvxP2**I=Hvt z5ofj3+@>A#@iXT?6f~s`RK`)x_9OsV8P^DPjA{ig!z!g*GimSz5KVzTNX>AL7ufI9 zk9m4NSSHX$%LML>rVVZYFnzaT8Sll(F~5I)5c0fB?w-qb^y|Sz+izbuvuux^Jbm-G zg8<$i-~h9T{~B@)F0)aFr-=osfyK?kcpoWnHzRQI$hB}^F)VcCu%e5Ief?CcD$DMr=-}lCk@pEUu%t6y%<+?2%4)JUv&m{)s zTtf)|6-CL410Q)%X5T%luQamlXH=RuA5%d_2mOQEm(6l^fe9qxbtg}!FeL{0{|9itT>oKt}m zUIVotf{*EnF$vZD)9p)1~s^_J%evPz_^$xAE{HO7Na{rM!5;tQHRh6@4-Zz7X(k@ zC(0wEu^zaa8@ug=e?Xbmxl|5=dVyOaVCPs41&NY3N^@0)R?oxcs!f=AqNZ|1bT|Yw zt2_W6Oo6PH$J42M8z?*TGwNHxbnF1B*w)<;ix=pgDhI^G6YGdkrUhNkm#^hb`nj@&Bruh zPzI`dR-r@`BO;!cS*1l)y;cJNyB*_vtQAX&5=7$P*b=Y@Lu1f=9ao+TmRip!v(H&}v~c zgzYrk^2PW!Yk#{FWvrlaQ86G zZa_u%2=yIjkH6nc9yyE}g{n=wkfS^c|GmTgl2u>1|5H3EAG$t;;>Bf3?fn}Jl=}e2 z*hS~3)*qi;il`t$o;TVj+_(Cm9oW8S{dnzos&I74Zv93*^bmbJ45{ckUL-nMj*ifC z6w}hil*ak%*ABzVm1hZ@>WF!DLMH)VQw31eLN^J9pYl!1Myewg?hkM&CQukYm&^h@ zq29vR8ncgI1eeUwOSHOkHOankB(f%bgtQ44cW7YP^{sya5wZ*5bO`VxcHPN>l!dUG zqo-y;+W2SE76cadGynUOrm z9*$+~u-d$zC7d5wlcFFIK76*-K>bLFZj-v-*N74Jw69pnb$zDdOZC;kCKIyrUfN~i zh1g+jI8O6Jm1oChZFz6l5UPkZ*|1^?vP`@e2J+koNwX)o4;T2ja!PX`0)^7MwxSMlcf!n1a=!tv`6-U`;)OjgPIK+X8W{fq za}njndb})9?VCGD_FZhzXEPu`GHk${h7+qCPk(`;8^aw)tci&dk)Rk@zTXx4_}bz@ zomhZ(CZAoxEf7v3JE0c&_8R<+%MCfz*${zB`2PuA!X!BSC3XKDr}^XRkEYvwjhD|d zi6CD4`VMoAS%*{D{!7j+Y0TPXiQhgI%Blw=dVhXc+zkp8wg;%gWBg1Y8YA7F0UlZs z@Yt|oMYFfyp+SLNsa#e6GWg01h}^y)O<8$TCkG#Vy&iS*(mLxVqYQ{Rt+7WWI2>G z1yNjIJu=dH>!>Dhfr{x44qs1Tx=Z0`{K|(*{SrbG(Q!@+2GmRHp&bMTZJ6XB;q0$) zJc>t^pdwK~mJJmj0yan^mJMXtOz_%t3w0l8$8<0Ayg2n1c^fz0y$C|RzW(@VB$`X0 z;0z2pGZHh#Kx;|V&WlZRM0YCfhNmtr3`(GzXOQ7ytFwck<3nZ*$4=ur$S?-D^PikRvmnXoZhP)sJ;BW_WM!@_c8+iiJRQ|+15*d{x1VA*91Ro zNj^OaLLGGRdN!<)X|~2p3hjhxSejGA!3R&JmFjDHnKUO`l1K=x3O@y&^ErRay4&-z z87!k-WB7%Y*GS#C5`gy6k~hp|O=^dLM4S`^GP>_P-0rIZwc-^k1Dd^^L(N_~1$qR- z&beA77Gf&H)W1)oT-uMCQ*1v}+;dD2u#`eD`G(0a$-TSCMys)HEN&OPbqeMPhK>1R z>75kOZU90kY-$UZ5Syl1LbM}4^K8;uBV~Io;qYO6e67i(SxsIJScI97v_kj_Npo-W zPXD_s!J4U%9x2+dH|Ee%17PsWbh^jqkJaZ86AQ&687Ta}74qsfHQz=Z+UBq;AwK@l z#yqZus8e7;I6SNNASEHmIa2i!@LD~WHwR{azJniIs-%l|kOI*-2*dN`uVg-$$7Q1C4NE)TYP>b}JAQx|QIK;I{Hxs~4Cu%>=)+ct5<~&L z_LVF4=L7jkN9O2HLm^qYxX37`@Pxg1mXrCqVx?)2tXZE@=5w-ooThK;ZZ#PHI{Pz# zh|;epD$&l6ClE|d3Wobp<`Znn5s-|*Jsb~1FE*oL52<(I8e~R4DInau9v{K3OvXF& z1?3k_5Q>8=ICZo^clK<_(RPb&-fb*~W=42vDUV-T0;g!47%9wFrN%4C?2-d@w zzm28e_Uq&ftuta{H$+2>W?*-01*LgAP*yZdXElK#*O){c110b ze>On8Gj%o2H$`x~{PFkCnlJ@vt?R8_?1260(uBp4Ct^oWmC9oxdTNqVh7zf{HQq+{ zyXv{o!CM0UuN(0^sMyo}MW|mwok@0%>V~LXK*6JpF};rtgRcrpK+E}IQWD7N`Qn9P zXhnm?sGDy@621v-PDxhQ{efR9Nz^y&cN5E#J3Qnl>1`ej4-yYieijOk@`6`mNltn)=%*%B-t!hulrafkeD{7^CjEsasVxhO@wva% zpvtb`v^i?C8Sq1D>(G)QmPgvBWCULAsvCOU7-q}{n=d^Q?II~oFI9LIRUw|c4K_)x z37(64oaZt#H1@(Z411L}-|OMG)Q%n&bnt|ceS69Cjsm6iV?`U%>6b;Ho!rj6N>)t? z^zF^~Zx=s(?tajh6Up(BH$Aus2BIi$R^Ko?^*Jrd0{l+7d(n%Ti=(BlpFc+Q)FIJE zRLUk{gB)v7ZU-(P9wZ1EI`F{#^~Hv;HXFB8<;jL8v}=I~jWO<~v%kmLG{6e30r8)| zem^)Fn|_J%sm0#AwCo-}JxGz20^i270>(^;Kmj;|J_x@endwWUiqek9t&}^T2U-n- zCmo{U0JOSHPj(`PEMYCP8$0R+2oa3iqOT2;BFGQ+Iwr}UhQ2)&WG4#9pZ!+R=5F$g z&vLSi`p?zSZ=L!no3{vvQ1NB8JYHRg(+eSgu!RckJg(d$0kT&L@xkhEjgva(6@m%@ z6pu>MYx&|D)YS~ZSFgK3qUpi}`Fc0%AG?K-^T7*zcmf8w`x*3WyS}UYlZf@{j|5Md zhITbjiw7T1*zM){5HZUnA;a)Dl=Yc!R6X*OKmYRXdnnWjbOnN&##W-i_nB!QA>#a+ zo`c^sp3<+wpc*whGDl_N$3_&nWKF-pU8qYE#bNXHWrQpuSkaPXy=Gpv6CJZmY_32! z^olJ;%9g?(#NTiO!ytX;JTkJE(lX}b9DB+WagL3Tl)Sc^vH$L_40;6&0`w=JJGT-# zmKxsQQoe2xcaW7CysT~H*t6${(KI>#w=ItlviQBx`k^z@#Y{p6p@#3V-2^-+Y^tHj zLNmJQ6yDAMcI$_Q(jz(hKe{Tw)bumF0WB=hz6pls$SzV4zmQan zACU@@+s|d>=LL0WUPCU7g7?JM7T$j3)3RL}A*irK8J#1QnMYlcl@9ybjrAyG?t};W zT3ywGiJ${mPf@fZJ~}15oK|LTBjS9vy&K>Aek!24*;EQ0gvgG7##=K<7vKdphcYwM zEhirixJb3T5y36jEd37#d9vVDpQp`1Jc8a0sfU)C0TKH7IN+|ofr~q%s5XIGn?|Pp z4NIPhARtJd$hDogQ2Jx=eXdlX7+b)z8^OtFO&1t~bch`~zNdngiqSJp)}#f}MCu?RbOM$rKSrIbldfyQ*kWo8$gHXaP z3qzR;d9ca&m4-2JI{bKTE;@;+86N!TWEIGr_(aj6F{w4{@;`{YOI-tEeribkOx08-A;NizpD6Y~RS4y+dg%D)7a7JLG2*&U zz{LQMP>_*sNvvb#KiBqsTaxR41a-f@9a{kjn>Kk<-=kSFo}q+Wkj^dwl2*{!CK#P> zGOm*A+c{!4dR8dznfqV}xXWPZ1L%_QMB9A+us8^PeGoG9GG7@ydQ2nkJP2ms5h(a9 zl3q;H+Z4L`94+dW$?eaSCko4W$|>u%+`lye=NB{=tp_p-1K%3MFeUN?b*e63yIw6ETED`WilQ)IN9)SeLxbFqUy)y5K9E?kuKtaI31)@}KY-qhIzb zh>gk>D;9gCK0#hwgOaIgh}omyrsfwM)kF1qR%e_wVgEz8KL94xZlCS2x)?=Er`>=o3 zH0y{^PGgJdRcT_ft>OLZbQ(pTYK~vK&j}YFgA}-QLg6?%eO%j74t_uflR1Gw1e-AG zjg|DDb%LVj^X?bUqN!-159@0ucUjQSfnK%$>|{Z-qP16W6vZ;Dzj1*lc9GIMKb6`m zNIAjv)>;Qav0p;z52XSECN@#f*cEdmyg$i2 z5P5k{HQ}pB>6NNExRsERwwSkjvpG33oxMUl-o^n99oqSo&2N3`@DPbBw`JT z6CLbc`MDede0*RB7^ZE^sd$u+>?QuGHxdIQNSxp26IbFj+LBz4{O1d>OlQ@gYNuqc1LB1&m<(>xpf5teb#gXiy)NAbG5y8y z!VW&4{2XMozLww4*Z(GnemCGh6>%bo7PMrNyO?8e6xS;jiJuQe4ROz-4^b-| z2*THT*@K^J!@n&V5hkCbLbzYBor%W^I`~kr%_)#BPC013XgUj8(q+=85wc6YOKL9v zTXcfGOH)5oEl9yDu3qEcMphwIj(p&si=0&nG zX>rNhw#tOiZrXw$^0XR~<*1-Fd(2^d%+u>Vf7ad3Q;>#s+Kns|HV+m~r2H?i8@00Z zHm_hdRZ5fHc;kr%CS}vqKVJlbX!i1(Py2;!)GzPO9_M3^S}m!CKGUZ0oM4GvoRF5v z7MRTzaAp#(754BVun;@+ZR`vG0XJ+#E+bG{f>hP0%J9UrXuJ0gBOa z3DAE&*6-d3ebz(EMC+uO_pUSxB7=_nc_aMNDhHKQlit$S@Hq{RXay&H*9Jb|qy#4H zV()T7VelDV;*0mRuy=?GJA6Tiqb+fCPL7gB*$`y{XmMZE4hmKLLvR~%8P|pdCJv99 z_}_Q-TYOQ)N_0;8IHkgTf~YBhvlyDik_)O%ca1bjkXS612C2+-rZ1k=Z|;z;*=Q)t z0Lbo6EkdB5fj1SzibqdWcd_W5hA6oY$HrCWvDm*h>o-HjFH~o^v3WZTeqFl5z~1rg zlm#y}@d2HK%rpG&AOM`7IiQ@b#!2AlP(9QM-P%KeB0E|no1?%ROzmDzsvg0{)o12` zv%w}7?ebT06|Md`edPGVhdDuypi9(&r=byD^?79vi?(ZPxBSpXsyr!91ffg(=Z|LC zZGK#Qzu$V@dsJOUK+~9g>SErh7TW8t+1m6=Qd?B~b+*2-d*n7P^}TfP`7XWla;v+? zl>47YiMV_WIq)vF1$`S;bV+L{?#9Di>4M(yTq#v0T~7tY*LTZe zY#f~Uzl)_^CcjC^FJ}MW%E^Uf* ztB&w7E}w%;ZVwRLloT3;)-dm)TOmymB=+z#c~*3i)g4YV5J_W}bHQLDuvrLfOi=v- zjy$caeOrw-FnYCFx42BMicry$-d_S1A#c#dx%I)YQ)-Xlmm+e-xgCLef>8c~iGK1q z7(nwjuHT(c`G7%FGoRhl5uez+fS|wUJ2QsGH2eaVJA|w^HUPo%_zf=AaywdT$zYc6 zP6C(Hd#uU?TUfiC49rvs241-V0p`~T`&;;xt+RRHA3i>`4LLjxI6PJ`6I}$O%W->= z)O&z4w6fQ9)Vq-ka)sJ$7}K)yNyd5(6peBan6nd>|NAv@JAVCwXEyz!>_Y=V!@p}b z`RnloQNHVhg1gw(c9ecc$fZ&Mmvu=L&k*RjcS)kHc^$KT*ip|2(& zdp%)SG#8ghcNZiz!cYAbkh^Syz?tfX%4`Ylk^Vp~=3Qm<^D|qa|JdNmkF08h%r}5^ zYXiLvVRG>($DuVlVNJ-JuDr-^6Hl4MrGM_vC=TLh(Z9V~>fT-68KW;pq3;Hnm(NIzfl#edpJ|_6cCS?(hybibzrjZ(CI#;ov#1^_Tx7EsGiIjYz zI|c0{!-(ZAXbo!M@)SWyjOwdwjMr{=b$`1eN6UJ##kEJ(l@YJonkYmwvrZyEe>cTo zKL=S|sVkX+km9WOB*nWC?(a#4{{W8LWNs#%HS4IlijXC}D{tGf5v>&@Ya}RBgDgIK z`d|j!$;(Q6cn{!5iTVU4N!qN1K?bgFA{Y0q&Ed6)g+3Id#-R69-4t?#2YQl=c$CaO zxw$-I&nX^-r+eDG0mHswZAbGTv^_a*=oQkdY?y?rj;2G<`#-l7KY7?pE8ycGV5QpI;s}LoBqfLrRdv|ee^2m7c+_l`|p)M^@3R; z^Iny}!7_I@IzP%=rBLJS{R-XFzQJ!9g_Uu{>ShrwmhAfPQ%kkmX+8Ot7*nlHQ)NOz z*Pv|XN#CR66kAt2{T0)dkK&m19IVib`YSCo+rbrHhAdPbyj#+#(^Y$=V&C>Ec)iSw z^ztDpYrEs%z>s-kR%;%*OpMv3S1gs9bOa*#zA+j4JI*5aKA)k8;a8u@06lxn+=vx5 zXg7dF&l|3Nt+V$)je#;q{9x|OLmcx6u~etLeUAejx9J)Jxm~Qq3}@w0@$VJIC4zHc zq1Rf*uA0X3#z~@$Xk^Z}-&Np%Ha@*jI z0QrmF7lycUJ(-2#`AVuc|!}_tj7?De{|F%eYt3LUHAJi#-o2GiUBvpQsWn~gpu_v^u zt}H0vIMTA$+5=iTix&{npn5bdlEv$rA6Fbo4#A&P(-K4%c`KF<RFD>GYGNM>Yy zh?1EtGdp}L+1Uz3N@lvB5~(N0DK+Xw7Bt8w*}@Sa@9C^lC_3oh!QV^P;hEa1zN2jNb7SNAt%3U zA=tjhn#RbFj(wQH+HylH`_<&q{kCE(J=n=&KNLyd33;+1FM&_B;U1ekqr?Wxd5 zlx+GL8e zDiW*R46?1>U=QE5BgEn9X#JHvf81MXR>R4C#eEu{!J8T0NzVzCAHu0S<5Dv$u??&U z*~}fulHt+=7e_+lWgN7gYDq?GOG_f zGy9iZdG>9E<*LxrLSt*pxKeA4{%>1vy54hki(GyMSJLdx!G`BxG6>xkxJyLHr+hNOWJ>@P)BI7?;KN zTHmT-EP!>v+8xEnX!dj!w?LC${hku^;HCc9hIq_%0W4Xa)K_PpS{w!UXiOHFUMwQ4 zAKLu7HcUa^N5y`kz%ct8+88w4J7Flt%}x4U+iDG@_+znNPv@yxjrt$}u3tNDc0|}^ z+&x(dZ_UKQBqUGK@s|vGtUcdxUq7Qh#Gw-caJwDHm;<1SQG?o1VP~Ao>T(DjhNNAt5JOK#koZhZf*L**$(lxO2Rm>I8B@tMWTm4Y5bYxuI( zmGp)t8Wxtm3rtyk9}F)Bp@0tpV(Mm|!Q3K6rdq@Vf5S}5oArxV@2kJt0`cWDsU$zO zEF4%?c`K?L=I#%2FIjk$`!l6rW$?T=VA!JfZHx%kgCeFwvCsCPvctkTrxsbv5!U5n z(?W?X1XlCIxiZ(~5RQ$~zQWLdk`}5CE(#xFfn&G{_`ZB5X3qh%X2_$P>}j$~)~7$1*e^jUUf2vj zPjM#kngYX$+%L3I;=1&zD&auiYX=K#Je;sE5W@B3HH-UCA*ZWwF7rw;s4x8W|He#d zs>={+g2jmx=JZ+Ld32w0qx>+zk*V!?SL+j~@d-N3-nd&W|MJZ96r`-`Iy@ZxIC!<$ zrl0b;fBWtLAHt1PCmiwg%c?PwSCErxkDirMOR$lS4pF0UaYgp&L2RIbXFibR0wzY> z)fq(18jf|zEBuC4)uofG9R{!7ED|;xpR6ct+vU=-&A+Y+JhY{l?PIx_qYpZW9*UIn zDg=E8J2r8cZOi_$#aSi|Smbij-s>#b^%E8wh+?yjKFjB|7`yvbiG99_XJCd_yBOhY zXJgWvUYD<6XCI;Nfp!fo2DXesmaH4Mim$5G9Rsw(p0H_=SC&1olzK_>P4ZnT>$jGw zH-Vd7RJ_9%7?U3VWQksk|7nEcJ^1DCad5e{nkN6sCPZT;Gw5XT9rWu3v*JXxy!%lr z6iQLRll+Aex%80JZ1*%^BCQ^}J3oz)hn9U>&wJ}It{=`pOH1&SJ#W81jWZEI4?Qv~ zEu;K=jNv!v^o_sIH{N)p_KvGH!Wv8cJJvj`pyL{~&UgT30Kv2TSNKIVYidFfnLPS@ z$jH8knuU;8Gp4Jcd8ayP0ltW)e!}imMv#Qzi|50$_cV4l*zK0BmE>IH2nr(}3^x3l zGC+Vo%;bHTH=YnMIxcQ`>E=DeSKM=$B&&u|G&3I|t+g4Fg zTql)(!;C04=`w5w@#v&0aiIm2?h2K0$<9O5Vmrtl2T6k}B~NdFaI%Q2zi;!Ul-fw_ zD(PXqP;ms+@2%npt%BAMIaoMzKMdJoB9DeHOz9*zA~dg@j-Wp+w@{+<*R-;6Z*BUi zA+0LXYn1t+R61%CBB;wjEU<7yi0*xub<2Ga{+7tb8rMHP(?|9*hAlCPRRL5gvF=h!{NwbAvmls zeR+##Lvf9R;J2w4;h+8)3(OWroU7z%;S}oyy+JL|ht$~TF6E>gOiA1|$^I%}uqeGZ zoLSJ zqc5q%(vvyH^%FYKO5Qn|{hRW&!`x`z&1l;zW&MYVWMG-m03AMXA1i&H+Q9)g_(wQ1 z`Wp{jX0ydgeYi;sR^u=FCtbfvI5?knHBMhaw_`;Z!$4*3z@pqh@ijM%qwllt*R-79 z!>52*RLIn5g0wN2bGxahxtsc2%xUq;vCGVf#x_+Lz^M#-&7(9Lt?WN{4w zbl+Taq`RckKLFG7V4cz_FtvmN`e*xqtVEv)wFS=upPy@^erMg&!=SA+O?7r8WH(d@KaZjq+wVeOB2Fu* zr?z)=oL_ipDWr7%%NvVhlNn)t;1PXsJv~${;**|Ekql?_Z)0dJrlrkCqTrOM%!Z*4 zorBu2L`Ml_Ejm10BD)JdH6JJWqVR*a-uacMuivRY5XGhB&i77)iA{4W;z0&pK4<~e zR!5YMqOPckN>FKf{$=(W65fU}CPDTYM;2CH0kV+9PYt6f(5?;-v3&|qLBD~^WuJhU z?%6aRBW1T@Z=(wjZ}w4fZ|xEqeh};#{59@UFNPau5K6!#eCV-mU8IV03GJ$d%s+W1M00M)EJCX2-aNjiiIPAG#W`^i%SUhAgjW%4Xs56uiO!*$eAXIm1Bi8{f2M#u6^O+Bpi<$nR#s;7C7>C zOj%Q?1Iyqzi4(1ew}t|VF+w+99XL)OX1;4>@3wI>tG8$-jK3hM`_QJAIhFGZ%cJsG z+SJ~lKnNq(Xy@6#T*v0(Nh#OVhYAl({^vJx-$k=3NaD-~+|UCrmCufnFAUlXG+)5?;iKHdf3wY*Ppvz6 zN_la(@LO_2;ret_9=}dl1tGeWZSmGHh3!f2pFWlC;gs!=sCgM*$FXcDctdRqooI&lwt`y zj_f)XgVuz`FA&6bKqDin#8;FhMQHvFK9BU!bgko3nw(V-K8Y7?@pE5MV@puTlMt)++@ESu2&vpTn#n?P zF7H!Eum1+waFzts;v2ub{9jQ1u1PK~)rG{=PXHOV)w7fzjq<&-r%$JFDqxF5VtlT*lBK)(8 zC2AoLvg~#8bFj;f2k4LxPVzZQm!?o>?2=es9$|`pm&fsZ$1)8q+&ea8bg`bZ#__!p zgHr=x?>?@VE&*xNRcA-^wverJGfy&A_RE>F*&&0jg`0mLkvhlA2i6I;9~;VDi+axx zs~b~tWGHIb!I6mF6=o~WY2M`!wWOCw`vR7cB~Ly&=`IK{rF2TfN)4wC zFse!-`4gs?O5$B4aXs%&>~t9~^;;b29iz7qyR+*iS=|LC?2uIea+AP5H;BX7PpY|9 z@;5?`ejx>ku)kQap7 zWm9leE*lFTC<4RYA2hdm4X|o$j>#)zv;GKW-E>z#qcSdr%R@n*#mySK1dO|m=FqMB zRI;o}w=#O;vrh|Qh~|(4Vb85_YA8Th%rK+Y(h?P9d~ZrfSXAt5grRSFQKCdQlUJuv zZ0$aO%x@R8>njlW6FOHatU5@?EfcgGmd)lgGklX`{w|RPu?4nq-p*e-BXzSm$|}F0 z)+Kknes{1?Y$_<{=4rm{YevMM_z#c0Lz5W92WBCn0P6`yDCSZi-KU2=V?(xF540*2 z7@Q=@&Pn&K$ML=7W_)yH4fg-Y(F*_XY;qUsF3=2Vhgsr^EQLBnPU#p;gN_p0r09I1 zQR$JNW$g)sAD(1e%TEklYk%TbEh$1jENj|S;P<}dV}WSNP>0_=>|CQb`_JWYs5q&j z3WInpipyiCm{w!n%n7L}n=_~>w^hmW6=oLdwt?C?@K^1)c90W1KNMlyYRDzrk58px|Ce{gAXBx_|e3Xz!?Z7lzz< zZ|Jo;^mtgRk-Y@R!(p3EEiugsQ^9i>2vGw7o;0<#R2QIMd;SYysqymzsZ>8Zb^B@j}gc`O=Oah*1yb%XB|l93r$i|=j26R=`)D< z-Ds1d^rz0esXH|HRRzzdM10!{tAk zC*vEf&&GO!QdpHMtVO$`aO6SxH-k8=!mlFPybX{wOf6P)>s-KMP6z(mU~4SVg(9#Z z23oa4kaY+D?IvTn=v*R-5MupXr>CBM%(&lLsM}M4{!AB4#JQ-lDsU^K68#8Eo4FHP zC(kXvF~UDO68%8$oEo)ls0)3FUmuenHC>d!(V7Z*l5`Y+si0!Ev+u?&dG5Ou^XJPo zhETZ~})fziipnlngrbRy=2Llq5=G{!WQJNhS)^&hV-N zBkF%A8z+&3=B@U>r=GL#<1^QyV>lS`6O|Lp<2zM-vP0-`lH;M-!D?+$@TUC4YY9(@f&p}2VWQL%4obQuHaHL^bF7y5pYWTX~-iN)P>iJRcoK9LOVxK(7(nvBnh zo4JUev7BJ+%~7qVQ(|<$%A7cxwG$3yOX}rNcyGa@OpWxS^1Q%mMcQ?B(Hw~_+$Wh4 zEEYo^E_aObDQQqgqdB{T<&?QEZaVH`68+0-Qw*qfH;{Ttcd)ZyFia?B&>oz<>@=A zf+cQiKrDQ`qi!(Sh?SAsuH{;*?mv>IE!mL++_;F@DchxdQdD->S=T6yYFV+{CcE5qiD+(Q!)|;z!BcSOjKYZ-Gbf((n zSlO5%rrK97d=h2k@Ar`Vz;w}D4t`NGn|xOtX`hV(n}En$9m z7YT$mt|hQHnObd*fQ8fM2e)w~`)V=gt6PnRo%aZoEUQ@7nZ-|qVs2S0@Q34v6SFpC z@+2E$D!t~?&RC!eOz`+VzW1&5d*?uBK$y4TI$&4}5sO3bW)KqyKfy$OaTos z%fSbOcbb5K{)DKzUpHZK;eH{zpq(Hrby})p>vubFrw2=>=Mv_N7C=A1koidL1zZB% zgzodgB@VwgKc7jFIlG8cq}WhXK#%(**Aui^fzrPF4KZup2!(#z4`m1^s;jdqes5i~2zYN*<&-A8PzQS~LjCd)tEqR^8i`1Xha}=f zC%$&ISa(Bv@DKmnpLi*U9a|8$Rql3J6yi)UQlxcU(B_NU z;Y{uVk@aodQb$`L20_^}LavYs^eT-h( zHl}P|Y6I4Q(#wgnJtNJu{Xi6$kY$0JA zyQdi8^3cIu86tY9?0Z{>P7aWfxcb}*TuzD?fdRmxdB;&Zt;h2FB2P@!a0Y2`cSM*q z4ixSQ7bYhh#EB^-#ttCPWa-q^jYNaK4?)N~;`y<}{P&GeZw$}+2iL}x^9=w8op5XY z4LawOE3^ehoPKW>B3c1&F_WX=ywP_v!I7IaJU^ImH50K3*_^!yYd;xb^Ws+Q%0G3u zSEArZoqyop6Gx*$>uR%Iz)?di4)Y=yQF0gYr_GND2Hn6J;%Ul~z_xgQvrTZ#?ZZgr zb87A~(KuFTNi^=Xht7Ze?tmU5ihVNAF-`wZE|!*!#gSCP*FZD}ni3pgW7jp?wFx0Y z^0{HDda)90vq!@(Y6j0|kNyV1rde2u#Keu5(n>$uLv&hE%4s3y(3bl5k8Oq zei@QT7EAQ<1kl@%&ii77jK*mnjEI7TQ(e2yx%|(c>w0)#KSbfhIh-k4%JK_cW@LN$ z9WoeU+tJSk!|bDu`UBxif@nA2V7SnU(%iGwyvqp{URvCj(!Pq3&PbIaqW6N4icJjB zc+>E9BkPy%ytSX?;rJM&oY=Bwn^a-VJpeoQGtU_|vF9oz;`)cbp$oOXz)kIgC#l>Y z%f>t(S*Fkr^2cAuI$f6~tpNyYLg?s)cfy{z%xfU6F;rL#-^F~qsItuL-hsJm6SHo0 zpl%%@6Hex#DXZ}t=n36sxqy(JM|Wbd>E(k1tu$kyK%-wc)9svn_=Ld&i1?TV-Ro?5 zl4&EdZAuPO;t^b?I+Moquiu}wTIdLK1vil^Bup(XgK*9i@1)@9bF~P~`c&Nu*&?AU z7cYG>NQ~jr)|xk!VA^Lmhed>q<&5Y$u82<{0;k0K-%u@~oBvq*C=?+0uH9Mh37ti1 z5a@6Xv!wNSQ(6={uNH=dNCxcMXe{E9W<^d>*Rev+Cqts$Z0Wa_Y{GAVMptA*67i7H zwJj7R=`3P+pyF%ou@pJ)ioOuQT^MoXm+fy+W~kM_9CTrob$fyn}1kZzK%wBKJ4xOy*&4yAQ<};tq$d9j3XE1a)&*WV7A8@(VF&@KCceU9uR$B?2SJ z${%o}i$eH0`yPeU?Aeu@DvIS+ph}e`kpv$f81)46_fR{x!jn?(6VKf8iF)Pxtg1`Q zh{IumgD1q-L`z=roE@dGwwKO)jc94c@5rPk{5GXIo3&nc$wc~_ANuOc5r%w;q+Onq zh1Q)S8cgZdQ`2%K%mT)Yezh8{bE0bVxDNXX~E+My48psVkcB2B(+H~0C(6l^z z)ip)q=lj)%&>+Io%`{BpuPe87S<01eRT^*tOG2MyC6uM`P#YuAdb$;M-aew?2 zNy*PX^0GDYzxLz!PAm_TJUx`PLrcy%ewOJGt+_8!uiWK%va(_CWGB0^yY^iBHKcVY zJ*u;f|*ludkhVQfRb1W{jt5?qSq z6dfDLmf{MyG0<~Om{?Zm?Kgqmn-Wgwca9f=#sycS<&U3FgSCq=kM(|q+Y8eaoq7h!x-qSH-4$2 zZ$|*3J^J_roBu36;vmlLATD_M@LA4J>GUT?e}RTnx}V-7&AMC65%f(M;n)F}%B8q8 zYE@H(sIPaQq)rmYZ;lr~BEH{>@MZMXIU}PZJqYL(=A@5|Ug9y9pAgp=9DeVs2$v~! zuID}Nn7ovH8KAg}glNgS>^A*GN90EHK`=ACE}cFMm&qzcEPA?`>%7*Rei?iqfpkCvDV_J?)St3G*zXDfx1WaD@ldnL?BpnUjIj#QS3&v7l6dKX- z>wg=eO$gUwfR0H20A90^Pd^Xsn%^F8#Qm-`BBFCn^nnv?FCk_pCu)h_tc2U=L62^9h>HTRp`GXy$BRf})a|;js-lqLd zC}e~*Z1PqQSE(VSV1(n!vx|f2A4)@61E@*%K>46Xs%^rm4zSACv0K_+BIFjq%)v6S z;Sm1xI+%d5L4Oz_^xPHvU~Dv%J^+|GVog#$=%z5w9@pDOB9YvMc(EK39j4=V&z-IX z<(u|Y73672va)Hnq26*E8P7PTTT~NbkFLDa2-vRy0RaQ@y$EP# za69?w%Q4c$%h0)-i?Xs{In^^TwMa4dGVZ7;h^3g*ZOO#1=Pvu3*Ym$n3yaG4U21XY zeI{*Nj$SD1c|c?{S{)CXFztz=JjWey@gA>7-^QUcbxS>www` zH`SDia9eq#GS;>fGiT5@u{2eEpBm)`NR-iDSq;s5Yx0z&eg|NmsT&WGMc48+hL)dYbh(oEcD*ENrf z%Lu8DW=ArFuW{Z)e~XmqYo)M{NJUt=UT%soLZh)Nd5>~%-*Y327d7B>sJ^7br|rkZ zL&t|8Ej4}u&hY}J$roSm-rKx89@wC5RgnK7;esTm;by@j0Z))xP(_P*E~`KH%@);U z&)qV{MlP}P+^OL_{7Wq|TeU_cGn92cv5xK2kXCe_=HqZgGOpw&5 z7Y3q&s^e(7UCBe9ukbQR^?1_XgsLw4Z5$*`auZjRynioYg2FOuyV=nis{7WGDe%YJ z*M!`iU%~YjeL=`FbQ-w4WL3nBo&CvI2-gX@qYcE3nlW3EF;k*Jo92{ZJh(w@bj(c( zfSI>PLS_~@j$pZF&8mUD=stbza91|+6p(rf`$3&yvsGkRf>o5RU6spB(d+O& zWV03CXFglN5!9J`6`!IsKHhe+@)>UQDQb}Jnef#e<#>%e=9-6+ z-NAj*G#dYVd0vNf1_hlV1hO_AQt^kbU|pKiDs87Oq}RS-`~9?B-atF^?)Zy`YIvB>R>ez*`!XqPH*)*< zxS5Tfxc^1{gchHKcN4qtG(wjnCwzg@vloDU`sCK#$2J*++MI?tvBTgIpil!mwmR+; z+_kKDJl}Gl4)b{qThUE>f7_N6tw!tvOYMwUQr~to{l9%sd2wO&h0tw8B7L)Z-FMGLg|Cs-KGM^}{h}hxdv76v|W-ZtP64332_LD8sqgmjBx1q^y z&~&=>!Z_n-_WVacicA3+Rmu@VZ-dCI8C-Tf3G||>PO4CUWG?>A`IBiBA<~@c3I%sa zBZYec(8k_TGv5ZE3JPu>)#ROM_cC3DOqfU)D?Z0WTGMo(55TGhPm(agh&RYGzYUGt z-iS*dku$~jgx<|Z1odyf4L!Shb2a>nBPI3|&!eq|Z?3yV14g{qL}kLWKALdkNZ z_YF%(p?i~t+4eW<-b)V*?$&eF(M!U0xPqOIR*x0+JLp=Reo_X|ylDLeu}Fy;K~_&T)GXTgj|UR>sCc^rqIRzO zfv!-~e_t?ohv;)j;V2@DXOLe^#s_dP72{@qs}X3imfG|;~9Xxx?&X* zaTN0R``>%&-0E_CAPE9LG(ya!4_>nJ&GOIo?SMN$Vd{*blebfFvl+ z&*RkU#T^uCjF*)6jWhXE;YLCmfD#yoo$^N!?fHI#)87s48afe{xH<6>nE|7rrzMD@ z(a9K4Wc9Ee+>|?&9!tIBue#TO*BY;ztEuC3sSDhn^(*E{G&2J?=1uidPUU54(qxGc z*6)B)aO1wYgR=FybGXGNe-JBnbZ&OS;NW;=5<&P7QZ>gQEkhB0^@$h?Hpb^K>1ymm zu6BX{dlp`n=R`v+?EOkHYM}*bQg(Kk{+<=mY{E9c#HF!M0T+a>B-HF&%rE><&1QwP9YY4aYa!(YQ8IUD;H-Y2AIto^RYck^s+c zd^Y7NVF^JVO;k0yu0|X;?s~pr?ik!%{3ED86QrXCaUxwwc05nY6+rI0^koi`8Spk~ z)x@0t2+`k7hFk{kF%{UJd=`^c6B&69hUiVcGTE%Cm0v`%oX1@oa$endBNL9^GCr} zKll>yn;|HXQC8X#rH!jd4`EJJ3gu7RW@{adK0UvN*WZP_tLoGb`raOw-5T8=4LLPR0Z|W-$LS0dZ^`!>vJf+)u6Q9t zjOsIvBM8JuTw+rzX~d!c zwo;cIf~wgvqY}*!o}dy7q5|Ka$tsA>c`s;pK@4(q-As||;f%yRM*Ru9D;17pS+O{f z*WILov={?5s(z41uva_0OTM%XMJ(QuGw$Kmx9y=v^tQ%;$KF$ z;N0z+rqV}W&iy+>$Z)^*nyeYzCAG}~V>l&4_B8_)T195saF&f%yA163CBma!5Jt%9 zpCLO?EyAE0b{V}Lb;VkyoJW5S;cEsx1FRypkop8D^wT)kY{%0+*+PuM6|S`#W_a7| ze^j9hS>>M~(~`dGhI8ZT2}G`6y3~ez+4B8zp9-tFsZ+qT@b{4fDMBla7{ry z?#sn9{~Pr3CW!AZK)=~))Jk*f+~{8*>tt3#KHFuxu;br_47O@Az1OmD7p1_?u(^$d zA6(L76~7?F2a5Q4-aH%90JeFAT47t{p<=rg1g1wUr$~uJ#q>9z6SloQ&!QsKwhSX! zn%5#h_P2#HnRwZeU$2?N?_bi#2vbpum(7t6xt~MysS=y5D`sW+k@Uq4yPJF+C%*t4 z9;CYxMV(Z?bV>+T&Vo%ikZ%392irVt@A+b4**;tpBYHo$zwJPq6nlmFBF zz$|%(02nYH8L@34gr(P83M;9e|AiEoM>s>>;0bYe55Ys3yDu*g?@F!Hp4%27r)6q6 z(U)Q^8Nm>N)#^Il6^8JwXtr*i=O*9hT4y12hTYNP?iF2w*IMkoOnQV>4bp@QG1caV zPJSPkZUn=sf?R{-+cE@_spUw2A9;=Qa;alUeBj<^4rF1z|slh zg(Y6D5YWX$94E;jp-_$_7_>W?gDFYM9$QLhoX2TbGARoy8|y9=XRF6uVPmpiZ9r_; z?K~d<-~E(Ur?#bbaNlBA>gaynz@?P$5U{!p$dxxDN|d_&GW(P`o`F-Cg%u7`(QdA=k9 z@&G*4Ubn)+gn?{JgQ-(Yzv_PAk%&F(jyYr9O=Qp#!c75&YdB^~ z{TbR-m$`IF{6yP`Mz6wq*P2N1FWKS$vH)lWDkl00j~p%j+QS(|pg1EVE@n9iYrQlU z7y4l$g~~-PW+QTxof!Yu49<^^Q{9M!S&Lsj?#4wwS)O-uU%5N{V!99pyn}|L`R=;nEy^q8%gauL~g2WZEfrP1(7k5rH9}*si-za=3yvb0od&9g7G;nRh zQVo!VMzkHPF7xJLlI*Vfrb_Yih`#eq$bMCz5dJZKVRVO=7P|*~sgjPb;U4$u%)Nj+ z#cpI5B!);B#NJgN`0M1lpK!ZCIx;KNp-A`RRrg<5Wqy+M-Xn^D`WitJ?Mh-&{tK>p8%~XsV8{x%x~ZD62Vm^B30TC*2|KuY-2C zQg1^Q1QQPa<#mSB)@J?zeN0x$FIZ>Dsz}?TXd(wXt8?aYXJeNJjw8%SD;IGijzC!( zX`8wQGerQCrvLItx&t8^QUmX)eo)x5OOZi+;gi3`GwgkzEUV(N^r5A zPBsT?(x-k0<^l7tqCJ-$skhdQfW&D3d<`R%GRk!Ri@rcoHWJ0os`lpFLpC3PdZcR5w}5&>Q7zBW6uNd@f+z z161wS)54}VNK+~z?s+*DBJQ~-h@#LbHoCbkanm#k3q}$+*F^X3qTgE)8L}-Z+5%Y{ z`G|Djx_T`QtPJ?zeaxdMHif@eOL~IY+%R?9E{Wqt*eR>qx+K;2Er@uIyb_6JQlDU3 zhS=)CY39v@Waf2mHp?cjqkr6T(3h(RL%?S+tf5R0arQCYftBcLl)SxQX(GWw6?93v z@+D*@W;06~=IEikyav@}Bz|QH4(pZ=#Aze3z0ljuThu3o6`oElzKu#n&6B ztBR?mtH>R4Y*;5(Mqq8{;j0p82E_qz)mh!8}>Wkva zw1iRqnGPP@t^X}mMf?OZon!xZ)Y$#C>TFp!3jEtasmeSOvzV`Z`b|p@>jFD%Y@xPYQCF6{>|dZ6Jb4t`%f^c zL4^0IR4?z1Ga}kcz#=gh6%UK;HhqUL^r1zuob8&@~Ezl|!z z0sFIH>0DldE_<%$fRqBm^8Z$oFv%>=zU1*E*LpUegji8Cj+*`Mr5T( zFchrLxyK)Ui5{>tMol5oaB6+0hLm}62gQCQx3QI65yc-coG0j*+ON z6proM30H&zgNJjrs0Rx~O)hIRE(0Kh>x;%4ZM z+)0I}bjn-0N~@#;rBBJ9lpOg#JAt%n%BniJVcCKMoy4YF zL1(&4korqdNEu2(zZL~It}%Vv$9#myi`Y&CR{^vbmUd)K*Cc`vO#p zA7517JJ<4v4axkLssYx0@Y)ot9opyN7vZFS$EXvnDciHd)(sob`#Ol6g{-g${pJRk zX|c5He7=1YQ6t7M6^BID;jpGzAhsBA!MkmNnsu7-0?NTXxv_Drme~LLOGN;)qvdt1ONv{>&X}w?PM+>`Axj7>0k1FuJ{;T0G?R5#l_c*un z6pRlwTd96MNg(%S{qF{{>%Q_)vaY$i>Bde;D7SuIVhnZ`TlIxkrpOFf9yWFR#htd> z4QCI^l>%h>@N6WPA^Uf)41i3^p=qEsQ06CW#r#$>0?bB_kk}OkPh1hn2@ZMVuJ4X% zKcfDU4y+K5Q`Rr-3cooTdS>4Q&j=0U8N_us-uvbor+b*N`WZs&g&?#`)kp$>2_f2e z_#O8b6QA#PO&PTi7941w>yv)-_ngQjw`<0hH?F0aQ*!fLmMy%t6oz%Pt^|>@lo^!{ zOcDqCi{1HQo2}D9%}pGAZ~`>$8H^He-T5(Dl?GgWqa$~QuKmnm|~dM zexLm5n9eiV&x-CHCI1QWzgYmj_fCYM>ncRK%_1D)!DJq0Et8C|Hy|EQ!)n=Q0M1Pr zxgsLLemM^UB2CH^sOyd@8|DaGSKkEcWQlpaYT1ojE;U7>`kFy|-;+q+1P_y05ajbO z{TiZ=9B?BrsX%PHVZovLNCoyIBP^C!MSaBhi(s1T?s7=w1`>;9-F*N-oidKS82i}N zDI)dr!4LZTQdY^uvt-5i%ZEVLL7=3v7PayIc{sIVH_`-gtNriBTHD{&??mN!IE)nM z)AcB~DmkguH79>R`ZBr?8TmvSVR%Ax3GQppLQVrh>MP}zVgNZbhm;08X%^Jbijqr| zISDBN-p|!+H_b|Wuo*9AP$!JWr=#^Rh8%m85pWz(E)GDzc~f|_TBXD4P-f)avLF`# zLb4QZ?2j`R?9vccJt;R~iECr>8B;t6J$zXG@G{n~X_j^aLh~#{ujJ{aI#pDnG9eZ= zW&>zQbpIoUF+jCu6!DnY9rMGh*!2=OX-zmc#J-2oV0DqT;eNbMsg*6L@wr|vfKP#n zU#B1KaLh7~5+xf{^AZ{!yZYew*+8G%03FHiQ3a4X@gKlzC!JH+2ARME@#QzrV>AN+p+QMh7}2*faa>;^ zfSW>IpJ{Xt;CP?OII9Ey^-c(7BQP8Pd+;jcWDudCB2V?UNApEE5a%?k!LH(L?NR77 z3^}M~Xdu^rU#vxo=imt_n-Y)QMo}vJ!k2i_5magrBr#G(D*rTlWzkCLXkc4Cff$OY zQo@X%Q!$jTis!Jp99ZCice8=`=Btai?hgE@M{W~39*T{VrW4SbIgmuQ80MZ@z zSD3a=x_S!|1(ti78s?49uvSQPenG#3vo5LLeJzUkF~+&^$>^9Xn-Gagp>~bxb8o^0 z+w3;@%C2oA990`v?l+aeB;HgOLZy2L*E%RD%)iwk4v?wcjp<#;;n)ortorp;AAVVq zy6JlsoxZo^wy)&M^ZBPO+CRg~nI|KWqNEkIn#O~UTK#T>h= z_{NDGCxuJlA#;An-!Eh#?#gXt!g6fHh0La$VH9FJG(>N-v-L(lKveE^%x%3xb>x}N z0zuXv;tNP=e-*}O#mNp)cvMu0(BpN!_+K7G-E)P>6SE7~-L5+lQomB@Ka7vN`ULLv zkNkJqS|*+A+yBk{G~D`v!`>$Oska~g`#%IUsHb*Kl+Qvw&ZMu=$xMEdQ*m2 z=gAkJ?JX7#Xq&5wf8P&hKJEyDQbLtG1;2=B_%m&VaFu9KJod(fPJVN?A{o^nC>8nr z6;A((rFeY$D4Q=NG^8hXR|()3y*c-3;flA}tL?f^7Op^6kv?M_a|t<|$g}Bin$e)D zCh>Ab!leU~m18gxMA^Lhcx*Q6Diq*}^P%sl{@DvW6j~%3XFkkU$$KO6vn}fKnt5J; zAnXnFKP4RAvqUd(wMfT)X@MegUR_4dE^zSWvS))1ku}q~lmXE|8}J)8FR3r+b7Z8R zi@Q?M(!AZIrMl~tr&8QA8yz2erpXBB2^-lJOH!d2?;412j;ad$P!$A1p!Dx{;IdZ2 z3}fq?6t!$KsAF^>)MmqUB}9UOh&3!PvI!{|*x4XSFO`rd)rUY(y`VWqw=g$)AJX8ks$OE$cj~o7Fb4=&FU{VW8=%G$OixDv+1>7-t$Z zDX+ZP6MJ}G$VoX@+Q+j{HNg`}@I|K=yi7QX%i2c#hY-B9MQy7>GKpw!$N7@8MdJ#5 zzuEXHN3E!A{eBvYlONeZ1_3M=IZiLPXa#_y3;#F{Noko ztf+$VNx_j8y-yB}^T9_n)%hC90+CG4#rdHh-Tm<&G9($<9a3D(T8uwv%=Z-KqAen8 zLkRX>+Zu0pY{%$BINx6Yj2>8)b5U+rJ+T8;Fq=LHq6l*ce9Xz@xtNh`f zVRnZ)*-s~R#b^~Kxhq=_x(0}w&bhTY-LjXs8*k3LVB{pRha2$N1Q0}83;(w}oh<%( zSz`TXqgQ4_RUo`AM9@@kn7`e=ZrZ;gsZ3Fi5YEb2_DYH@nFtHFs-ER7gc>n$w5Tgn zxd@eqyY_3d!5x@*@5DCZuPlzH2Is*m2mGH`?h7*_8qXrHIay3w8_G0#GXqKLm!cV2 zb(*WFVgrjlk4%e@r-K+4*U_bidQvlN1{|Apt!klFIyKb8413W(x=~DR`ppD9C9&Fg z0ZtYLnGUXZdv6@33-QaBYqJh#^yajs zcYg+2ipF2nAY{}X6XUFl;Vih%J_dYk18~u&=KZ^X6#1V+qLJq+!|xV)j}1YY{O$17 z7avz3E@L@(*&^R9Ii`=LOCz8X%$zH8MWd;5T;KPXW=HdqSk8Agd)%G*RKZ2UwV!?u zLixpc^#!F^7!50-nxWQes1;R<%1)3M$*KAMz<)nse5yIG@~;}^MTWTI7Aj4>JC7wE zpO%W19#$WBNuLrFhm=QB~S7w{wMEa z2>Rjg`UnVC{!1)V(efA3LFJ0L-th+GT6$Vry5?oeVgRH2X) zm`+&k0YkNs1pyjGjx-FD+}KLjU*6i#z52@-DSJc`1{$H->ze>Pax}|3l0uHH8@Z5P zCwlzcWlQOLK9V{ajf46m9{m>xphrHcw`F&ejwHJl!66}4YBx7_xC#=6vqdR6HY??* z^FN+;Q|VFv3DZaf%ON}OXSouE9m3_0_RF?j8;+r^R-Gc;Q`)NM^mMj>2c|)jq-F|> zi%KwR4uGwR@p5CY4#QyA7^oGf9{B$-%@5A^4T0D+u%DU?fk0)E=3S-T za;dME!(q(ASeWi}o+8NB6e-3I(m+4VkU!_n9fASMtIwu;-~LQAT-6Tq2JE)&^zh!N z_K*-BjP=VEopNh?9^fW^>SDFG1;ApHX!WfU1sCMVAxzmp6815a-tLNicnd;EQ+r8H zDeSlNh<$l_E1XB)2{+^A?NaBp8|XzVe5X*7X_PQ*h`xy%oa>{;fB{^iKFQY}0Pg5p zFnq7tVatS&O`KM~byZAk6GYTnSz`W#LD1mIp1EF(^E+V#KcS^CN!oa;eLMEG&{2p$5$t zOhaVu|Kid2v^Ne)`Al;L?pcC!K*4p)J0LIPiT!^AqzFxuE(nCp|7=za;P`?^+EEt8hv4KrQxIn!!ua>UIdEQ(< z|7{M1bpkx^mJp>fPLyo!mswMV6H~~>KJ4(tIR_d^V-Xwuqp7$|Cu4G$9iEH z2IkWNbDV0zb3{cZl-7S?D~!EX5D!}Rz8nL}FV1;c`XEe+WA&Pdz|4IB#_<7I@KT4d^OF#;j|AZ+5)JiHhLkJKJou+>Mf(HTEDkp z*aB{l79<3vK{}%N35v6@l* zHtfAvs?GHt@Lm+2$V_|%dt3<8Z1}?RMIE`o6`G7xJ_O3+@$c9Do&yEioYxeQAa#L& zayPn{#NPoA1PPm|D${VjZyoo)lY?CWMB_P*t2Z3BJb8@mUrc-Hv=LnAedmEJ-*wkZ z-+S@@Uu}G11qO^dmtpp*J0fpiUuKw~mM;L89@f1}D7y&tQ|Jlj7h6;yumV^{-DhMZ zHtnj8Odx%U0-K+sA%8XM+~}~MxU&CS+kSKccoXox0Iu`7Y=?3)WA1qQ6~OQI#eDo~ z9$LU~Y0wtVTakRX8!+Nw)F-rIlC+h25WY~@)1+XxV9MnIawrNM4oLWtuSF^hWfAwv zVr>a7UPTGzOPke5y~>sWn6x>8%sS+?CM99!Tks9v%)Z%z?v+B^;2_56Pc?-pw*XJ$ z?Ze#j?={<+6fCtm{9%gN#a(xsnSW?P&atcs^QP0x#NSE9w1s0mm^7XNRE*~k?nL1< zDwShm`{$GchHCLJxJPLZz5__gD40FLKFw-60>FMSVBuF`{?$)Y8f|@`Cl);Jp)Ob~ z0?H)0swokTQY6E1Fn}@tw2)bEmH!;QG?L>As*9c;BkBbcNRFwusM=X*{4r+##QV~4 zo|gS7jy9P;Q6b(3pi_OeT1^P>D+qZ2mvN;Mat;>DC$QAVYIb$YXy{rLAAJY(J`p#H zqwG3?ZWQrqC0{NcW7y8&>ekurPEjOk6m0bQS$71Kknj}vq^Y()em7b@nW)mbu!|?( zE88YKT)6)y{Oq$s)^bRlImu`j_cIU#eQy56$u5@9c8;(9Z#|pkw@b>|G5VjCZ+;G&Dt0@iAH%tLcZJPA`g1r} z31Q`~05}UFriXkU1e=UxBqhH4uSO|AHLAdFwtW0wjp76jau)AX^XrXHE3?>c*lUc|{DqYb%SsVIEA{*3#mj(b7YNHzK2Xfia z$9(qLAA|t+Y(7S@E=cNTch|gAC*hR}xr72ajQtW&p1h`0DG@5*JoW(2fuCi>;NLEd) zbG|YF7?H2xL=3(j$ob{hc_+-qzqgB!o!^wGH=+u*ai_dd9Q zogyv)82Jy_OeGGZm`>spSRI7Q{u#`xCfA$jeK?ZlH&Z9=#;h)~!U440J_Y2K#-Aw^ z(Vmj#_d)7ma$r@R}-lMx3=I0%``8MDFo2Lfk?YpM5r<_|p>ClS) zyO#&yj7@9fYN-FtnmbymKsr(G%~WmoTJ`C%>c>AVfF6ukb)_gn+QNVFaX3QpA^UBE z)z`)e@ih^E3n)0Q$egl;?UWK!!% znZ^r#$0WmoGTaK~=&0Y$QKa=;AHCy!rEu7Op|XW5J0$|to`DC_pE(D1Ax=q#i)yOk zVRsgKfGM8`$O22cv-Aj+XCk=%6_&-S3_h3V$+U+%W6M3P#iz(DQU)&{uK4=*9@nvH z9ROG-;}&>mFP%`p^yL!vW%0S5jAvxhKD3hSL)j#Z7{S^^r}1F}|v z`N4^D@uVsR0)^-!RnIS^3${2yFO4xV^4B5XH;6q7qiidG3lzmdgxOg^2T?>_cP@}F z{T*ViTcDQDaxBXErR)Kr1Di+W&7Bzrn2`I}?PwoqV+wYkkT0y}Q*ceMy?8iQn%TURis(Gh{0@84}oB z6BH9pCOe22ZoJgrFzDt$B?WFlJk-i*-b8zz=nWw?qU%K*rO7~m-rxav->#KVmu_DC>;4xj`kcPjkzJjQ7enr8C z3UK7SJT< zk+y0>Zi!_m5`NAwm^|qPZk{WBT(4`15rkCZg(2Li3bmFxFCX)yZ4mze`xG~l-+8l; zZ4B}EJmROHsDKCMw)fc={jGlkMLANy-s0^#ZVY(G=hY z(2WYr0bO%qX+fqZc*%k)e$fW40Z3?G3YnZ)&=f&H>DS$hFSTcenW^^UcS7|kSPFxt zkovXc3$2T-iF>bdSlJ8i@z9`sUx@)guDs^QKUA0-jzH!2;LRqqeUVZfbFm!q0}>?l zs+xC@`zS)9yinV3>#q2c}=o}Y#aEc01+~&M~;D5WV_2!=% z;8{IH0w#(GZKI8cPknjKcAw?y<2`J9AW2q^>jabLwi2>d(5dee#~#YisA4kdLLRkt z5*y&PcCB`;d}m5p`-397Y^(x0AKp0fICUUt77T_Kyy&`;QQ>u|0_%`T2obVnfeS<~51GCsx|DEU3(0QKA zHVWKeA%cOtMs{na8rd+kKu;{9F`GNp(R!ns`o|H{*_6Vh`Z%-%Bey6fx!qa7^jU^s z5(VaQMS|gU4Ve zHe^g=xdB8dZz2fpCDwjKTgbv#K+{Fz0YBR4bzWTV$R%q#qICISnpIfLm*LvAWj|1f zFAv1){D7KTN1sn#=hLAXv9a|J@MprFRV0G%123nDF9M90(ip)#NbH1p=P-g=Fq=zI zdV_e~xl-+Fn#jT$kg(M!V6X8j@5*^hz=wDW^dwY1NC_lKk2K5xmWR?G<`2m(e&f*g zj+T-n5CX$r4sSEg&5}bPh;Van%InE2U7fiHHD!>YpiIcba0a%y; z>~J^Y=a_BU7;slq9dZUU!Fy3)bZA0~9>W-+_!Gq(uB2gLKKbAM8B zz6X52$o@)FrHzODsVcF!AF9nS+kv}qL4x`ibe5X7h0b9vn;{smfLM1>3jJJ|b) z^}wi-VcBG*fARw6_>Jnrc^QS3;H<%k^s8msZ7{U)BY(th^ zDuEFNJeD2$TE@1K}~CnTls#*y{8@ zCP|(BQVRTPfP2(53FtuVyci2+kD;~B>O+G6&QE_@OTB0F+SXOIb~)$d_l z;PHHTHwOtpcmH%fwzGInln~t{SE#TYI6R5)Pva%d{Xe(ab)+D$p!UH3v(0mdInNie zsbnDjCY&*TUFwroD55?4nU$*4%x~=`z`+S?+H2&r+xwJFmVpNh4O@AnOh+V^cmuypV<6P<9>UCdnA<*kNxxP^TrW> zpF8PWp=djbw1O^w9vO;Y07>-Dpp(>Efe8Xq2^u!pCU8oA6I@2D3D6Aa ziVMZC{q+=RR{%GA&n@xC-QV*86s@r1ncq*vad|j=i^kf8XmS15UfNnPKg|`J%S$M7 z5XX(B_e;xekyfX`$7sZT7Ewp_x^C$uX@~;%K1{}5TzXiZ8v{l~nTsNIk5MCfu~*PW zWpTmGW52OF;}y@S@ZH|u)K8;}7nvub+SlkmF2P1re_OJ&=a2Yre>+trrAR0hQs?iM z$1+pDdBrwU!ncSj*U<%lf1KE|*$5^L;xfpha1KVSfOO)Ns-5laIq-J8z1W{O<;P+> z6a8}(4RHXmgHTL>$A%*raHNh&llZ~uacV*Ndj6YDx+hqIzV-5IT&0{^fX+HoLl_Q* z4-Cra$$uDZ1}V&~2qp&^){g)Mz4JU?gz-HI^D=HniN7(~4>xts2wL0S{NQDDTZcuw zwGuUhwW6}Jvmg<>eIdiFjb*_6y>vahRSEfR4SDcAOO;z1F_8W2o0uruzFn07(|o{8@8cP3IjmD z#1n)p%|RN^Plq33nNttxo%&e5*MVK$#)t2a0RfoQBcR;?umy_H0j~e;_nwCCeCCYK zJESlSbSIPB-hgH!>~9RTNe%`SlcKDqMEVzlE?C5Uc{6#x>MG-(1kq3aZlWGh$`Hz5 zipiA0+XJ&q+mzB~XbpbX%pC~2U*+@uT-J9?0!s`LGczUVoXG@Hf{&xv9FV<{KxVvQQb|iy80YV-@{X|TZ~b%SRsQLCT;y?IgF z%)!1kH)Z6ME6iP}B&+7?X7R6H0#P+gTBI(?k2LA`qc&h?=A@Ux%235z~q^7?dx%a@(8tJ&00J(bZx zitd!8HDZwb)WU25T!c8oe@AcgHeV_EA6@PoWd+v~@w)msr9{;q!>({hKGQs2t!f>i3?}ADcw#o`#Iz^ z4{SeYCp|0GBdT6YOI=kscFpX`P7GlA2Ek1}k#ttNRtqI`B$P2Pw3ZuY*aM+QpErK% zjTVN<0jinp!1RqcLv%B|?U*8}eE0D)jb<8apLQ`nq>sdEheqcdAO=NFdE2}q`p=-@ zofJovN&5oq_^A77pITpMWq7>Wi5%tPMqTColWp@Ths9V?eV)t{r1lXOKi>!pZyPPQ zYg+5VlC7(J607gIX0npmlrU*Zc_pJgTg*c1Bozp+1nlrp19j%~qG2)rjy)nb*hIzp zpHriYhX>x*MK`E_zEx#(M+%oLM`i&W&^;p&i99GTDOF<;@aMZ=5Ahk+!l^+IL(F*ny}Nke zFZ-*Al;cX}p#;nnvQXq`?f%fL-|QWVU{LUkJi`*l2v0OswFR)5Ar=r(g=_hvjqX)b z4iUpmz7@7BCO&?-Vbdk=IVx*2}m@QPi87PaX%hqE^^Q`SoXYh83Pk*#;vP2=qw*x zs?9g!~l1n#q*+~Py<;RRse zx3_|@^mJwRK{+7V#Xc64e$e{iqRzZl^%_M%SaE@QqcB!tc65=(X7et_IhxS%Yd(qp8V3sL zJ>PybOtpVE6jyy81UGQf-Hl%0#H4Emnqpwh5RHFY#}cID(0k~cNHPpwJ~rlGq?2^T zx>`D}Wgl=E0%`^M8URsMJ^>Gh4&Mf${mOh#+6a=Y^N^4I z_y%A=SncG$C=R6@O8HldI3&6&4MhRkX(S&m{WfMi4f$lO>sPq_sD)yF-TBH?MLh9W z;IYb&{y;3mzL_TRWTW=vSUelNrz<2m5n5@I@QjdXyy}?j!^fJ>YJ^#yx`=kn8#`QJ zoCR?VoT#FG5ysF6^wN1Ult8Zkb#@q+fex0c^kYjApW2!1@pHXh$e?f_MT^cK@l-*; zj4?&~hPGJPXJN^mGGcN}&7$7m=DeO0cjzwdL)j(?rVI>znB!6Plns`(|nBBzXQhz@aZGfYR4_%3FI(W(S-TeX5_3$zPZe!ghSZgX6VA?zSgdfvbd_4CKPu@QfCT4t0InvET?q&5cHml2 zq0|LekVWb=*yfgNaRrIRQ^#nNv_>G^u#H{zyw>-k9r&2>y8wGJ`I_?<#H2fdSR%S! zkX=41zW7Q0q>qek-Hen}9=u!u)TtwPDgV$8vm^uR?bm-cvncLPsQyU0L z3MRobDBdXulVoIxH!VP2t6n0dC4Q#TSu#5V`j7#3*bB=H`K|uD zolNTAt`Hd|7H&Co|J^zlHCmVl5N3uoaBKVusn+w?Xr}HoiA zP!@Gbgwc9ea=^J^SW8@}!220XdZ4#cckmDbw8Bn$$s1G$I&TJc(ewln*yP*yZ?Oek zM1-4wZZUv@XA#L$ZOs5#%^d__kYk>9>Ml$)>{-AQ7-6YqGJMyq&O&Cp#NAJ;MW2T` zx?E+x$SJW~Z1SRd#BNbta{&x*T5YBqq!YA^a`s46x$XN{w5y~DV5L}Y@n2fH-s-=r-f6B_f$kfY*~BK|BPt(w}!k3DZ95*fowv0uS@9t=BLC z`vg28C%KVobCvtjIA5EaFWyJf@D!7Ug$Prcu?E0W>b>+aI`jRI?^(}5RGj`OEtsOw z`a+Fmynm+e8nL2vj+f!Nf2mew+pC2BOWd{Ec${<1Sa<~v1V?$6QvAD?2jE&npleZw z$~?Qo5}h%5hAQ6MAFhOJIhro-rjU@BoeC-mR?y=}h;}v>XU{y_!q>7~q)eZ0vjuk|Y7m7?@`=YLW$Kn8Y9~GoqBp+^&tNMl81IREcE2TP zI7{IbrH|+>5rhboCzIs`B(OChNFEdfD3!u-=XoBx1)8G~x35Vd_ z-??F+k4K1q45mE)dnx=SJLJ;F$l89|G`aU6{(dSl5%v)CF|Ni7{xT#wdlWi*@N~by z1z*hNJ-SB``#6=!RlrrX=OyutTtC$qW60yjM{Ma1#(AZu(q8@SDTIcc;XF^+h@0*@ zBFEYtbpaW%qd9c22Yi)lP*cgKx&Q#wb-xL>zr9y`o|U?Tq(-pY{ zZ`@U!2}8a90Jvni#Ju0O7r%3u zSsvCk+X(WaFrxeB4k1^Xw|V~pmcf#hhOUlhJg3nMdfDs?JN+lcTEaE**a4N}- zxVS0tB(ItDZfcIRLmLkV3WoH@#ivG5(}7eLYX}nGT!uVuq@`#F5Z4@P>5_K47Gn

qs<+?z&cfecxf<_x>KtXn4-urDi;S}um$BCu8V-|-p=K*1T_xauT283AinfHh<106pa6X0q%}>8 zPjM)(tb07vjI>4#_pzdl;!I4@RZ12|uzVe5DB`nXvB@6V=yk?%_s@Ze^v91s*E`|k z`Qxul;Y&F8!zBP>5VKSM*Vzku%Z7|BCUYeS=^5Ljgp`oav8Bw*mNOMXL1Oh(F_vZ! zhI=Fxtc^UZCEXs3^Pc_jE|@ghELvW|6;X#)AIeijVch_NKzL`|8vj&fERM(}1^tAY zwYUN|$_F?UImTaEv;HfSp6*&mefj$%S`a}M+_CSMbMH+t;K*SNQU=tsw|2`tN;<6b zVEKhxgo48PD}n+$kiliGB+(Y+=Qs|S7fjWIgb@=GV~E3u)A5jo*NN=0D}K>o-*QjG ze%4NaoZz$Og2ymRT#BD?l+yk>iRCl+-Wfo%7^_JjRKj}&@`8WTT+XJDP-c8V znXWi%Ajk6Ul0h;id6Ka3;pCUP)c1G7vPA?D=5Ci%=a0x-=>GQ@rJhIBXfub^QQozs z3HhzX23Z@}g{JfOeA{E&5dFMR<9@fcJBRziABkI23Z_@(Ro0DYr3@(_vJOISfVUhFgo94uP=z-rHusew|#l4L-_@-B9pTlfre^O%qq$@~C zV8Xq$v%Ozwi326bX5t+ErvDYw#-)1-G3<&0X;x^pDIltQ6Rp}xZ}%Q*=U-3SJ%Cpx ze2l(5pRzL2=T`JvV_(X_awByY`z=(a?WT3-3Z4}jl(Ycs5Rz9fRU74D<6SSw;fL9T zo$C7J@F@l?-xbOs8bp!Xd~Mo)9TX!T)KqCuu|KE#_fBK_7D~1xsEr!hu#o)k-Ibyk z+C{)UvVdKNjPoGtV_0PLM}eyKQT!mDl%QZa-8Wj^e`_VKSJ><}p!Y+SKs1lJbiS+U zZMkUX@xgn_-B}0gMF&ec3&N4)d;ykuTn2iSFitK++l4+yuqhXIX=bF+)l4N?+89@e(X|G`;E4@O7;4YG-b{r>*-&H#6{@ zwp>|(3k8AYtJvpU;rdnQ`vBJUqPXqk!5(86DpEpix)a$06_DY10q%MoPz?*dc!p=X z*ksUxiZ%7!@MZxFqW*j7ReWfGu(rd0CQo~A1}6v+BffbqPm6W)t+|))+d&<-4|(Ty zc(XF7(a>+=qDFh%IkR`)2*}~^1=rV-^<76lt6apjO?{7_YHDnAHG-RniD98uRoHb` zdUY3|{&*YFgtAjJ2yQJU=vE6z*yS0@XezxvmvsaD%mHpih4hrr#rCyb;5KO8O-m>6NjXOwdoZ&OoLZeNC!h znK=i@Kyv_86;?D{!^YU1{qxJHG!2Tm;?Qh~i=uxq)r4nygFRuGh2_f(H<)$@{=#A7 zbZ3AzMqeW!dh@NyD<1Eg9ijIZ20~2N7z5HSLGPo<-m@C7qe(;XCDKx=jz|@Eoxhb6 ztsNm(cvfkb{8C^3;&JsS4JsIISp*}V{p0xm5DiH%4w#Qsy!r9pF=PM=6nL0DN|~Wz z1YsW3l;B}5BGCE)LSi!|4aZ(+d5#;YxqwxhXVzZ6JD%$2(GQ+EA`VvxeQleWDuU3& z%Zn0br1W~fbRJSr+<@i`at)cJS$w+JYW2-|Yvku_pP$P@q=uWXL~50a;2t-S%02xK z@&NfuSC&*h0Nt0-FrsafT&I$j6h`O=IOQ^3GxN^PLCjjbZ`u0t3cz1;r*H#nA@XkC z#Sf!kHfM8a(I#$u$n+gENDP$%962af7l3yiSWC?8CLtAs^K?Hpt!*YUS{k6$G1={b0CYH1`23c^1hi}MDW{HxJDCmNF4hB$^Aayr8uYv9R(ymapnBtos=$QS#>LS zIa)7L>>B6qXbQOd5{L$y+2K}PS z+Ko1l;Pd;8r#MS87~3VrRH7vmXB>nR2lfqGIp2h?9D+?DzaFqqH@6TSHQ4()Iq(}# zwQyIv+Kk6wFDiWv7mnYVD)@`b|MC ze4E++G$x%t-B0Gg{$)N}+~0&BZKDS`!Vbrl<9D+vPem9<@prKR8yzUqJU5{U_)1x+ z@#A~=do1ru;!!@NQ-trCla?01JQV`PaulZ#)EDyy-mhm2udpnE1wPqmQ-SHJvQ8Fw zrx4`6iinU_Cad>5nq`lL&Y1WRGr!D5Ela9gzgsTKR128yt%sfj66wVd?P3ahoZ25W z|80VZW{p2Rj)8oDZ>7(9`g^#p5nbR&tIj8G;)J6JpS8r-WIhtRI5{Z;e7`Z@gSPuc zDj--WnCbVo>^J}QPVE)G-pq>;G!uqznr`+L zbUHwBA&dr1e*zk1GfW=w^^rUu45xtKA zQYzgpf4E!@#-_U;Fpa~8B3%hmGx;|nMM((DxxPq{h%2EqLfJ6VzDM^@fvNP5I`5a! zjG|>+Zc@EofYuddDwfE7H}=!DKj`CtJ!IL_Oimz-LoQTAgN}m(Hn%R#*W+L3K!>~b zz7kLn^Nr#LE`B+3cq$1zR@NBe1lJrTrk0@gs?s%&%qP}bR)pu~g$lN9vU_-?%cXq#h`9T7Lx3FPbB z0xtUm6A8LHAc_r&`;Sq;3J_VIx6dkExke2OhaC>0j8Z-hBi%^%Biv%UvYG}WQur$) zJ_C|La1S$T7PXn??l1)au1bu*nuGBnH=EsC3|x@*`K;&H#>SYfU~*TjfzqfK-@+7rmTDzJ1RB#(JgOusR`-40vN%l#z&OT^#M-X#-#7(mI(A*an|81Y4>3fiJ87_+M z{=|J1ueV)??8hY-dQ2>%W43;#3@ZYq1k)FKty9Asp6l)5eZN0MH0NCCR%Me>z3_Zf z#QKkuzEtzfXE?&T#(#V4(6^3&9(dAB3m@Lb0inl+ z>dS_#>@D3z@RgYOh<&|^mb>ei^3_%q!Ji!buwD7H7f#TY@T-c&Gqs^6Z7yt$9R<^u z4@LeBNvF%)$p7^?_kDABNi?v@p5y=5B%h;Ira_5 zC3-P#o35AbRK;s!n9>HZ=0KM1#=k*^7`EmQJz|t1Pn5rX zToTcSNW|Hl7+se^DsKj!bw9;<*9S6pKzf@m+TF@=n!^}>W!if#{l{?0Bl1(}+u!lhwPDPdMGL|{a@i!?%6 zRnU=Uj>7pYkB@Gvw>h1xFE61}~S9h(cWnv_fx(FkmFyw00wp2Em z8wHS@%puw3H6sT(%US}jo=-WNbP9OssV&@ z)ZS0pD{gTQC6WZ4))gHru=^hV40^>Jak%Y9uJ|3aK?T$?awN!6oO0DBt^8~>J-Jwc z2(U6^WS)sLyh*Qe-Px$=u5d);Vj1&VFUF`*Rd}TngFYz(P`;0GA9i{YzkZ(5bxh_d z%x={(C9e2|Tf#aIWax^F_cJSbC3Qo`JttFM5puiy+;X!3{2;B$qI&s3xU2CCeDJRt zOBYQvn3mliC^8gbFm=#zi8LS{VqZx>`_nxm!(~D{>hi@YvK|n}>hwNgRv4iR5(AGm zfoaDG@#&4X`&L162fMg-4f@@X;UKm|<^i}N%8fQNA0F>8uzt;w);Td8C&)h^<`yJ{ zQHWVnYR$B_@f&c+W>A}*1%?FW9dfk=kB3qjJ(36>7&-5M#tLJBcjG>Z;3 zHGGob=Ait6Q5V0WhkEGAqe2FvCq)MKuhGB6Gjw#wju6R54AJJjldTKq{czwxs}TV;T4t@4cT}suXyMh#bUmf299*47?H#!3 zv|hf?lSU*zlHk7#aeu!R+2vsZ=f;8&7DuF^30QT4-4=Myv$fy^rh`RVnUx;@z4avz zkzdJ-Up3Aa{o8;sJOgc9i)v5EN=p6jk(x60iGPNefIlQFvj`07eHiFAhnm3XrH$KS zgst2Oyc4;rNZ}fjrP>cuKiT<_-docdIDQOU`zTfo-W{|3I&M^+h}s*V%yCKSG#V!$ zNFlLrlCGHXFJA*pOt@L~phkcg*^Mg!W{UkH@QAmCB!|oZsc_|MU~FZ?5duBNVTeDa zIyt+6n7YftSzXf-w;&*Ht9ffJ8)AG)YUr_QQO5Mem(89|P$L7|tF)C=HY;8P{6weU zCP!~;@@v*JYSe1^Xt~{4!-_+(d#_*-#|*h?YCJ1Z*@#VW61hN*b^fQ$VAz06Ix)W# zw$|1)sZN5PNSabjv~aC3f>g|c2tfudtuD`Rcg;ml3{o^i`yf}3g^mA)Em;vWY7iEe zm#o=?-sf~_s|ZX=j1VY0d{?XS@%@NFRU4Z!d$uYmV2CResvi)~G*EHbG7k(Jazly;=;FBX$B9C`weeRM zavA{;((s7oO&!QVrB$khUd+ef#iTA$)M`-mMFdzeGMi^pP^e1#nyev(8}Ah=S*Y75 zb>=~`rUX&=-h(W3oz^OJ5eh>*6P~Z+Oiz7j&iA6hfqqhogNn7%J%DXKZ;xx|u~+|oV(O7uL)!W|_D z{q?YGrVKS(&yX$TTuUF2wtmo|cTa&Baf<5P8kJH#LqQG{7`(-*o0F{iQNSG)3MwZE z1;|0ZUSsn~JrScJId*HeKsJ<-BGB44El!<|1C>+`&K=4rfzFe7nZ>R>N*@%5G4^Md zQ227mA6uF8d887iuLN#OPY^q8#VAuRqe2V#T7_1CITck9wh%74&+SnlH>GL9=KIy2 z*q8KNG%rFE18SGT%Cad{!DOi^Q-LKJA1&7Ykj^7MsKB9GhQq15AaJ~s=k3H2*>kfb z6~AMUXWUy*lit^Qd|oer3pbuJTkZcyr<}2=S*AxTEBzbjNRmb&S9`YJ-HgQ?dG*Y+ zCqmv}8gxYGa)cdlP`8ETrqKOveGV;X$)Mk9{ilkcs|ha%<4PWSir=UU21KtH6J}A{ zzR4XnB2_@*NfKgz12(8k`EC<;Uy4Mg&W^<>!n|}mpLSI!k;?l9SAeB{+Z2`+Z`%Q( zbcY>IV5eP_c0VMWk=tM?87OMP|J4;ctq;=d6qEoN^3K#P|@IYnkitb_S zAJTy1l#9sx?v9@9gYs>hKzt~Xrn_RLVH$k^qAl>j+m!g)W@X0Eod=JKQk-`d#xnSw ze!A{;;1&^}gvlf{fOSdmg7YtAbwCa=iGMvgTZ{7!5$VSX7Ml-!jjGv(UYp%^p)8~< zrj5^MzzLK{cs3|XZT{<0j%6rLKB>9mEPB}e2diShQ#cs|?OLz@H_awetHvSV;nWe> zikJ|X_6nR%zdn~0vL>r6GJmC1je?t06}C5Q0Lj!TaX9kFbb==WMLrlVu7O^UpRh7` zL4Qk(A{12WUxlnh<2XNT;p(K&CMKmEO&fD;%NcCp5`z*WKl|aTp6{ilkwWU7?|(+m z_&XZZByF}G)$S^Gz>!QjDUF8D9duJ4gYeLg!o%PlGg-qQ|2 zw103>N`^icwQNRKF9PUe|N4B73EQ`VT8ulCZO9Mx0U7iBHg7=uyS@B3yi0z_WOV65)hKLK#!4fpbP);|{)e^}QyE21QqeE^*Lz-uV*9-Fhmq86jeJN-Q^ zZTR7hUt{JFW` z2guFN(P@-MybDqwLMtsb#-W8g>#;#ulEy_~E$ToV;5Nb*klQjHy(Y5uH_i2gJKB2_ z*n{I=Kef1vg_g9P!I&f~&#kAHptxSO4EE@oXS%muRVN6kmcgdXL3nzDu83Fl&mb{= z${5R3?1j>Aq83cm=r81!3ysYJ9K|ZLtrxs5-l`D~rDmu2C0wgTEHGbi%o;7iO$+@- zpK{TVY31y8>pa>2QL|?$?9ri3)alcw98nMQkw5%oJUqCF~77?6^6((ga0}Y(G zN`Aq@nrtbLDZ* ztH0Xkb`OuGFK?`v;sm?tTCG2L#Cw33Uco2Zd5K?&{jWwGi)G81$+(|>)~;&v@AiJ= zsiuY6MWV~CaKB9L-w!a7fhLIX59;jUzyCkOeH2ocRLHl;3377ju2aPnixRoE7!2M@ zHUISN-F)X}*0`EC{C4TSXixezdbK^XY_7}*MkMz)N+Q65nP=bmYOj9&F))0brc`f{qMj|cBs|k4pir! zv#dX-pI7R_0^fi(qVXp?Lxm6wozYYD7JU`zCIV4;8iDmpE7@Pd% zxCgLFX@Km@k?)~}9HX-mJtPf$KEix6OfmKbOddSYtW-%eY`Vzm_p~}4NP6bPg~FPn zFwijnS%d$M5?t-A1|D#gn6rUZc2=IQ+$bXyABSOW5%8)-Ah7MLdK?=z3U7ANL`@-l zrv0^f4th*(RO>K6qZ}m02?OgH3X(uF!hJql`4292y`ms|`|DcspR=!y~5+#LF;54CaUJttQ4fY6wvtq?V z%k65gZ>xnq!I4yti0Yu8u<0Jz#&D8gjq}O+z={3YiN{taUyx01IhCCC;@E7V(&Ms` zs30*txItx5g*xWZGcKwpMSwx~d;DQ%)1K*+w?xH@gkcbQwN;TOnKJ*7TH&4qqVunh z!mH1s&6$s3<9^VoFwv`Reo*&bcAChq_2XS`5wSGJJF<3H-L#~Q7qf>w%Lib`xf+gy zBh~NcOvep8O0+fG`NU}f(Z|W&OtSxQ`u9)J$oNhI?v>4zuT<4!P-;8TaYoc@=PTJoq#|kd2X{K4#c4S z)Tw`0Fk4~hpK+pH9Gr`AC$EYxk<2DmoDO)=8Y`%bhit8xbXaoZXx*X_EJkOV&@uDt zT3|K4-ynt1(m+Vs9l!ycUkvL}qEA6dP>x@PyzkvH03QHY0ObB$!Z&_?3d(IAAQdV! zJrVZkiM2;c7hPoTW6d~`Q1x(FqlpLPUUw>_`{eyt?0ht#q$~so{7>r8{&_75{6Z9~ z_rZU+W7+|_mr~`r2=<})&tV?kemhscNsu!b9}J)iA`h47`;oohJ{wS!Ujv3q=UOdi zZw|Ep?@ai78dnv?z-GxX#FHWdSL0-hgGr%o!WdwxFCm7G!Jb)HPU(CH<93Dl{d#fa zh-usmr_y4{?<>)#@&ddy7=4a^Oohs;H&%%zcJNB$)G5rzA7@(iSENK<(JJx#c!S-X z*vG|v$YEPK`6-@a128ZC-?-!RM!lY!dAZdC&;wPK0D0MJgWu7u9w-J>fO^G{x=YoU z=M2~guhocAh!DKY67iDqW!9>opclSe1{#;dGxrci%J`okHjXx2w2lPN^!=<2?`MbD zo|r=23YHt)D>w~@sVs-J@nMTyy{$|pGjcWNZgPdArB>UW%M<`X0I*h7c#oL?e`gsi z6*x2FWQ{)B101%`IxzhLl(OE|WNl2|=YIIZNFUPVNSe;LWRw258EJ^-20kEKXTHE| z%V;sv5~>Bs4^Y;7zePOaYPRBJ8@!oB1i=`d$&eaRl&Z07c(9@o81T4@$Po7w9eQ?L zkFx!7)D5O3Gk!8}Y_v7g0bcGu{$hC#3po7&HRmm91(lPe=z$|zM@f&H8TfHOqrvuio27=m-1Ku)8;i;+QthHSm zfR&{LZV#`nG^LFeAQH~u_SBdsm{we(0+TBt1wze<{}3JtT#HlF28`C;AVau1Cal4n k@Hs^tIhcso#g_ge>1vVLuScYpAc246q?M)0B@F!jAF7` Date: Tue, 13 Dec 2022 18:32:45 +0100 Subject: [PATCH 07/11] Images link --- Backend/FastAPI/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index 6b11e09..d01314c 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -118,8 +118,10 @@ Otra ventaja es la estandarización, tu y todos los desarrolladores que trabajé ### Global vs Entorno Virtual Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes. - + + + +

(back to top)

From ff6b0eba9886f5366490b6a7280fee76edf4e85c Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Rojas <69109375+molro@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:34:21 +0100 Subject: [PATCH 08/11] Update README.md --- Backend/FastAPI/README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index d01314c..52650cf 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -117,11 +117,14 @@ Otra ventaja es la estandarización, tu y todos los desarrolladores que trabajé ### Global vs Entorno Virtual -Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes. +Para poder explicar las diferencias, podemos apreciar la comparación entre ambas imagenes +Global
+ +Virtual
- +

(back to top)

@@ -317,4 +320,4 @@ Project Link: [Hello-Python](https://github.com/mouredev/Hello-Python/tree/main/ [github-shield]:https://img.shields.io/github/followers/molro?style=social [github-url]: https://github.com/molro/ -[license-url]:https://github.com/mouredev/Hello-Python/blob/main/LICENSE \ No newline at end of file +[license-url]:https://github.com/mouredev/Hello-Python/blob/main/LICENSE From 989d085be43e694156752c243fb534698eecc828 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Date: Tue, 13 Dec 2022 18:37:46 +0100 Subject: [PATCH 09/11] =?UTF-8?q?Correcci=C3=B3n=20de=20Prompt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Backend/FastAPI/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index d01314c..e7ec792 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -228,7 +228,10 @@ IMPORTANTE!!! Trabajaremos sobre la terminal. ``` sh deactivate ``` - +IMPORTANTE +```(venv) ➜ Hello-Python git:(Python-venv) ✗``` + Veremos delante de nuestro prontuario el nombre del directorio donde hemos creado el entorno virutal. Así sabremos siempre si esta activado o no. + 7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual) 8. Instalamos las librerías utilizadas en el proyecto (Dentro del entorno virtual): From 84b25c47e0ea63b5dae6295a710864f6175d1e41 Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Rojas <69109375+molro@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:38:40 +0100 Subject: [PATCH 10/11] Update README.md --- Backend/FastAPI/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index 52650cf..caee6dc 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -231,8 +231,9 @@ IMPORTANTE!!! Trabajaremos sobre la terminal. ``` sh deactivate ``` - -7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual) + ```(venv) ➜ Hello-Python git:(Python-venv) ✗``` + Veremos delante de nuestro prontuario el nombre del directorio donde hemos creado el entorno virutal. Así sabremos siempre si esta activado o no. +7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual). 8. Instalamos las librerías utilizadas en el proyecto (Dentro del entorno virtual): ``` sh From 8806e0ae94fd22d0c447397a73b78e99a265698a Mon Sep 17 00:00:00 2001 From: Mauricio Olivares Rojas <69109375+molro@users.noreply.github.com> Date: Tue, 13 Dec 2022 18:39:38 +0100 Subject: [PATCH 11/11] Update README.md --- Backend/FastAPI/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Backend/FastAPI/README.md b/Backend/FastAPI/README.md index caee6dc..dc6a83f 100644 --- a/Backend/FastAPI/README.md +++ b/Backend/FastAPI/README.md @@ -231,8 +231,8 @@ IMPORTANTE!!! Trabajaremos sobre la terminal. ``` sh deactivate ``` - ```(venv) ➜ Hello-Python git:(Python-venv) ✗``` - Veremos delante de nuestro prontuario el nombre del directorio donde hemos creado el entorno virutal. Así sabremos siempre si esta activado o no. + + IMPORTANTE Veremos delante de nuestro prontuario el nombre del directorio donde hemos creado el entorno virutal. Así sabremos siempre si esta activado o no. ```(venv) ➜ Hello-Python git:(Python-venv) ✗```. 7. Repetimos el paso 4 y comprobamos las versiones instaladas (Dentro del entorno virtual). 8. Instalamos las librerías utilizadas en el proyecto (Dentro del entorno virtual):