From 307b790c0e7ea1bf9e69d7f7fd656173358a4e0e Mon Sep 17 00:00:00 2001 From: falkheiland Date: Mon, 4 Mar 2024 19:41:06 +0100 Subject: [PATCH] added wallos (#2547) --- apps/wallos/config.json | 21 ++++++++++++++ apps/wallos/docker-compose.yml | 42 ++++++++++++++++++++++++++++ apps/wallos/metadata/description.md | 5 ++++ apps/wallos/metadata/logo.jpg | Bin 0 -> 19847 bytes 4 files changed, 68 insertions(+) create mode 100644 apps/wallos/config.json create mode 100644 apps/wallos/docker-compose.yml create mode 100644 apps/wallos/metadata/description.md create mode 100755 apps/wallos/metadata/logo.jpg diff --git a/apps/wallos/config.json b/apps/wallos/config.json new file mode 100644 index 00000000..1d3e2e99 --- /dev/null +++ b/apps/wallos/config.json @@ -0,0 +1,21 @@ +{ + "$schema": "../schema.json", + "name": "Wallos", + "port": 8222, + "available": true, + "exposable": true, + "id": "wallos", + "tipi_version": 1, + "version": "1.4.1", + "categories": [ + "finance" + ], + "description": "Open-Source Personal Subscription Tracker", + "short_desc": "Open-Source Personal Subscription Tracker", + "author": "Miguel Ribeiro", + "source": "https://github.com/ellite/Wallos", + "form_fields": [], + "supported_architectures": [ + "amd64" + ] +} \ No newline at end of file diff --git a/apps/wallos/docker-compose.yml b/apps/wallos/docker-compose.yml new file mode 100644 index 00000000..aabda4cc --- /dev/null +++ b/apps/wallos/docker-compose.yml @@ -0,0 +1,42 @@ +version: '3' + +services: + wallos: + image: bellamy/wallos:1.4.1 + container_name: wallos + environment: + - TZ=${TZ} + restart: unless-stopped + ports: + - ${APP_PORT}:80 + volumes: + - /etc/localtime:/etc/localtime:ro + - ${APP_DATA_DIR}/data/db:/var/www/html/db + - ${APP_DATA_DIR}/data/logos:/var/www/html/images/uploads/logos + networks: + - tipi_main_network + labels: + # Main + traefik.enable: true + traefik.http.middlewares.wallos-web-redirect.redirectscheme.scheme: https + traefik.http.services.wallos.loadbalancer.server.port: 80 + # Web + traefik.http.routers.wallos-insecure.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.wallos-insecure.entrypoints: web + traefik.http.routers.wallos-insecure.service: wallos + traefik.http.routers.wallos-insecure.middlewares: wallos-web-redirect + # Websecure + traefik.http.routers.wallos.rule: Host(`${APP_DOMAIN}`) + traefik.http.routers.wallos.entrypoints: websecure + traefik.http.routers.wallos.service: wallos + traefik.http.routers.wallos.tls.certresolver: myresolver + # Local domain + traefik.http.routers.wallos-local-insecure.rule: Host(`wallos.${LOCAL_DOMAIN}`) + traefik.http.routers.wallos-local-insecure.entrypoints: web + traefik.http.routers.wallos-local-insecure.service: wallos + traefik.http.routers.wallos-local-insecure.middlewares: wallos-web-redirect + # Local domain secure + traefik.http.routers.wallos-local.rule: Host(`wallos.${LOCAL_DOMAIN}`) + traefik.http.routers.wallos-local.entrypoints: websecure + traefik.http.routers.wallos-local.service: wallos + traefik.http.routers.wallos-local.tls: true \ No newline at end of file diff --git a/apps/wallos/metadata/description.md b/apps/wallos/metadata/description.md new file mode 100644 index 00000000..6f30fd2f --- /dev/null +++ b/apps/wallos/metadata/description.md @@ -0,0 +1,5 @@ +# Wallos + +Open-Source Personal Subscription Tracker + +Wallos is a powerful, open-source, and self-hostable web application designed to empower you in managing your finances with ease. Say goodbye to complicated spreadsheets and expensive financial software – Wallos simplifies the process of tracking expenses and helps you gain better control over your financial life. diff --git a/apps/wallos/metadata/logo.jpg b/apps/wallos/metadata/logo.jpg new file mode 100755 index 0000000000000000000000000000000000000000..7a0a6da8b20fb4b12bb6134380b113e86093434f GIT binary patch literal 19847 zcmeIZby!u+*EhcD5Tqpqq@=sM8>CC>0Eg}d0~8P`NdW=DAVeAjq@){ZrMpBxS{mMc z4j9k<+|T=7zyF@=`hDlbUTb~UT6<>A%sP8!?{hJFF$>@-%PYwP2nYy(BKQI>=72&u zUps36P*P$B&;bBI1Mm@$00fYNeaH|{;71FPCcmQXL7MSO2N9&X5D)=u@aPVHxIvl_ zJO+XvyHI4fZ30Nc3V1p=|Ldrrq^3d5&CbQi&chE{a&q$ubMgpt@=|ki3iAjEbMt`O z2(SLs1?J;o4(qe6r>Cnh2Zyr6(#apmA*=i~rHC45~WmJU!)Y73~1 zowFFtW=%Z}wVjn1jXs|mr<$t_)YeYX-yN#$udZY1?_eopMI#|jE$S=m>*VSL^@LFS zIypLf2>XiBz?}<&G)&AvLk(B)bP%I40IMzI;tr+eW#?t*WCO$J%}oRPaJRA+){>RK z@&IyTG*?yi@$q5z;bC`ix8dLt5)$IzgDbTZ-A902ht0LYyt3Fh8JYc016Cm4Kin7atcdn-DKQKO3(# zHy;}WD#*je&n3tUvEZ|Ya#=us+23)u1BVgB@$dS;{8)j0g!lxl_#nK3Y*qsN)?j5o zj}QSND4UR=0E9E-sE@G{2|YC8h?BYAc8*L>A%+1d4k|B1kVBJiIG{3inc|BJw%r3us-yvp$b z7akY$h{Z}WGG-cDcjT2+<-m0r03g0{v~==7mIMGNXHR!61!-ynLnCUmZvYa24B!K_ z03pQE!&OaNUI(@y`uFnlD}1E|46(s{{kzWpD8;q{mmuI$jT+RDv~+d%1Zi`S=J)Y* zh0)0%O$c7BS%GvuNVB?w6$I%~nB3x$UWd^(a2mEm1PI-Av}C}x5rQa42`9_hdj1)u;Z0cwB-Kn+*` zUVt6o2zUZ);L#bBcmP@;F8x2)lfmsZKr0K-$_}suEo1=~zzKlB?EzRHfI49L6I%~! z9&We@0ZSSHP^K>~cIm+dbUXl@#avvRyuP?NdjkMSlK{}*{Kwwq6#xkCgYuX^GP(=^ zzzGI`ik3ezizEQ33i3nj%5RgC{WE2b( z6bwS_YuJSUpUXuPfQOCN?O!wzaFZiL)#L&JBwEvM_7btwx3>RX3rXr$D^T3* z)eA!W##1*;EPU!SB>$TpT&+aL%N#_oM{rESj8iuv1OKUp)I1aZX~e8;43<0qhJN?K zcQ3%8|D#CXwy+p1X@E(&z1BZ`_olid9th+9F6Ns<`r~dKcK?c&8XSR(#Y5XET0zH17+ zk|635(DDZ*{=q@&dQ~gLzG&8E@R#)Z;l7>Dx{!axF9G~W%bkX6_|5f~4B>V}Oj<*C z;4dCLA`A)UIeD$CjsF&+-M1ciZ{WeZ@s}2WC*(V7JgMzIXz zuJ+kYSe%fbh*SrdzPPl3ePgLrf1iN*WW(YkM9;;|!)SO1He|0?wJ2NgQ}K{Cg8)UD zjc(3Q(TN6-zARuwpY~+Jnz@+TsM19P&pgo`Zjz1~QwE@P#?{+Ex3l<48vrG&;S#{3g1g377@9CK#(*julhWL1FHjoP_Q~+XykATk~efM?m2b- z9x0gLJJB+Kz+y>SEnuXpg2oyM(g0#bnG`q^BmqD`)WloN9u^dM8T#p=_tO>^r0F%e zd2EHu;ZpRpT1R$g)&}rbG}bVE(rqsgE(U;t{C=Zny&52QyZq<{h0CQM)YQtvkEM;U zmQQT&8}hyAzfvDK*wObEyH0^>S-WAep5W(b}IhkbOe8q*yVUe@5w>F;ZFfGKz=Mz z(NLszX)A3*V|SO(6H!|qyb9n1$TQ8d+~0;Z z4*=HE?$7xY=@A&e0vQC`#-9&vDrc;a!XN~~#AhMuvVkxf(dHTpTWB1N1X#wNQ6+D3 zin+s>>vyslcPqecE*Rt5s_RrZe|a7N$AvQgxIBnM9o{$F2MdcAz$<-=x?`9ofPKKQ zS@g*Ry4NNNawIp&?ALVRKESKqDq%%9z4{zEkC|ocTlsJe#I`4!$M#XeFy@iLt+#Q;)NnaC zGL8;hK8o-g*HNZF@Z4W98F(vqtFvHr1+gS<7yHK+TnoXn>EMh<;U$cb%6UVJA3F<| z14z^j01^XGc(RQY3-1*G!MaiL!EI&OPy}SNX(92Nl9#H0RRchZ3Ow~59IDB|)nMUQN;iLQqW016w?1sH|? z>GaFsc&*qhc>WSky{sbTv?52VOC2nylszqqmmbkL55cPeEHu(K@jlx4LKBa4*NsPk zqGv~-5nuW?%I0=N8KoaWXG8Z$uahkX>AC`Z23$J%U-J!KhqB`W2*?038i0U=a(Ok1 z3|^t40EC>9sCf7UL^m|hsBdxM((v*H((;3srs$v&0t(^09=i^S(-Hjhk~W=C`D|x{kI4>3H$gLOnrg+;`$cbH=H)SuB+Tjft{Pgq97Lr}=c> zlcH-}0Ek-!XIv&P4t9Hjnpq=wQ$9xxTC%aPE{5Q zH;3KqtH#`m+ixt36}7^vJzKqPrk@LABTW{0Clj8vJmYVf`MUhJ|GU|krcpIxZ33c) zr3-u450xB!!|~zL0_j*#%!dN)m`YLC@iKMDQb#TSc=M~BK0yk(m%G0I1LkcWD;m%2 z@?t-`J$uY`f~sN`M*f$IRc__$sGqU3jPz`sTEVz^1_g26*)I7IRBRokX=vg7GX(l% z=yh~j4f(gKGUej@jtK|uGTGGuftXZsZ?B*%13iO+f)YcweP)S~b@dAXNBteBqk>o_ z`(5V(C>l*YXLxC6sO9ZL?`{4i+ed?(9L+Q2jAGG(s09fp%=e8AWF))le#ry1I=(y{ zg5F8&7R0_MRg}rOES&tU-Gfi?QfT#_sJpH^XADxZI?rE28SS+{FS(OOUs(6FN1y2V z?W57D=Mxb|ai(MU$XETkJ^W5qho)Kd(rP=#H~rUy79h9nSi@byopJV6oo!ZCXct^ zF*|+9T@fdL6#*T?b{ZAR*P9!mrA0zAi9+Noyk9hPTYMIriqDf`7~~SEXfVFRbL$RqI2Y%7K$SyOc3~t*kAv9r{PsRaIj*l?&kK=oYbr z`EZ?k?mb9vvZLJncagO>M|WuHlb;gN zZ@A1)9nU!WICI2gN;y(k;Cs|ckvP|9-`rejM18fyuUI3 zg&?uy4Q~fDtiQ9KS1(xzSJ19JAPv0V8lFGGdxMk|v4iE{fY0#TWqdhy*;8yv5iRFW@*}s7Dl$$4);&}&&2{L z>!ZzJf~{JK6JHFsS^Di;Ttfh@Q;1?DY6PANknDKUpdsRulP&Fk+gB_6v+h0()OIGHcgN(WNNxA<-fg*Si~{IR4fFOQd7E>4 zipZa}Dx(vV7;Wmd8)`-%dOZF~|$1n`9Po=!Lwg6;hBuny@ym^W1Kh4kvOA ze#ffgT{+pTa6_}N;b&DS7jdg{xSH%O{p`7MYl;%8O-h(NX|lz{ca@&u4Q}3$>-w&` zLF)Y-D8=jIpH8nwxQI;^`BR=c`DD+HS*MlrM?W-vo4`-mp@sr!ooD`Gz{`g_zD?j` znd<(y@pFQEc=1nqayeBt{r5j?dDpNx@C3X`D`Nz&8s-Q~&LV*A(SLO-9%CZG1uXWoYFF@0chyOw~q5%Qtpd_zf}O*dyI zZGLOWlR(=<9_sML6;OQDPgB!e`e~zW+_4JuVLkbARIHqSX=9(|fx>9ZcY()DS*%Op zuMd`mYk8;0SG&rN@{FLVAq#4uTzIC&LrKg78`;gi;W>!VJR;4K!9@4gp+2S+&H)o8 z>vaW$MGKk~N1>IVlf~J6*KJC>BUvEi!-dzL z?1ASW7c|iHg2-{TyUOBlh}|IE?@Qv@>n5Ld;kX~B(VOAB$q|M5l^fRy>LJ6B9=>e` zFrG(WpYz$ert>Z_R14n!l-S_%WTrpndh7v!`D<5>?!;N=+H|uo0 zN|&I3edGOF1FVx86Fjm)AMq|d%}GaoTbVuOL*ySen?O&sFhb&lE-g5gBKd1a10w@cKB%8IQ0QpB2p6} zG=*8hWjT;mnQ)hlC(BxO$2ZX!a3=+K(q{JbCYdBAzod$P5~jR+k3@B42bW=jE5#XW z!h%TXRF-YO$YYNsg#M(uENB=90xI9S0J6Mn&?N6+fNs-6jEWfc@J1_UizE3PzCNfS z9@SlW#QK%y0x0mgdp-LJVO)^RsA6_)nSt%BaKEQlNJaK%9P^n>r#u!8Goz2PNd3)m zf%~#d^r)d3wRmbmerBD$%rVcynYnFuNqLVVle)Og7(4I3rQi8Y-u^=}6miAtCwJ!c zSbbUMw%;Y?^NUQWZBsL~yaEcj9U@Z}7(RCXBD#b~`P!5^I)zAY)6y+krA5Y<#JO{; z%W$tcoLvBKE&wp`@WB!f5(+A~Z+NxA_bc&$c?X5)mXrpBkVX^CJv=g6xU{^|Zh?9@2t_uLV(J)Kpq6-7u|Eqc|~h^&I0boXG9@_BC)`S(Oc?oG?9!`ODhN z4`mw<8V8q*s$G;bLn0U`q@3h#XLj-UE~(4h5g(bn$zYO~y_%yX-5P(Lx}r3GU@@hl z#x&){vONcyJYp>}=a)f5FJ=VkCpR5GfT)$xhdi6aLcctvS_<$QF$$S?3dF692swA5 zSqbT()L+!*zV`9i@wc-F2S0yz*(?XecdtWJs}1i+#W?)9d4ElBz|s91_N$MtV$l_) zrR9aRv|mIFKh(JK+{&#ibfVf&{gc%DYt7*c?;Msn7mrRXZk$B)oTB@++|MS@&^T)0 zKfZaSP6v9iwdVWGZ(^Vr$Qq8N6gDBQH>b?Zrw7ov;kIn1km5Ml!V(;b|s+<^1x!$s7~X+wMv6fPMFMXkHFeUYvas z8>O!Yhw+=*+3ofO|9wIsmMx+6-SNyoAyO zM!d)L!Zo|wo)Avx7aWj<=@l6-Br^2tC)}1R8)vKkY41<4p4+gsVqiWnr{6*WpBcHsEyM=-^^&5DTPPBI~_HIAW*r%tki ztuuWS>%`avHORUvX|lXSl5m!*EGmn|y~dI@Qm|REMpCiA;FcW|=NdH2P_RSFDF11! z^<2zL%euI=ij4>2Ba%KkpCA5j+C<5^f5Do2E)RPc#uo|E*s+q4im zG?-hoKJ!)2w~ET`5-YR~ef0(Gnq73$KC1r47*8lA#-<`Zd)gei#4hJ#nbV>;hVioq zhYNuGe13g*k@i&=C7o?WV`iPm{QAC|mOob2+Z48nm5!OS)+CdOz&%`Bdunp&w=y3n zKP7AK%|)?(b1PZvhw3*q_TTC8wN@fc^QL5d-yh7%#vdw)oH>pg5|Z8DJ{~WyX-JBV zgp(VuiCvu}r`=EH{q1Ll+**t!6iOw99 z;6&^5UCRr=JY`#0Rxtasmbnv}7_BeIpg?rR|Kt4_)T12~fFHJ_=A+vL!X-$i(N8UZ zO9w^oJ&au#kER^<{khOyNh$VmdqW}G9`6IW(z`h%$Fd&D3H;MF^69&^E`HA2bxSpE z2Z@`%*iZB)Ez<+;HeKl$7k~vkCyU~OcVG}v(NIuP!1XJvfKPxT;oSl=vJ^fIH;;xU zgn(Astpr)i{ZZT-TxyHh*MW~4QDn3|2Cmk%s1k_hIdY^yE++iA@e zvV5G_1vz>L3DICXksD$GY?^nygW~0M1?zn4A*`qJEy83iXlBVvt)BQ*IfvnD)*S-D z8|YZsF}~@KDYxsNW`1?zRdbJ8NI+ykdsLHF&>oV)KmIy| z8z*I}RK9DN^ZlA8ZW&5@a6kWazEF%ufv<`{unyU5^wqFqZiov}I~o18xC=l;ir;pm!~MgMa(47GBOf^%z87V_rMRCQLtkaG zINrHajTPDad4>Ib>9-NK&IEV^M4 zUsz6|h6H6UlkG^^QtK=aiOGR{7Yvdbu@A{?Uu0}ldC`@}r8HvnjAEd){F=011;(+y zwb<8pb06d{YOfB+vYWgu?atVeUelroo@cbh z+2Ts4f2mjXasMK^7PU_)&9pHsFnsiMlRocAmyl~c`g^#}pzuRNg2Lw%cnot`M^Gm& z9@I1<%I#BL{o2$H=*@*MKO*u)a$dQ2Axil09C8-S@lg<4@TXq@EDs142+gyyL}=ns z@03-x{Cs@p1DXEqaEz>^A;4e~?5>S3A@fA7E#?>k=r7nc^EW8<) zt_j|VaW8O1)Y{C^5k{x`s#Z=TLhO95XTp{n>hYo>uV5ajXrpWFWg#BF6Cbu_VEhKn ztS#iTM~D}19;RIWkarn>zrOP; zLWmjDkVh{U;r^VT)Aa+9Y7#uriRLP+{{^s=-`X3lfbfF#FqlXn5-a3Q=)>(#-k)_b z)mR$tLCJ~&(h-et?-7n9```UW_Dmj=^VKt8FjdgbnGxcAvz1`QK|oywK`OV@mU&^N zFVHSaJL%|gJ|oSS2Q}mI)#T{Y>>rs)P;Z)l2$DKbwXOb^7GRrFR%f2sIsk!662>Ro zE)RIecFn&-=%@kEKs8V!jmV_QaU*Ywx&S7~FMtYx3&7Fke01ilr2fP*;Ah(fu<;9G zereWB-V!x0zisJXQl~hb@1iFV1{Vyrt`X;(miS*DWLxFe)GV$CclwK|>W)?($PGUH zSbb-NSm}7-ETfS9`F<-X$nT_@y2f>K0oWh(nwkxpftRo>xZp+}A_^i3xOBd}3k}}9 zh9^r+w=E6Gqu7DhC5?02xYU8acKsy4%le_ZJA)a4hj<4?i{iGjw7UwQ1rS!-qq-CI zyzj-Edfho!T)M4X<+Pts;8jS;{urg;L9xZrelBBu?Y15VV&RlZUI-&ap>*gILs7LB zGrP}%ay-T|Yqu8(qXJ_Ewu!^9+xJFrwei*%w?7kANM*XeP&VcgK zpqI;RuPlaMDqDwWIg@A=+1MA4&;XQBlRkz5_L|a(M$C1J6dNNwK|W_yx+rI3!{+)& z=Nv&!jt3JQh-|p-U%d-0qwLEuXf&fbDb=Qt0y3#&OqENlPDGKI<^8`NF-40x_wEO1 zDs)i1jtq`TBI^)}X0Kx!?W)<1;1ZpRHu@YocKc+%72dP z0jX~3-2aryH=+~r%&2-^J zRgd``B%3EP6Ak!m+*e>gER?!N8K3Gz`kRy-zVJ+QkKNvoPj)tjy4 zU0M2L?z{*Sd`PFiU0S>(1XJ@^OkTb|C(OwSVeL)i0mlfAct)1zm`>i0dQo+4HDYiz zrAP6_yXtr~N0S>nYElFD#ng`hgt&uw6P5jEvF3@d($af5yp{)i3b}5wQ1$1&yg4$l zT0=&FcMx{^EngPAlcV*tOfM_2qI*;CbybxXh98jS;apCg6hjt*w7euu@7=j6BRP?K z0o=;DhuZtpL{fRE=*6SPNG)<=6T;Ki1g9_8LaK95)8i3@Ow~rR3~0W#v_La*$1Z*lZU}86u`1K5VjX*F&s%ZkEsQ#ST`xaZgo5OUF>4eL zE%P{%CIa)Y+jMulC28FomT)d5*=M3_3hWzgPt0dVoozX21*0`Hon-Uiy&m;Vz+@@X zJ|Fo*7`yDc?cH~NEN+fRf^9mpOF33=#gU}$Q;9}CzcK5qaARW`X?a3{#=37;gMlvW z=|)3!x!9t3XQo{BRDXU#w90I9>4V1sWGdhG`d&y+ohQrpiM~G$5_drLOHa8i7kPyB zAkDO7%g#g8y43d3GuA$%7Z*U4)N*Zgd5lz|l$5rU>b`9n3QAu#GZihBiMaJmH_hhz zv3t4b`%7k114|>w%vSO{51GebQd|Jf+CL9?N3&{9{kV6CY5NiUBSudfON~Vlf=rl| zzc7ooSO%;9W{fBrBR!)@NT{?^!*PA4<;@jK+bxoS595gGtk=o?KY)+FI70PQwm*D- zPKi)D--oS|+{Vd>sBa(Z>%QJkim}6=O(SD__ie*<-VRaUoQ7`-j;6$EpAT(cimo$! zdPcOVoF*d7)T)F*`Od9~zx1s*Nc*pKyIy~e^lxX`WKAq7j{_s&l=MIf?&tNf19Da{Y~-{}bi- z8=dR?M>{3{Mo<5VUN!Sl=lmb2+~1}!`X4ytpZMl~J@=h|;s^f~&-f>Pl=)x6{a-3~ zscZGOLh650IA8x8Px_~S7~k@@2F|}}4F9cR_HP;&z~3qoe^iKnk*9wtQ2!Ec*M}MY zqP3KM$Aa%tc2-6gCwcple*6c$a=8wZ2wtMgzfr}NO9_0$T-pBJO;=TOh8a-LTNJ<^1#sm#dVeGf`zq9V|G*-ODkiKRUfNOp!hUsJ zR6)gr<0m*sU;hWhhc~s%sba#Zgd0YK`@er)muLVCEr-+K)$yN~HB6sY1cp|?;|<;q z`}11u1W`tEINAl%{Hsb}1_FbwCE`Ymmm1@{o zevPLa2fH$tKkIGIQShm(1)W`9PBi7alT0^Z;b8{ zaNh%;Z07Z!Qh^IEq5n1Cu;mOMY&nCBj0)c1`@Njuy2U9e1@8OIxjl+~T>`FU2DSnl z;maA=Z9rV`HlRWxCIRv%leJgJRO6&&tJ4MB+f9Xb3tAt~n{tBd-({sZ5DI_or|)I| z?n1S!c<;mA-uY~S>EUoaA$1Y*fy~(X`z!af-s@9*9u|8iMgK8^9EHc(MtPELuEmeg ztX-^U{Aox!C37x*Wxs05*SXXDBU>GQM){#;smcu%)@r8EHbH0P3T%?7a9X=Lk1!u3 zm4G%uW{Rtkz^);DW2CRL(psA%8y9{y;| zh~x2iw|g#calwTW9V=h^{g>Cqj4iH$QR^notmYH#kFJd~8M+k6UQ3`6J@v(|_o09jbbYVP$u4rZw!mMMlAt8prXE5SqDd8No_E7deYQD$ zEG_NG;gQ~OPh~eoLneQ(E{S;u0;00u&-#S$P)5zTSCyL!1tBFn-F4=7UM(eCZfY^Q zJbyNNzvAn)A`UWLm83G?0FUAo{4@7iqMn;(x5W)zzqft^g0vu!6ykU7!z!KB1(zDx zCOz>}f964DS;B&H7v-_Kq&azc@N6jFy{VOZiEP{%Ir4o)IKyTf#YlZVDd zKyG&3!SNkaSx|Ok(q}54r2*26_yjE-jgK6eKs{q*(6^R8v(&3c~RS+I_n4cO(q?mC!o-m37;RhTL1R?4xB zM9ndV5o2xQOKo)-e>s`gDk5q5j--O@FAAE z*|0u@use%Rs>MtJZnBlU;m2TxK$bMxZer=^SW`nXHI@*Ib>nu<`{hyN=+u~?CO+jd ztJAOdHZ_iY-aQZ*7JvDjN_`(E2i%v@yb|Z2Qugi-j;JWGn6P>B^$&e;$SRDhR`$lP z&hk?J{`?Eedwre4Tt&Rc+Lc6|%HPxL^4|OZEX-XSug)p5|4s>K-#BVLN!<;Q_*Q?F z2LNOwG}x}jRUQEFZgE}a0k_71Iansx`n|0IyB`PUfuXW~15A6$Pqa}#?ny(>`fT6v z?Btu#Iw^hoVgECnmTD&)AN%99ca)-@cU9ogO;=4KlDpq(KEJQlUj`mgH_2r=yFOh^ zRi$7$GDi+0N$h#(E6q!nD!=7;*S0Nb)OL4VWW=evSG-!I$aidU!l4TY0hfRJZ-;D# zzMt`Sd?%FK!cJ+;%ma`k6B5{Q9;7m0tB;AuaryEN*M4QXu}oA#faW_X3DdVBrg= zTL_u0a~hx5{LxmmVg9OV;7Ms7FkX15I%JG&trYs=hfg4ZHfIdJg)5s!qPL5Guc_-- zU5l#2m*-qWGXc1O(la9d;k^;T6zAGk0ExT9?ndNt`Q4xu%x&%)_SOgGd(9}s8fQ)T z*)vo>t=E}e+xt7DxOy`;C?|U?_6slGR?FXc^wRZt;QMTAwOSF#mdg(!!z$88RSH9x zwokw(B3My~+~_vf&q}pkf;&?yaeP>{AAO$D4Slq#O0=e!#bk!QZ`NE5PYl3$OE)OL zi*FkxQ>bxU5sb0h!_a}aBUI{QLoK%WsrCsn`IMWwwG^$9KoFtv{^3~#Tdi5g8 zw51}ew>L>OLX7OSk`?r|)kyinoqNJf^v3PUwi+w3ahQAlR;2GA)KoR#(vfsvaPCa6 zY<_9OL`0J!#gmVeIA7*;SVs?8i?K1OB6X0P&y>;6%u=7KN=5>II4JIrFzav`k*^&Fp^au#12Rcs`-`eg$X z9nDU4#)=l+tWpAJFFsMzd#B0=T_;=6C7uRrF)|77C(gE~;>?a*s*=n5{WxH`gr59M9``5~b_)?f*g20^-T_m5n+riGn*!CNeq3O%xOfuTWL_iosE2L zdmS1CL-p5Xv$L2Cd6QfZqQ$LZBJd4(Fup4!1(A8;24d;GHp*W?3Y|XfrbQkN(~cp| zkHC>YX0aM;A)aSJRqz-V#XaWE4@?XroE{58N`;~k&{<_+B?ob!JzAWMjcGV= zsTBU!x|4VTXpe3&Jt6nb#mnH~>=<3qd668L%qKyQ!^wI!(xBmstKP0X)16U4@-}IT zYiSk-V84dnAzYA${{R(vseMxl{orxE?%^9}RwQDTG@Gq0k}z2f>TYV&J0?e4t5tG0 zL~HLj>nrV1BfqZ68A8IfZVNwu-CkMq`+IuEN z^ZDnLK8wA`7kc`kPe@-h({`Qg0Fr4x(kiR!XlU?)=kOj86fs<@+U-eM;~Pdps;ij$ z?BN<2G9w*TjEky3`_`Q^(zL8e=>xvG{n!Je_9Sm5D-tyY%P&mOBucW1*Gu%u{uGJs z*lqe)dkTFaAva4NKQ%bOFtmCkI6@$ia#HbW+s2Sgc}+AURt$0hT}y@PSo-1i z17dJ{Of&DPQ@>g;w50wefc|t+^@yheL1U83B{YLXr6tNaX^ma^ev3@qrvL`ZY!W86 zX&kTj-o~ZH@?Vm&Z&7M$$*niKBogXlG*D_9*oDc1&(U5h3?+uEP6f%|IGslIu;+4=FjQCr6|AxJ9`_r}awE!eX;>e&&r6!}soTL9tR%a+`Xf=QGO> z@q{gXN4GCqU!!LD)9+cTOJWcpFUm1uP)jv?PlY~vWASVvJ*bnCJE3?sz1V+0kDTB; z(~m)J<|*StMa3W*PVfl`tS;NVHMxj|7XgwJF+7e{4Vc%KMpe*~ZaR>u$%oE{XI6z$ zYm!I<>>uj2TR9c-6-dvEo|=XG8;WQ;Gm_8-wHq|VU9-ATI^(P$&h2DIf8d9L9F_UV zb5LVCHUj^-@kr!3B@!Mpw1m)okvHREnpL_XFXlr_ZnbW5iU<|4P|9cpOos+8-m1JP z(F;Iz3hDiL!D&mUc-vb2E&jLBTsJ$ah8YFHzXDL*4tMC0x=rnubDQ$k<6~^)w8IF> zTVZ^RNJa_U1Qsd`hg!Fp6!_X>iKjj_8XTlV6G<5s+umU`7TTw(+LR=+mS2C!9pLHr;A=*5yXU7TZZ2C`}T+PX@#iXrCuC zB4I1`L>A-tr*<<;{O~VFk;NE7loXGqGgLz9i4c58_lgz+y3zd#P2%xfxdP|f)bM_v zJ!V5Q>0*8Ki|k~_Dd&W^n&7Rm0|gdj0n2>L`cr>m`iC>>jHUeDEQ|+RB%bW-4m9_7 zlo>H0$%3yDv`YyIdZ{=NB1!0s(H{yi+(07WcW_iC{yZP-8JuD)_SV0-0Z=M+x9EGx zp`b>C_e^eGrKii{j=A^zf~r-C%JbRv5=z99uLi{n%kGG(fp~P!oC3X5P@4c;)HEv^ z9qH|R4r<^KNY7Ddz!?=DGge!r;}34>6sAAy9n(Nu)1xMY>~)a(*9l!Ss^ZO4(0W>f z@UB$vA)v8Xtf0LOE@zvbF)_TjXCGXZ$fpkeDN@p1u%zK}^j%6n|2A6xcFpE!8#HG* zi`QCiq!hY%Z@j!RHT$25Dewea2D((?KhHY}c#rS2dHnh=_z=MR z^SduR%0 OhIYO`D~8{Z82djhI*V=q literal 0 HcmV?d00001