From 68e49b78396d5b3cc8d2482e762e554f0f57e2b7 Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Tue, 8 Feb 2022 09:25:00 -0900 Subject: [PATCH] add sponsors --- README.md | 59 +++++++++++--------- docs/docs/assets/img/sponsors-jetbrains.png | Bin 0 -> 89690 bytes docs/docs/assets/img/sponsors-linode.svg | 1 + 3 files changed, 33 insertions(+), 27 deletions(-) create mode 100644 docs/docs/assets/img/sponsors-jetbrains.png create mode 100644 docs/docs/assets/img/sponsors-linode.svg diff --git a/README.md b/README.md index 34585313d449..92e1fe0735a5 100644 --- a/README.md +++ b/README.md @@ -42,20 +42,16 @@
- - - [![Product Name Screen Shot][product-screenshot]](https://example.com) # About The Project -Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and Mealie will automatically import the relevant data or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications. - -[Remember to join the Discord](https://discord.gg/QuStdQGSGK)! - +Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the url and Mealie will automatically import the relevant data or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications. +[Remember to join the Discord](https://discord.gg/QuStdQGSGK)! ## Key Features + - 🔍 Fuzzy search - 🏷️ Tag recipes with categories or tags for flexible sorting - 🕸 Import recipes from around the web by URL @@ -64,57 +60,66 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a - 📆 Create Meal Plans - 🛒 Generate shopping lists - 🐳 Easy setup with Docker -- 🎨 Customize your interface with color themes +- 🎨 Customize your interface with color themes - 💾 Export all your data in any format with Jinja2 Templates - 🔒 Keep your data safe with automated backup and easy restore options - 🌍 localized in many languages - ➕ Plus tons more! - - Flexible API - - Custom key/value pairs for recipes - - Webhook support - - Interactive API Documentation thanks to [FastAPI](https://fastapi.tiangolo.com/) and [Swagger](https://petstore.swagger.io/) - - Raw JSON Recipe Editor - - Migration from other platforms - - Chowdown - - Nextcloud Cookbook - - Random meal plan generation + - Flexible API + - Custom key/value pairs for recipes + - Webhook support + - Interactive API Documentation thanks to [FastAPI](https://fastapi.tiangolo.com/) and [Swagger](https://petstore.swagger.io/) + - Raw JSON Recipe Editor + - Migration from other platforms + - Chowdown + - Nextcloud Cookbook + - Random meal plan generation ## FAQ ### Why An API? -An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based of Meal Plan data to remind you to defrost the chicken, marinade the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. + +An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based of Meal Plan data to remind you to defrost the chicken, marinade the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation. ### Why a Database? -Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project it is a valid concern to be worried about your data. Mealie specifically addresses this concern by provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in controls of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you. + +Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project it is a valid concern to be worried about your data. Mealie specifically addresses this concern by provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in controls of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you. As to why we need a database? -- **Developer Experience:** Without a database a lot of the work to maintain your data is taken on by the developer instead of a battle tested platform for storing data. -- **Multi User Support:** With a solid database as backend storage for your data Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time. - +- **Developer Experience:** Without a database a lot of the work to maintain your data is taken on by the developer instead of a battle tested platform for storing data. +- **Multi User Support:** With a solid database as backend storage for your data Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time. + ## Contributing Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**. Especially test. Literally any tests. See the [Contributors Guide](https://hay-kot.github.io/mealie/contributors/non-coders/) for help getting started. -If you are not a coder, you can still contribute financially. financial contributions help me prioritize working on this project over others and helps me know that there is a real demand for project development. +If you are not a coder, you can still contribute financially. financial contributions help me prioritize working on this project over others and helps me know that there is a real demand for project development.Qtm$#B6O~S92fNQ^5MlZkdgTKHVtBKLcMx+w9+uLgqa@YG?Q_wX~TCd^T+36 zCfBZgRZIaih_uMfe~VC&7TJ$)v5}bUKwJo(x)jsSy?M0i!N$;6vy)o8hi{RdMomeY z{>w=pzzn9=_41))cu!}>ZRg-TF=L1Gv-vR@US@_Mw z3JF?U?p#`*QW8z894yGc=X+LzgBPsh&-Uv^v^|k{dVYRXoxx*e?@s$Q2!ti&=3_Fs zxK}a`ouO8zcQv<=rTZ7YtC)kxy7|%em=c?US}HU~1-2m!4KD(pm!k~z1y`OIK??nM zW_{u_BcN2q!xNulp5$RpO75Z>X#&%X#X_D%nwTZe3b+|N9e?N$eMqYY6!(d04=7G6 zx|#%%YTq_>p=ByvEKJO4!qjKk@@QcNe`+g}YRMz9M^9FI=JK|-d)q dMtp>m-@9L6pHQh0 zwsVje>B7+DZKls|m!O-pncBshQ2L}g-Qr4uss2U$LQ2vOkur7KYj>fRc()N;F?yS{ z&2?PEa>;OZZ89NJMBO; `1%g?{-q2Ln-^Zd_Zpw6%W_`h{$zv2Vx}8G?A+Bo3sT-y zQtXuL7Dp#iOZw-P*XgRL7{?v>Z!PpAcJq+IdOBC>w?5|Fw=rk^C0%llIrUERN~$?2 zy~#beDNQC9juKz~RJeXz2S=z!<;DHC6nCmgKtWG^Q!%`My83q%BQe?(_<4KiZ$U_= z7VdYBreIDjBJrEkD$HD5#G^PdHgaBb=H-`YEaUl=&Zs&ZW}X&!V$hcmI8gl1vMhN@ zqqctvrrTXPnNOONHXN!W{KxHr4zzxe_# ol_WZpPp)0Y&FF74YiD}{Y zNH4K3ShlL|__4<{7~rwf{&oww9iqhdj9`CPTb^EqT#X)+@3(bNway>V*Y*FN4%K16 zx2dpT*o|aSUc_%IruyiCCD()`Dc9|WoLZ1`Agt6sAdo?O8TZa}LZT)^p35hFO9(xO zwf^j_Nyf kPIj9?b5 zFM!a?GLn_{o^MTkWA!Gjh0gl4B{E_~7Of68sBC(Z3Ubc~XO@F?Zk+w*QC@Vmy3S!O z)j?B
Tq(1Tgp#nv zgQix(ue$|bk(qCkQ||9XCEXZ)3t~yT)JO6lgOTG}Az8 gr|JgxRjfQ7(PT(IF^fmEn zKBu#U&X?)ITRE+P7jOK`BdtZyKLgRmZpvHxbtCCvN2a;VjSg$Zk5FO>F-!r4ESy(4 zkPQYz0VzA5woRPVR}a!+SmaqqUVM_6|LgUbx=TyD!Y~h%;WLC@>7H1!n%>dgxPgFk z@J_M#T-G~O;M`KLyJDLou2Eg}5&*S7=^ Xo_*@tlVl^3bwbdPI>5;Y2mB5tx#=qeQ4=zf*E@Y zPPHD-rD5#&v~#1g12>SaZ~@eUDZhCkp9&6tmCGz87%nZH*6+l}sn1$$z7b0(sjx4` z7&m=7r^5kEM77RxX#sxY=K~NZw1`jXAu5EYy(_3HlPXQGRBN8Dg8Tr(u_<+se QO2q}5#vM35MhpFT+mx3x`ZT&r zM;1+i@qgV+EB6#R8A5 nr_JE%=l3m V zXFusm;9V;OD*26npjU?(*o7oGd|r1F(%R8TSN99g>aRD3wcN_2`#tZGw~VC7x0U5B zzIy6Qci)o&oc*LQl#wyyw$r#tQz8?HRa!#(&1atqCsIqesTidY4GUF`sSecjFyq#L z2vXXs0ebAZvos&z=kc=f5*=A8`)yONSHE`PM)nQqRJY9TuQo?TjjEEUo>ky^a>5oD z=!1IKh1c^6;-eDuVqY?I(#A9SYH(cU7@O3EIZYY68t%09(}BX^1R>6|N=JIQr-2aHCG z5gh)(cee#l2Cl6;xtF!I*=-}#NPx5eMF%SwDw6GEd+$+RtZclez43x4WMat?(`Wcd z6TF*80kobl?E15p3>w&&=@mS_26R?2uDcN((|$KhThT~5Z7GgwxA=Ia-qmS{{t~_W zkOlDgSC7tKlCyTdeKh(^I=E$A_2}_KK4yZMg0FwaDX1MlLZOff?4xPz1*N9 7Cg2@TH@nn(w}8R_qDw<}dII z;}xF!bm;u&J*VGgCz5_XbT*bm0npwh0S^4U(5icq%3#zZxHr3F{0JQO->w1RgcSs= zVH``~zMq {^m1x?jYj9!PO2vyvgK*r%O =n?q-MA(V4`w9@I_8tgygk&yt!a!}jNUu%Jm0tV1@G*`2(~Ot+H&hU64w@zyLc9D z4cjp%24O5)hl `)_c?b+ C&i*`8mKnWHP_zQD=0Xh+TH0W|xN% }QAU%$FU^@9i{5)}8ACa2~_-h;+Jt@hc9H zlVV9FzZ?gkORpwj&^7^6mY3N5Sw^VkMLeQQHK3)4O-FlZSlrK{mPA!!)Qf%DK1zZJ zufeX34>!=U4$$$F{!Nj>#$_Y6ej&H{r~2hZG{-?qC29zg6DQSuW+J?rqwbkWjGWG} zi##GuPN^Fg5=`dqbxk{uIN}18ih=tNeK ~1tVx%s Bm+pdO_f?~d+rn~jz>?({#txBJ28T)Smz9*!@0$5Lv<`U zuPBo4AEoNG^D4y?scx(1-lMs?46bsBl(#ot{M!o7svPQ-p4qZp{rDg72Ia()UU@h< zo1{z3lJ $Q)6{^|dki?=7(dy_vH8+2(KPvDMN(r%~rk+mXkI_>K%51o#Zbm5g|0dek4 zu?%GN>q)bI{q cFQLq K&!bctyETW+Pymwe$vm8{OO}7+qsIkLch3)Tdykhk53~W)IlF#?|<2rJ|fmBx) zqF2Jh{&p4jPJ>vlpMD5km@voh28K3EpUmY0TFzk}(4DCfB)cT{tdO=J9^K<15aW>6 zXc%=>wiy(3nWP% xvA@O36Y(k z2d+7a`n3j!T9KCq8vVYuHPOHLZtU`scAluCK;_)5>(S#y$4dcn#b8t4I>Dxr0uuFb zndKU;*2R~ *^7?mCqo zMdvGszZ2T3Vo^r%&3UVGi{;QN&Q+NTN^=3!PYJ9Lk%=L*Ru`-VH9gIVY4jSIOc8xa zqNqo4t}!VjWm%}1!!>r4jTN4Ia_vRQ!Yi-90IzbDi$+f_k}&Wn$60$`$hN5W4kDa- zzsrCd0aT()!?SZzGM4u6ORwGKFwWvuKjOPF$=Y-AP;q3+RLP$)##PW FbKZ7~=A%_mvIu8Rkd){q-Hzm;!s{y*bNDzSpl5AEup)rcuXcZwkkPf|<~7nIp{G zuqU}&27*D=054?pyW4RupYMfL#T9qG-9nWM2tDCSW}Ok{wKH4tA7Q*adsE^GB@Gg> z4J!BGbS=_U2KdOp`GlEURF`f9Br$=&_CEN<#WxJYe$543vmQr|P;|bs(3xvv?BQ5d z5Yp0kmZS9^3sST0^Jif*bXnk56tcUkD#kE`_+(`vXY%U{D1P8codT+mYp MIZaAwcjw<>fs1Aiy8MDqm08#SYSHWtO4%*|o!~NbXXh}OP zu-9m! 1D~U z+dkI7sQ+-X1nt_TKD2)e!?8Q+?q*~HTI}BiVxT%>q8_5vB5=B$`j;5rM?2he-l4b+ zar8$h;E$9&4=%AtCvs{qn=!a%sSS4@-DeG>^OpkU(e65_hFI5H;4O$m=(0Bbuxg+d zPHPA+Kt(-xQ~7LCSD62$Si~FyVAvk)o{zcGM{5%)I?RWt5+E!>$Ij_|VD_m5IpoWp zssarUpd=J%a97Qlm1ug7g&C`giP9pD(FN)}I-XTXU3+Z0k&t=I+l2UjoEoqw70~$1 zYbN243paFLTDuOD2Ndh8=y^I!Q1f&WTC%son#la)7RAv#?}^FhyvbjIy6VxPc1(lM zib-uPRRn#?V;TUVpxcLJENA#=`%gc*1_!(D&pnmVQ8w?Or4{iI*gS%ncO2h#K(u!s z+FP3hANrkhNK!WLV8(T)mOh_jPn!R` nc!<;$;=Ne1ri8masMa5v)t3UZ3(6WGTlhZlJ@QG#(cBTJ5lAJG0z0@ z4Rkw a+3%v>@X$1NEBNrL6gkC5zQG@*;F&KN+c@?Abuc zX&qSodloAb^6$nMaM$HNByt994g<85EOT`(sTcj;>PL1qiE3i97f5uc0oY?n`}%-f z&`Q#hcEk3SmB}J8{(1Y{V%aH7-+J~qK-Mk+sb?>? GlcN>I6qwH9uZAADd~=) zN~-(eEeq64 cMIQ`N? z=Y%YeRv?HV+qor00E!{82g(+WtG)U6vA)eBIU<_3-LF;Gav4cX=-OeJ>}DJe%sfx_ z@^68793&>Adgk1n1}wl-9zC5x>|SA+M^6yvT&m~+a(oPjmfo#xG>}dBi5qvAVCp!z za=<%oz4Pkbjy*tvEm+yHU-bi%-xTt1f(j`pR~B~W+|LJQ7$vK@yXX_$24`VT+6&=S zK*4&PAinP%DI3SR5P_x8+*sG%r kP* zK8^eT$ijI29$3L;UiObr3~PJ9a9P9KPdLJX5VZI%Pm|sxwD^dJkWj?hc4cO#lkv0Q zbC4mbfEPUfx*U{H-;Jk-IaM#sJAjUXqzK8@PE2JB!n+?7!i?cSg75rWlC_kUrEM}i z*nlAPK%p)I0{dH$FCHGTnJugE`bp~ijR_ESKH}d&by!lzcyCp_QZWvG>V?qV?v(t6 zb95c>;u5usIDbjvmNY1^lK>{7uuJtG3zb^obG0VknGB_Y6?|AzrvXKXP<;CX&QZFt zW8$-!o*+jGbiVhZ(V zaEkI`ZZ5)S<7nA{_JxkVk0A5q-T^I{Z!1vygo8@EfR@0l0l@q&f_mv}tba$n7+XSi za(%}Q>Ko>2FDE?8&ZQ05noKPOw$p^e!%DFNa5~jrFN{Ud`Igum?U(zU$39qel-;nR zP%GG}=Y6tEAM~aV5+sjO`C=T@;Lcg9gVX)bTgxnvm;{oSy-Imr`w7@1FXP9f)brl- z!@diqYCT*q<6yn2lk|Qsf>WdIAmc|7u+0F_m;Of30;N$m&X`LaPS;lb0&22d8gR)_ z#r%1u48J4({ +m+>c?eXma~OO5{H92&oNzHCW-_sfIw1$9$lbA8L8w^=};@EYfYTgeKwa7v?*VQ z)ODC*f~)Zkc@w|q{9u;!* fQeBDrKdO9pd%hS6egt=wUKPbJJ2Trk<4>HltmnVV5c@y0g=~=%a*t8(c{|Q7J z64D4o$>Tzr8ss6w5K!n7tw1f=!JPJw<)M*GC~5TV%icUWP2lA$e(5t8$Fj!(r?crL zatzE@Z^uuYSZRR<>z>&K`m1j-6y@1V1uNC*9K|9GD>fUJt$F~2b_o8qZ2h@*oq&G- zycL~)*ZCZ{Os4jVhtc%Dz4IAwt1C8Z7Co&k|0m|@8&S@_sk)-CwTL^nC#SD3H?nSo z(mg{>QUeRL`10LWBM-}kXb5Mw`-vYI_u1h_c*(5cC0-DWskHX(t%Lm;oluL!o8N(J zNdxZc+=!If*r&R;Cpu;C*iO<%wg%b*^sIhxj3wx4moV#m!GE37;CLwdw>N)Rlx5V! zGY@|f&dMME=VWG%3;%NEbK@?nA`c*Cr~z)bTDvXl*2BMyNvxH(@Xr9L`+b=Z5OQ4* zwiuwd-UG_lpTz^fEe4v=JQ}w@7HvFV>u=N*>}dGoFiyNK6?sRPST!%`0|r?L!0WAS zQ}5e{i`PFJ`txLt8>Gr~2L!N- -HJpTf@rVF?j=RwQkJw7 zykDDQx4sB5%*H$_Uv@C?W4_LH@Dzm94{HF|K}*lFm)0fME;_!(n~H<6ji*c7RDU;O z8p35Uane1{@Qi}85m_dIN$Ab_*Xs*uLft@fzCd&SwzmTJpTGdztNPX=n^ebn9eL4Q zo`xq=;vcyeuWe0ZpCF)qt8!^t_EToOKmc4*Xtr1#|0_ZYF8ulsTD%bHC5Dy% )%kd5V9R`pkZt$~}&2?IBPdpVaX+b#v63_~!iIch1Dx;=oCl4P7O= z<5tvz%@n;M(^-#^rLcGWbzW67b#4o$?D3K-9MLaJ4(t@=fM_xb-jN1O*x@xDJ(n!Y z7go!Sv>+)za{#sAkvFN)J~dqa>F;vg +j~6fVd3``ge!8DWopWH` zihiGE i}!apGmWm z++Si_uIPfv-&JQQ$ae!bc!pDPEnVb)~Tjj#{U$Oq^7P3#(<@FH(R;*WEY4iNg=J z)_o;#HxesUYn(5@3Ytp+_|{Y-^(NM%rNgqEMYkkeLzZy?zdSc<1h96ETgVyuSgGjs zHI*Iix-vF+e|ciVT8>}DLyS?sdwZ85y==2G5bjPAzCE=i6yj6`KM6kRucKVvWC^1a z69Ku$pCo^GJsNb0S1fNtADvbn-Vew-`SW7Vu%xw(10@^o^@*08jaL$}BDuD_BskDm zre{94oGc^j+Oj~nDSQSJBLgjYN}I^(=kJ9(3FgMPML~5w>;ayz%%UxOOK?6y52+{J zKZ(u=c)j`dzOyqSj8o*$Xb-QlRc_Xp0UVtq8z9W{E?i&S9oh;bu;#nxAaZpv&5yNx zJ=6k} dt%QVv4oTTNf8Xd z6Q86TIzMLdxgnstD6J(Lf5&%t-A90nlm-|13MGBIPFzHTh8@{<6BvZLDJBAfx276z z@PMLv$ZP8+ekDPpdtn-Mob{Tw3&WODP-S_fzaY>B{_HGfP$rr~)F!WyVl zNOW4@@;Kgb9>?*~_`!;aOLat_lICn%`OFDQ^Bxo~YzpFrc{qGzGbMlbC?!F|@k`Tz zqM|;)q7mol^WKuiK?+Sg;*tC!ZtsTnI%C=?Z!-d-QikJSKagBt-3~5)#nIqFz4UjH zvdtPh$)4)a*(3JR|L+}|{yVSyA7R`Lz(qB+eE?&vOW>j~l^b6BN>Bg|)4W#}d$Rr% z0xTC!igrid0A{X^n^^1jyPN#LY$|Qm*be4pPIn7)ULQM=bG5i|S@)lJnEdmOY;XLF z08l-zUvkgB#kL~Q7!?ajc{IzL;NGd%V{w^}P_nJc<_d||FBZ<(B?g0d4?>60fc=A{ zx &qYBCD?XhVAi|ZF4 za>vT1tjI*XETL@&rGOwT1yPH^3Jzp6^i*z=k~z;iPFe{Y&+S~SNs^`oVHIjGd$d$6 z?)KTyTlk;huF9~lR+W6Jvtfl-Ryhcz%-<*OtKNzP6U+iMdR^B=tyGFC9aj<>-D6?z zRDHTKz{C!-PS+ksn6@XlQFgrFzKKo?%;eVIyLC(sO4?D 3+OU3ENa!-Em+TaJ9+GFymdHQ-*mjQTYzm61> zxg!7Z6393}KEHi%@|{6 jN)id^l4YD7DB%9I1sl z=t~@I${C%F{I0M)1oar`wtNSG_)cKI*2+Vrp%OW230T3IZtEBL(;m>DC5FN;57 _I zln&_Sd8NyM+|Y6s@c_dUJ*m%}{ Lp(d?Y5R?Z1{yj-ZHTFmvtW zH@Zeib@NS9HcF07mi^tY9HOVA5=0cLFz;J`&XXZ@2jh(PvB(BWX^aMrv1 Qiz^j0THBTAbX?#2+a_3L2uS z47XNjRcQY0SvsCt2Fz^0jSH7TEIfy)G087@HgQw5l+5wFj}W?aV}MpT78D@h+dhWP z&X&x|MpYgUF@ZjeyPwRNM<{XYu`v&i+N2csr_VLHfO3;b&JW_1C&~9W2+v|>bd$DF zTNnfT{OPEpZspOvW4R%j@7|to8<-PRje~E0&IGJ$wO9JgJ7sfM%{I^CJL)7gU-y?e zvupq=DU3=H*D7ZmRHq&G=I2`P^Hxiln>}3RuQWMcZf0gE&H8TQ?JN5{K_$N_dA#l; z?k_&G!jb)ivb=a98vb(g<-P4__uD0zEg=DefDp0X1;d||GATjNPi!`74M&rb)|alp zhKCcud @|5sCTmhlTIU=j z=$vdq(3=Lq08ISe=~qT}FTFe&PjV*P>|g3^{~s>oomf7e#HKjYDoVfZv#(e{RWb(- z<)oAomMgRm@o`Jqye_P8y1?FuXf7tkK_k4lVTCPSA!y7|`0<}1vt#n=zrM0@0a>NI z{KLtPtpD7+2tx18BFJ$^-dda4TU$9E(jG`9DfhkUiiHz ;8mio4mNdB#0wM%ti!@eg@ZGasoSbl #GTykgz!6n<+JD6W z%w-`61@ct3sb84Wi;8&IMLn8Vz87#tLUlR-R*ieAcJ~9I#zM4;WdZ{$k&@OU{^NY< z!ql1s!Qs;%@U1g2!;W}mvsF`fP%2_aIE%kUsxDic_tihm+or1Kw@W_{N~Z)(39VX; z|G+JQazm&i^XV}7#^97Xk7e&);sLO7q+#4&w%E~n>sKt^7|&Y>KbVRVw^Le~Y~#SE z{|N~8FZLnIp!4<2nL2K^>^A9OBN<)V7OY9TUmzyS$NBiX22A{-%NIaCL~Yo7I4M~; zIRKlNle&9g3yR~CwDG{ChA=j4J!ZV(&!E2B<8-`H0!Ofk1Ui4NDQy%0RgYpY7bqEE zrE^o%d~Vix_$}z1U{`MEJp~n6pyCd_L=Ik&I1<~gf+6EMVDhzTCNuQ1)8c+ eQ{_XJ;sHOhfxC7KTKtXsh}t8&G^wwCalQid^4jrSq1-zp z@P1|1;ZHDThIbF%s->j~2HJFPGyY!*0@cYHJ%k(i54>sn{E|pt=+iKk{Pa)J_XZ*h ze3S%xI%sfWooBHlglLc8)`>oPKfH$l7=T$g{3su1JBM$Owmf|d!>VG?7Jx~#0Jtsv z%af}B8B(wP)(&1)a>D&=psQFz+e)8i4kQe3PW^e`3K`%>=i7pA2jIOv%zxS&I80kZ z%}kiN-5^Gc0bc2k?C%&C#@@O_F0RiT!%8&3009m0STKwQn0EKEuhVuHpH8wR4&yOg z#+iRIK`Xo5%M?@L(HwpBhvovTdJtC4lQjZzL%Xwb@eXlju>zZGxOL1~2>51b$ WiQmz)ndGIQpfN|~KO|ACSteP-)k#cW+(HzZ`YG9c2onO%hBngF zsz=`X1Fs4>i+x7lfWju)E7?Dg=s~P^o0EyGo;l?P;=hi?Hn%Do-$61zm|5>ms_-0( zi#Uau$rfA%geSn_Anl}nX-{i+)kqXxI~CU*F3TA( #W?;VmnYjsF #8K<{#VY;S`14DjLvi^kDej@sxw@e<(p*dUR-X!ifR zQ^3IuFDKuTTzg}`m2RaeKmwDFdTkyY{*`~+09{sBW?@gQY<#{5pST{VejZHqj!B+I z1I<6pS2le_s!9r}G6vj-*b!^ww@tyIi!-oKJ=XCgsLliC!mRjP27rG+USaegCjYRT zEl(%XQchN&@K_r#k@092X6*QfYT%*gL7&%YYCI4cp=>%@6MxcA{D37?C(H!KNp+Py zl#1L4)pj94+5e@r_0uCpjKfeDdGVo%0p7t*+H)=4dg}_ngP>oIo#zBhY476N{5$O6 z0rSA2Md&~i!K>mnB*;MiY`$Wx;9;Fk@j5T35nx&L-|>OM#483cL+w6*?fW`mc{gnN z6oGSm-1g2*&lvfv@Q3C}jW|ALsVZX22nyGB1)J_*#O@Rk`;sf>F}ST`Dn4+T@iEPL zkN7P5XSGxLTwUwWGr0p@c$M^k96To3LV}r}^|EfF)$L?O zs4=|UZjJz9<<2gmowD@5 C{90BK_NAa P z6V6JHgM=4JkyNE?u qY^_)hr3pmnvVTI& z9BzH>G~5aZ*8w_@R5sO4s6sWBW`JRi*JXm+vo7&891re+JakX?>_P+u7_igJHpC=n zfAo3XPi?nqKMaCEi8=}^4XxFLPS3?QPzv)yi(C19gWV)*TuzNNhh70qM=D*+dxtEr zO2cK-xt{Wza1`HVBr`By+ *Dp%we@Tl*L= zUuJg0r%n@9jI;i>1Bm|YhhL>Q_QN$C);orz8ZfP6H8V{}_AP+TKa1&e1kKZZkrL+r z6%reXn&zmNSU56d-fJ|eVt--;VEy9wPdo&FnD!3$H_z8!%V5Bb+!ZIIKWXFnk&>?M z4fWU@Koo0{(dgaU8#7*M>{)Y66~A-y nC-#ZMgrOGQw zd-{{}$s7#_9EZ^+yGJi6W`0Ad9o-SgnggwAFkGKL`%Z3eYe(JWCLCvkA2J7@j6_M7 zJjjL5 `MFKmWKn7_%8R2F^gI(3a$d<6RKz*9XU>=LDeOfR7S@)3Z#27$ z=D9u$CLEXnsm;DB%%IoZ|74bL--mi9xp7=(FIV6{(YN$&?O?tfk9mwqkHg4AC2GvL z%nF<@aME7U@(ckp2Pcz7kw}UZkd{0d1=~O~S%*2x0N@KI#BNyoR9D%2Q$ecO&AkHW zeN^~8j`Q%N=WR3fP9(ip(oqzAv_0K`zgSuYxF5l&b>a4FQW(3M(gD@^#Owhu2A)mC zd$J#PBiiS0q7 u^Fr=Fu6r9R2-JGtb=`f~Zv z;i+9*FI*jysGB;IHS#wSpm4fZFF|d=h DYb&gakC58J(K@l}f&UpQ7TB&@ySgpX?e zM}*sg5^J&sIrE)Lbl#t>@ch5|!mOtwPRMcx*&fJiY%){s_=Z?*JTi1D_H-zAgOZ zuqYlHFD%(~A3oAHe)>M1+033e^m*T_3=3npwpPz{Z~_|9q;zD#hQ0B!Yrv$qEG2W8 z(W#N(V{i!~rvrAL5bxhF-F%qHS?)-~cpcFmzNZdgz?*K4u+hNDg!z$^(Z?FJRW;Z| zqEb(E*U`vgH1UJYeu*VEirwt$4@tvUASD4qR}dEx1q0$2h@pM9HHSs(wtNtXzT8 FjQ-=&hS_%CZ{7yeAO+5sU_d-Txu-q-4m9hcjaZJT0Pp@L+mmaR)f!@ENj|HO z#5d{TLtp1tQkS$dx1-86BO3%hlo?^`9ac6PI^kaa5o2c|F`i7U%Emo511W#<3Ds8Y z#WXjmLq!r*6i|HZg8H)FYJ;c>cd2*31H%+dKKG)KX7P?$@h24*#<2=JlrEEC`eIzy z!z*wsliUK{@-c*!Jw<7=Gpm>Q%M8;v8L+d`^vM1UL|M|>ls(s~shshp*DReCXHj=! z1fWx2Io!5F)l(YGU z`k<8brCsiKyU16dc|;tGzdEe!P~jSVuaWM#P}!6{6Q1UV|6G2EsES_E0L7ebDWDg< z4QUX1?4MHJsL!S}3hf}-G^+jPa>(TnQ$SCN$xbm^N;}+P+h>!il<1LH;}er+Hm->V z;%^&JLgW}?o5S^S?Z+1j|1>_&{+`~Mc2dG!APNK6w++n2bwJ-vyiaO(?RVb>_KqGV zW8otSZAdo!R;F=}cLjxhwZpwudY0r#=D*{x$wjuwUiit1>tJ@2^$lG{^$$M_S+_cE z%v{RMEST0YaF`g8o}&*YmFYQ7FYs^Oj=FP0ixV`dgDT)F?;oQiXS_m|v~#UEXKlvx zc3z##KQx*Z!*3;!Bt8TZ-;I0qP%}PkSUKzF1ey<%@2S8?Jq)0V+pgk%#$F2O%15YK z$^@?`!|!yZ9}5Ik7|1wI)z{V6Gk@Aezn+Ubr_sbl8oF5AkmU{!ylGXRq}Y41rOP*6 zzeNVg1K-7bsN8TnP3`x(#9poH%3R5M