From 1d8680f9f3a0ba485747070496cc0438459a17bc Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Sun, 6 Nov 2011 22:45:58 +0100 Subject: [PATCH] Windows Launcher: Download and install dependencies When the Windows Laucher doesn't find Python or PyGTK, it should offer to download and install these dependencies. This is not the cutest implementation, but it works and is more straightforward than opening the download URLs in a browser. --- tools/win32-launcher/downloader.c | 107 ++++++++++++++++++++++++++++++++++++++ tools/win32-launcher/downloader.h | 7 +++ tools/win32-launcher/gpo.exe | Bin 107520 -> 163068 bytes tools/win32-launcher/gpodder.c | 98 +++++++++++++++++++++++++--------- tools/win32-launcher/gpodder.exe | Bin 107520 -> 165851 bytes tools/win32-launcher/gpodder.h | 12 ----- tools/win32-launcher/gpodder.res | Bin 99892 -> 100252 bytes tools/win32-launcher/makefile | 12 +++-- 8 files changed, 197 insertions(+), 39 deletions(-) create mode 100644 tools/win32-launcher/downloader.c create mode 100644 tools/win32-launcher/downloader.h delete mode 100644 tools/win32-launcher/gpodder.h diff --git a/tools/win32-launcher/downloader.c b/tools/win32-launcher/downloader.c new file mode 100644 index 00000000..c0dfd8fe --- /dev/null +++ b/tools/win32-launcher/downloader.c @@ -0,0 +1,107 @@ + +#include +#include +#include + +unsigned long +DownloadFile(const char *filename, const char *url, unsigned long size) +{ + HINTERNET inet; + HINTERNET connection; + FILE *out; + char buf[1024*10]; + char line[1024]; + long readBytes; + unsigned long totalBytes = 0; + int error = 0; + HWND dlg; + HWND progress; + HWND label; + MSG msg; + +#if defined(GPODDER_GUI) + dlg = CreateDialog(NULL, "PROGRESS", NULL, NULL); + + progress = GetDlgItem(dlg, 1); + SendMessage(progress, PBM_SETRANGE, 0, MAKELPARAM(0, 100)); + + label = GetDlgItem(dlg, 3); + SendMessage(label, WM_SETTEXT, 0, (LPARAM)filename); + + label = GetDlgItem(dlg, 4); +#endif + + inet = InternetOpen("gpodder-dependency-downloader", + INTERNET_OPEN_TYPE_PRECONFIG, + NULL, + NULL, + 0); + + connection = InternetOpenUrl(inet, + url, + NULL, + 0, + INTERNET_FLAG_NO_AUTH | INTERNET_FLAG_NO_CACHE_WRITE | + INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_NO_UI, + 0); + + out = fopen(filename, "wb"); + if (out == NULL) { + error = 1; + } + + while (out != NULL) { + if (!InternetReadFile(connection, + buf, + sizeof(buf), + &readBytes)) { + error = 1; + break; + } + + if (readBytes == 0) { + break; + } + + fwrite(buf, readBytes, 1, out); + + totalBytes += readBytes; + + snprintf(line, sizeof(line), "%.2f / %.2f MB", + (float)totalBytes / (float)(1024*1024), + (float)size / (float)(1024*1024)); + +#if defined(GPODDER_CLI) + fprintf(stderr, "Downloading: %s\r", line); +#endif + +#if defined(GPODDER_GUI) + SendMessage(label, WM_SETTEXT, + 0, (LPARAM)TEXT(line)); + + SendMessage(progress, PBM_SETPOS, + (int)(100*(float)totalBytes/(float)size), 0); + + while (PeekMessage(&msg, dlg, 0, 0, PM_NOREMOVE)) { + if (GetMessage(&msg, NULL, 0, 0) > 0) { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + } +#endif + } + +#if defined(GPODDER_GUI) + DestroyWindow(dlg); +#endif + + fclose(out); + InternetCloseHandle(connection); + InternetCloseHandle(inet); + if (error) { + return 0; + } else { + return totalBytes; + } +} + diff --git a/tools/win32-launcher/downloader.h b/tools/win32-launcher/downloader.h new file mode 100644 index 00000000..4ec129bd --- /dev/null +++ b/tools/win32-launcher/downloader.h @@ -0,0 +1,7 @@ +#ifndef __DOWNLOADER_H +#define __DOWNLOADER_H + +unsigned long +DownloadFile(const char *filename, const char *url, unsigned long size); + +#endif diff --git a/tools/win32-launcher/gpo.exe b/tools/win32-launcher/gpo.exe index 4022faeb2198fbb97f5398319873c19cccd035e3..d67b0612dfee9012588fac65a224976cd8fceae2 100755 GIT binary patch literal 163068 zcwX$i3tUr2_BehMf(DJ=s8LZ-qedkNNE9CkXaoX2Kv6(#)hgwov-MqTe%J2SzISW4-L19ShvlJw_JvYg@JUrKu8nQUDi`3pUOM{0BtgcQ9)mQ;aLqS4_g_K+v3i%EiJ_BfRLi z7)C3?;vcmLqGmik&ofL}H^|>&m_1u$%>SuRusLJB8S>I)j7SiU)jbIDvyw?%8JwPK zPKD=CEWokD@R$cX!Wo&6^5A?C@Qdz@I5A2{>7C(L8iOA!D8Og`9`I)e)8%IqV=NEO z67f;qJkN;uvOB_w{TAe>F%s{9hfEpd<~!lWhlhh0Km?pQm^}vI6em8Hvzo0g)LnRMA)x@U^uej3BY>>RWdVY%z&X8+DGi3qa- zV4S^ncz*2Bv>o=utL?=|{<&uRBFOE7um*7`ce&`>MF|H?8Ne34%Kp!8BE?>1D}_Kb1MC)Uf`>;LFkFZ8lQ8UNjK z^0m!82H%@p?>HV&zHvG>LCYsVU={)^GirdWew#$vtxB9DB^39;V&x7xB`dcYK`4Y? zA;1aiVY2~>^oU}Evh#->HV{gf5%S1Qz_uu9LCJ+e&}{t2_P3QNTze3##&nP_SnF%I z2ua^Whm(z6zDThv;MI(;c`2}7%313VD3I2dZo<+9nFMlF6iW)v&92=)MFjPcuzmrcws){!sdr$&xn!V4(G4HJPWB+n zP4o}lBo0}+?7qpPdsWBo{|fkoXoW!G6*5saZPwkl#GZebEK;?Ma>G@c4W+zk4_CB@ zu?)iM@g1rY+N;g;1k;{s&&n7|s^V^>s!Q5QO-=4V>g^=T@8A-Y6A=qW( zM5EG4=psr)bSpj3^%c=^ZQU&Q(|LUBia0qUOdaA~3vv^Q6_zPbrICr~)Do3$YU?EQ zUwfeEyb--G)rF3sULxPV2LQoTivyoX>y^Ce6RzkJrt8uF?13*Wsl(`*BoU+UW;e#K z6%xieuBh%V82vZ5W9-ur>*+Nq#dKvOTu`HD>`)-jHf&>4(W(--vSXM!?`g&>%!Q?6*b)j zqlRn8cz8hvjF}R~@OF%GE{x~6qH}k_ILia$x{eq%@G6)-0ZkjNsA1B@22}4r0WMI% z3wjYub)=5Fph9F1iO3LCFg0K?bp8QX^ub*^&-Up2dSZvppGm~dKcF3)LQD!e>!L0e zOidK|-4tD^2i_Mt;+;Y9o+EWsYuhq@<_4+OXsATc$jT8i29 ziPXUzD^SYm<^X!w1O3{4a%4rsx2VX1)tdW~voT>i2LAy!9>Y|LHyO_v{<^-00l~w4b>K zLU<2|#>1zV=`@gNhsQZ_^3c79PV2=^2Z9V!C&iX%lu7{>;m!d(uK^!n9t@B2rWu?M zr)-B{I*2VT^N_=o1KSy@rzJ*j65mk&nY)X|+Y5+2jPp-MzXp9_zFx`;rF@f=@09YF zr2Kg)e@eHd`Q=qE{}t)oxpN6$H3@hAiO=m^@|>aJulUTCmNU2wU|&FS zL`R8s#lFx|En}^(!XsZd8n@1wKudS7mk~&iw^rhI*!8NwS4QS~Rnk|v>s4Ly4ZJE` zuiBOhH>9!Ukk;Izgg$R##3;)q_Jv5y)&?RS@Mb->K7^t$ng@xXxEbu^p95n>lrl#G z_|Fm?AaEXZjsN7g?d;gG031eTBt{tW`C+b#&*rgMMP4052p19IQEE8Niu!z5o{}m~~p1 zeFHj}uoHvb9jXAj$|Mz9&>tojTR{uNCdnUy&Ba!LQHkwb@X-JtR>hxKE9Wb#6%#tN z_25?$Uk~yQqRm&dRBJ6tA=)=A+OJsMQmwXVgnsZ^rjo;7BOeV-l}oF5l@3e}4A1_L zIl$F(o%p|)uUV7?{iykRVUY@^Oc8dXaGemV3~MOfpl{$~mGEpWFP_j6>#eW^I@x_% z9K~gO0n8Ru%>oFc<@{Xk1~HEZzn(qNoxdDsPk~x2vs@GwDQ!{2dJN!-hh*;HFH;2e zP;A~_weg3g53HyHe0+Ua!^W*Ou}a)|!-`4ak1t*XD>gzX)Fr|&d|~$dY{@WFz-!>V zhEARR_%z`5Vx(UgcAnk#7<3`TDZ}jS_HFQ}xASpIc!zNeZ;69(404U*y8U&~e^50G zAYdFjczXgsSzyj-PuL6luAHls!^HVg)hwg)Ms>+nJOlUvI>4$1DYZ+2@2gX$S5M<+{Fj#Zh2=_Nsfu527ZU8&!^LBSlnZ>DzD`K7 z>np9tiU-UAMo9Xzx_by;7dHnOcQvf&0$b`Q4oO&`v>s!(U&nb}j*T0zC11~OABX_6 z6|EKJ@L=|u19A*3$y4FDe4wc1kbeFh!hz7ex+XUs1q8 zu<`r?<;EsJU3z$ZZp$H=Ik&p|xE*moRl$&UdgntMka>GLG>5AEi+A8~4srJ}1N#78 zB;h>s(J-Wq-wGMc;84-2M%QJD5+>#M)!l=fPq$PU&G4jk3WjpWXp|2a*er$fOzTPR zOQ!XVBSk8sgDw3M-+-}S#Z}8g9JTnCpoIQm1dcGA*V@q-w2MR~%v!&@O-XTaq?iZB z1D$bh+My*(f&*LM=or7C>(P&E%jHeYe8#yN(*=yt)|l+zbui}M@Xm_w=-~+_yWtpD zKBLuQwg{x6M6)Da)JqGv)+#Z%Xr~ zZ?t78XW6|Vz^$<(P0F&$O_d>=u7?#DDyH->oh|Fm?oEJgx(e9BzEM|yzNJFTT3>;l z_!N~-C2vw%s)Xfg;ZaqXrHL(#feIkzMsbvo(8M?EYxPyulf{$fqF}h>v0Dh=5IdL3 zqov6b0u&1iK+l-R2uM|IwO5F9NZCN=R<5Wymn|I)7y-`Q;Nll}-TW0HMXj#_wuUvZ z+tIxPy&9!NUMx{Uet+pn!W1dRDjq7ql?ka;?*|M;QPT_447dx21e1ez`GI5 zu_})S12t6BV-Pb&7lP`|t{#q#f&bE~mTHB0KufjJ+Jvk`bF(X^ zs%1Zl(M=sqHiCCpRtYeU)u{AEMoZ(PiwU+F=up@S!G);juh+z?ki+IV)zEto7`t9V ztU{;VkL#-}M%PnvI6uO_>|U?g(YmueptwvPWj(y{Cq7iCzivY%tZgHNJE#^dtD@zg z%-j<(jzf&jH(xWFU&mK1eSN;u`VIu^l5!5UL6OROnBD%SoLbaySXYl@G+8oZQYPBg zG+`ZTqU}!sEZS2jN(3j#r!`JNm9s)B42J@g56c8B=*SP3J=C;zvWF6w^&~(9;lQmA zpaO}*ak199@cf#QwJt(37lUFg?gv#KQdl}oMoobAB)ff?43)oYeV$|Ys`rJ!W9cz- zHv+E*D#0yy3cP-jfT|pLdV;zZ>~@MHPR+I55_Jdr?qW?QRFrN)4U^F%DX=A1fiWgK z9hJ!rs%$ul59l)X-8c;xOX{(Vnn3-BYIghE(0E?E|KP=6kGA)R?)m0<=sySmua`YfB0y1ww{qkGXbjm7$j~(`JF4~_0EX1T-e-Q@Y zcuYi31@lov|Lm>y{vLt?m?Otx078KPx*V&B>lh_v@gjQKgeDVQ`cO&Fguw7Lv!10J zfg1iel&IfZm6@5@dLADuuFEUhhU+Tlth3eQ=hbNR3Pq5UM?}TV=SaY$Q zuNI<}T(umY@7FhjmjNnH0sgE8+W5L6I{ncTiPrKb_-K_7t>}g8laE$#Onec!L!GHx6FzwBNvEof-X5p~ozJpbC_x*xvpycpq3d%3TNQ z7!Nz&$3Kn`_soj=w|%^^)Lieznk6#VaOu$h%^{aohp|A zR5f=N0KhQ45Awo@7E)SYzz77W;C@(KF@BX^r&w{RZzTO5V@=ufktDw8*<*Zs)d zkgc-=A>i3tR2wJT5^BQ}_T>i)CSTYoTg%tO9%mmh?c<2gMjd}0_7Bb==vM3yTolMj z@ewyn@hM@sFM>^B_eO&krmQUMBaN`{$uu|1aJh4<+3UyHBZr6T~5~; zZeF>nZhWm|A^2KQ`=I>!qxuT-$d9m4Fztyp{*gEB;cHtjy6UNAIBNMeZ23#YSwhN7 z`V+0y=n%2ie%N<{uecUwDvMKq5OI|}_akl#eLL<@3t(zXPi~lmQ0RKu*8!9>9Qe#` zEd*(Dd<=iMDsRVqXxmM`HAZS1u+jRDp-&uzbu;|sz6Terr#NuY%m!h9$b8ZCEV27x zL4q&r34s-3VZS3ckC+8Cx?9}1a3_VL^swCDm^y%%cA`m~KCP z*>@L+E*xq!@Zb0!(1ZJf6CINe=sGif;Nigm8SJ}JZYS;mf0q*%hfW-ge|bd%kUjZ= z%Yplmzv)Es?K7cB6h?M)1`$UQt-`H#5{RBtE5#$EarV0)GGYPxaQsXaoe6BA;7?Fq zCEA;T%96R%w*~=_MJw5lOllzQS^Jm3#de3!mpUqrN9nf9SM==mKwF39w#fZ_g=0RA z7x==i-w{K-vT_`}ea&R_%F4U+%Bs;T!@WMt)C%y(s)4*rK1qY?C0gxxMZ_rF2WF#q zR<)@%*tYyI53+9BSIvYNK~p)LH${r5=#4~*zP%-uP|r#YCHze(ltE|8`6Ar`f8cxz z*1QpyyCWBDy~ln%>A0jD=F&LC8v8($NtCZ-t#YJez_+7@-nN`D|Tc zW=)JPnU==vqtXjoMb|?-z~QMDU#MFG9@I^aZV;E*NhozmOY2b)9bhY#g0F?`W}bbL1I+tg zFYFYkx5lDqisLLfh_gl|myYMQ+_LuoQs8{khA15I0Q(_w_W;@|N2Kf3X1dL_fkqaM<)-~0s1}mx9ouEVL-GgJe%UObc_BFN$28qW`#)Z_S%pK9TRN`@hnYDfkSZEJ;Tp{)=b+0_loCIfKIqVZ1ZMW`hS*o~4%Ou>#9O$B@ zaIcm=xG5}!mfS4`TZ--tcT2{W7SRW}*@wI3#g-PdbIr{#wKT=N++l*|lr`em*TZWG zFliHlV{=wS#+IgbyAuzC`zC+r6bKGvODz-@NcloRmx;eE9@ZK9$|{}x6P%N;ZX&UO z_8D&pZF3joO{G`r0ugVa&Yvv}b>V#yV@ua8<`K`s2+(n0&t0{@r=#Chw*= z3cOotIDE(GC8jF(t!Joe@P{QChzA&WFYhHpF#hHp(@|O>YZqs;TbxxV{b@XmhQT7y z!ZwzlEYyXtrFaG}ptt>b$qyLvGWRGsvPtaFEQQddM&7up*TCPBuQ5c$S`9EE(0wR% z+K>AjVy(lW1Qp{{>RYR6#ofJldoD`GLpP{|M@)uU1X>~{vZXpex|n}w{_A-u$DSa;OS(XzP%W%dN)QlnXfMSzVrN@_7m^WNOSj` zmjnxag}|JLR@fEnOGlLz-zb4)p?n38DBn#6WM7tiPry=V!YodP>F$oxy-?P9x{b2- z=`Pf%9je>n$a=Vj3&c4-xrQbHUBBxX0ERIY9-zh!bf)9YYaUZuc;h!sZN)|4aG)mw z%Wp%F2U|Rcv#l$3OX`2JTvY$_g4)&p^>3inJMFCuEv`1~yJ`>hjw_ZL0N`PuJ^fo~ zwGmp`N@V4PWCDp(9St|>JN(V$+BjOqZu=(&kAR!DEqFkUg_9j`14#6Tbg#A7OHzS= zYty5$39R+lP018-RdT3yo@EbU_cav+y-gx*P;0D8x3W4kQ?II2F0fvfQRq( z0}sJaZVyN6xmGNV&^hgQqo7RgNNlA;4E<1aD2BQ$x8u7zD3>Nz)V2PO;_LSS@V*0} zz2{7@H^*DLsK*&~e02NH8iqfFSSxM~2hT9j@fyhFfq^hwM>!~~1H|P_M(W2HrjPFQ-Az zda7;Dy8!q}GMvQw0P#BYdpL32wSH>{c>0I3W6`!Kby)4%7K~c_eHe%W-V5N$6-%jq zg@FT9x9rQAcBSH6mhH}G?I9E7OST)(;B4_J-XX5gK*LZ5iwAi2f{0VKG;iO<; z1f^HJPTLPw1fFN2an>1#;TW!Q{bz%|LPa{xOfQOPhrkNuEev-^!MAZuG6M-qriPL( z-L-E3As8|AwW+p4mquZb^`ynfITT@+@O5nf7sgmdyW$&Mw$7+PXacRm%uwG0cNBus zdf5CevJtt;FF?~A!5xgJezT#)aMExXhT#wNVLS~8M|$ae!QcSauXPMeaJ_3tT(tr~ zvC0B#pN{R=Jw_!e9%*EOYhM*`C^Ec$O&wXhx#CdZfWj`V9f?C4Dh?$^8cGZuN-{K( zTgzc6B2!lK^VE*Xx7(KhcOe3}7RuMq4HFKgo>CfOJqh43FojcL3XMR6&OFNc<9is~ zG7lEIA$c_zbYtlL#xgXsraQ*DXne5_nuZ8~7Mf1w4n|aQg}Qif^}!2bHi7TQm{Y*F z*SpT~H2Wm`rm~5Xh%!vC4Sj@H5}|;a9}5T!cfr?MPWOJ6r|t1jP{Rbk3*C4*Id(6~ zEAl{x4dQ77y!vf!mp8Lc2Ro>dnLswRHko|)u4zU(_F@0~B{C^q(L%-Ra4o6m9V6)I zHl> zkPVc2{fuvR?sDsk3x0Hb61ux_)*l8t*d;SUGQH9SY}|fRWaGZoBA2xu;tJKdQniQu zNkNsm7=tZ4QF@=!eISa_O6rs>5#%tOWWIv?`g6Vq*VG->E~sIyO~Gz`8UTsT+H5uA zT{mCbOc{Tq;u~*1TFrhKBWSqh;rdFhQp*oSl>vzNh=}nxAsdBS4!WH$rGXXHI_T2^ zWQZ_JjS+=8c%TJP+k7ci7`+j;(YQ~I9K~H+C&-X^dI#@$Aj5tUd@#PUwTiUHgT3hzbX3n}vv{uP9OLV_>Vy+x&4_Y`FN zwIT|!Wy1=O-YAVSZoX!8bpX;W?HFMHa5!HcU> z@N%wF5%%%g%luLOrHX5Ek9gT^!Ed|uBx~J(uKr<5GfqWKv>K~K$#oRnrjB5UP2{z0 zx9Cu!g$0iya2Oo}PL8mLj^Xr93ef2N77Wu?7=qpvMy>b{#30xW{@Q3zEKDzkX`UfP zwD`7)w&ABmcWtquN?>k{WAaA-~{bd86(g9_`(Q@!>9zQ)6+dew@#cRA!|DvH@8 z00NLxz3ON|W1+6N@h5b`iZgpLDs;FDPdm;wHD>DyPbTXUAus+jy9L8UCu4MpC!p%j z?9=7!e^n~$Ktb#AL`#%5m;Rq+iogoY`PDFu{bfffMLHxbV$N{=-vxJWugVm16d3;lye`@h+PkQ{sfw& zwPA!9!;>n!i+gap>5~E+KdI~^N@t-iW?i@-Lc_XJY%z-85sVSU2q>O~uj@ru1HSS{ zT~Wzo-4YB`VzlJ%S841^%O8^DQb<(Iq36pHW8C_#J7PU)9@$bQ|!Rbb6RRJaOz|>{n z1fWZo$fHj!F2B~g3j1)B&)yi7tz)eibwRfZH1tUx?<^OB{Fy=0mVx>|Y)+BHN5*a+ z)RW5c%DG|7bb0Ky%|6r*$~v4OP_dB>J*QPFQ~ptuQQnG9qa(p39X8oE^ctpxZ; zuU<_Bj)EYVhoI#QYb%!XZLqe?`Wiikjil)S!MBzdFN8b>y_3C44AT@(rf01fAp;-& ze18!$48<4C5Jt-uVQ*Dv7*Hj?)|W1^5Ew$9{t9dTO6exkezPBKO=DKj6ROQnm-~R& zw~5$w?$reBNKjJBLXjeiH)Xm`h(fcpSq;xqMbq@na99}P5;FIuM;Ndaq+y8}nz`+x zFyv@gP)60rJce%8nPI5DFf7yxA@mX&45p{3-!Yyu)p{7}p+k7q(I5vbQKv+(D9Nn# zGjB>POcVQOWV|>EIpsZD+K7j3Al)!6WqIO))EQdd$1ic?wGe8=0O>1zB&5seRX3{H zpBNzOj4){S9uAMkbAI#*j#tYKCW3krZ^Q%W*gh09O4T@k2(%u<$pfVth5_2AMOTQm zE>}=7^T#GXt0~#^tG#x3t~Sy4M9JP7dAVdg@vEbf;pO#U8b1)lhEn3=)xlO%XC)qR z!iY43-O~VFX6s9-ZIV^-JLzI^9HkKpM_-H^hzb#RAE=Ki&JVY?052uQj$CXLSKdmx zty)I6`a0l!*_S=g&fy}KR9oZWGe;T^iza1rjTl)#-22g>LaXFf)Ru{kDyZ5o7t11O zxDfWG*`TT=QeYL!uA^eMMakUj4>oKt&+Ow#08S5BM8{v$C5}ia1$AVkhdl@IJw zs9r!r&>hnfUPMmq;4?>&v)JatRvDQ?j%chH@IIiMzsLsBs zH#Ljp@al8jG7Q8GT`Jft%D843sImwK%mk{`R@6@?*)k*SEPL*x4J>NO18b4X*wV4x zkQA2+jF5}A(E6|v_o4B+)ny4((VD_`iaacRUyNFW7!JQjuhQcxj~91seR@lp0M-&+ zNTqKxbe#oKbD8c?jKY z#^_el)wxVmN?ZEUHvXV7(p-hb9^qw&!-#O#8%;F)sK=sgU1%$M4tb7p ztcVv6eVze3<#^%-A);p_I-brk?_>9d7J45J6&)%+;LTqFTH*_3H*R;FCg?xJWhAEj zNI8RCDf7aBOV~CFUWl=r2t0mm!6PC%;iW;M#Rvh5f#-+YPs000T0~x`OHSBS#DuX{ z{62d)m~hKQNsVgx)74%EljCpKsaWegd-v%>6)`^m>d*@@l+#)3FvT$FZ+g1v$5ml{ zsT-w(`gV>J*V>oMAsK3|3s&?Gado3+lU78-VY;dty~Q4nXZ2trzN8`3nl&@KI3dW;^J?eA_RCWO`ZuS z&pb^O1S24#dp@zw?ft^sU+O%4)?=1kr%yQl0W;m}f@l~wG3~~qqM^z|TAre4&U}5E z8qBR9dEulu`rx%;uz-#B*0XHsoS(r49l?+zdrC$30{jiw8Z^QrdV9IeAA0_m%s;XoNt@19=qrt3M~YbeHgP8`dgLyX=ct7-xC{@PV8{B)G(;MKXHv68 zw=9I)payLbB9jz}+hwrCIv#^U*Y^iSPdKCt6YzC+NdYVq<24{E_9DAma|x~(oTOI% zsS^FWi!!uL%XF(LGQ+X5<&24U1=o^AQ?#YKsQ;-MvaT0zNCY}^2^IVh_m9Y+9-7nh zPBLP}z8?P>R2XZWE~neb)vzAE6*WC7%USI9PXW*Sbll6t)fZyEW^(-DDz04j7RZq+ z$_MNu4CRhz(aE|`gCPw30tvVQv+tk?2iBRQJw3(Iqay{vvKn~4dKz1bUodm8e>7#> zdYqL)fI2`4GlQ1cn+$d!g)up9;??hk8g#=4!$9cQtOO&qm@(e&xx$T?zc5qHf5z3Q zxN4P6W5t=YMJc(q?rVp(*5JX7xj$NNu390?RPkrI8Z{rSvPCIw@)Z>h`IVR5;}OJ= zr~RCdh~F^|RE67NYCPf?d+8g_#MO2AebG; zaB+Dxx}4TAm+%O=gDGos_azZr3uZ%cS*svWhsgspR-M3kpeBSHj9 z5i9OdwXC>byLLw^9r(>uAzEWCw|p-a#1PK|w@{ZYmTv=wDir4B+R<| z%VcyKIQ$9_tV}g*tPcZ()+T;Y$d8VM?l2`Qz~kA0G;?@%Fa}3zU(RBfRtp;&B^ng# zG4mVt5v=Q|0I<{Jz@_4S;w0_@ZV|QYyCA%C#am)+GnC0bUG4vKlsNicTx1Kb|SzFAD z!!8y~ai3qX@AebK$T`j=o+k3m_E&LbmKUeXs%15siV0&*<*MXi7xRx%UitEE0``Lx z6w(tpf9_yl6`=h-bH|&7x(;f z7yM}03Py$pi}WkKH45GO9Y)6fNiTXH!?nrHD#7FH*9Xd=mKtZ+EO6Dn_SY$(V(x~E zo?sF`{eXqOe9bOIiC5(D2oq7>hki#9&TyN|?29FFf^_Bz!xq0IzSbSLNQ5pZ3jEQ9 zHksvfSH+Z$73R;Jdu)o0HpL+%5*N-ek+?f>OZVHwv9|vp*jFmoA=Kr|kiRQ&*r;UvLr5iV2QteEf^IBXf+ z3i=kl4sHB=>dZp{+8B1fvKYzG;){SWyZFr-BOiro!wBnIJXMKO7^$p^y4=VgvK6UB z6WQ554wUR83x?5Fqy`Jgn>;Ne&|^f0`$gPn0xz6ghwn$=kL*Y*=O5x_M|F)+O=Ub$ zgL2mS`}NX&g+h9BH(kh83ro~tr;GYwe4Rfn;0=Wu;eNb3l5UF`$_R@UVR3k{V`O)h zvwO>BbvUlrThv3sdk#jf9B0OlueND+U?4rL&e=;mnTD~1gAuae@gCEzArD+ZQ5 z;k&`~v#sArid-wh*~c%3foIqUl$i|5`@lPTB9P%1a`8F<@(uCv1GyRnJ$2m6cjv$d zr2G9a=$qaA2%-EnqBK~K*&=on56IlXT~r8DtSy$FuyZwn4`F0BUJxYC@QG^Il?Au` z5c#jdV{jVdZswZ2Ea?@u<>nM2vh7(sxMfQp2f)^9oJ7m0PV;y4wmDE34y!AXKP!Tm zFW^aPA*ebniU>Sc@u%(Pn}i&_ZTSL3fVYbz1nLBZ6&E^K^?32H&Thl6`5bZ-63KzL z`=M8Z_zj|AKWh)bFPl9j*4{>6MIzHYRxIlQ^^SRjo&YNF3qJJAgWdTm(L6cd1^Ijg z^r?LTl)s2=`5LL}K&B**c$Q7ivH412i2^Ut+^)FoEo(N?r5>epdPU31VHSKhw&Gf- zxlYAT15#vd!I>`hTKI`(1rhZSUM9%@h*!XmZ4&Jt|9Ph(R&O^MX_ z+Ty!uJmj5oD7fmU{LNU8BrJ@zn84R6?v;yr<*`D%hskLbY(58kRF4(imE7imj+5>Fq9c z<_=sOfC^WfQji;t=_^nf531K+8gzp{11n0S;J%kZ?x%nz2~^KQVSWuX@rCV|U%`To z^C99>O6@@pK%4Jnv^$_k;cAxuCHJF3SdKqgG}zM~!?M)6YRs1kI`z0zo&zj_Xg?DkzKlgGj?u3N=9dt$jcn}U`#>Kp36=j+QV>YYAk zN;Hc(TsDAKOM?`P+M=e9_Bw5e}R>c({R^i(7O^ANx9tmBfm(&SMzad%OZ>b z*tpMbP@Apf<^1J}Z@k$LWBzdyzys;27~jSZfKiAG6zIh3b?6SU9~`NPqe4@E9#AgU z&;tzHeOmM1DAv-UpWcw-xAJ}XOUN+mGDHM>gHEXE9SQzReIv~GC7%j@z6LbUc}EYRfleW=p;)bf{jFHl)kih4Wf3A}M} zKEFv&=&a?umt}VQ_qXv#&sSe%i@s3NCWp!>wWWJal(>|T95a6`%lSs%;BE3vLdpEC}Q_Xc&uh3l!RNRaz(=AoPIkV>3Ld*bn3~ z_wP|PEbVZml#Kpjm-t(2wNkEmLCimq-p@(-2U4z(>V2hLE#-bvu9fl&68z6n&Pe5L z(tER%E2VOsl;5P~hVm+SZjfM9Qk_xC|0tDjlk&HuyiCgTqO6+@ZqhhK4*hw~}t*wWv_ z>thM$>VM#inyAc-D>}zt22nZRGo^`7X~MeidCMvOMEy5>H9TIcxBJx9I{~|;iLYSp1{}huHJW`YeoGGybcTNw1MWetu2nlc&Tg$jNpU| zIP7e`BCL9yg4&AO_VRJ2Q$tdkoKJ>T=l{%~a0>3<0KuQiF=>Ds_){Pj73>j1!mg}a z0yf0m=M}yRJj7{1N2mQNFtM+pweg0cJnG)zIR6EOUpUMLZkw=w=5r1q|Q75^3CFD<*~(#{)Dr zB>v8^z2p`8tJ&H8U>}?U&*E<%!Y3Jj6_COIZvg+tf&YB|H$QX^j1030<^(bZf10O! zhWLLf;0L$&c>7@xq@uea`OoM7x1a2+2Un$~tteQLzHUO0Avirdn_00UKVwx^fjJ|8 zMP`2Lnv4}$Ihna4;6p14M36aaS1go(qO(&A3Ni|yS$alS4H@Ratej=5@^YC~iMii`OD>r$Z?bFK@CHp>hs z*3Dp6o6ULC#*Y^}4bIJ9H9pgvC%ukG1QVo}Ao>!#rXY*CqaZggBL^s5F*_&AoRylL z^}7t$7&EhS(zThucO-h6wj)g9hNKMzD}Z}5^H;4kt-ouVj!=mkX0OT1%{Q+QvxMAq zOZMIS>k2k;Lo7_hirDSUzlbCs_^BDgeOLn%N@n>=v3zH51 z^w45)_xdBViIx|dabZ*+KTaV3nyLP4E|5){m8yo(T*e|Aj zhT?kBa|42&ikNVJTnfH3jCLl&Gy$^b5#bC?tdV(3N}C`hLb^3iOuc3snSGG=gZ#ie zv48Q?JVVTNQsI4KZhTzK%c{iup*EUtDh-~Ad0pQ$nwNg{49zn>{S`+ty)v@ zdNdRH`<3UGd>w7v_RjjDZ}yK#y!g$R=LXM>dE$6Nx6hk5#W2$61HR#ze;(TzG4a*c zj*n`Y9TxfO&oQ^ymnS^;%(l;!?=2l2ox3~Tzguk&=58OU|A9H)@4U0`$=IvcW;nd& zPfeIGH00W>b(`;x_^4px>G}OFcWbVeav38lRH_t;K1vy*g?C>_5f2#|{0a1#y_J2u zO=WP0DF-EaLAKHvUa{xZYl?P8c(kFtnYfQL{Pv8%l- z5z0bdV3>H1vXxL~gt8?bWra`{{{nN@&q}CU4`~OaKSTN_q=S%}Ahkg1@gl>Fgfs!t zEJ({BnIUb5v>Vc%7u#_if#(yD&O^EmsmDveD@Xy5LLp6u6bmU4(lSVyka8fchqMXO zW00PJv=h=RkoG`20I3$zF-WH%eGjSmrS?9r!*lPK+uw(IJO{#a6r_caGCj)wUmNqo zOiV^LIB?PV;98`mW+!D()5sJvrW|x0I~6lK8PobKb7FpOT1G(uvp@#Eo#+|NO3g{n z&H(+9jb#WhGd(>YftU-jcE_bN!b?yG{bc8+J)DtlTA#K$HD?vrT>0#Rn5gKa_>9!_ zs14=}a9x<5a(G*N2LeVVj|bZspY>pVYW{|q_S%nI;Qa=^9k zAzP7^`yj(?lkp_PA=VKWiOJb9{FY_Uu(<}2ixY1z32Q1_5LlX|8P%QN%9c{67+ z+3;jBr!gDknd@K<0H#O|;{o~@<}Y%Xz|`!Fv|N09NxlZ$c6cvF@D5(eCh%3VK`F*8(_a$r(%5TZmf&$&zI!+>Tof9~*}lAjHDUv`%*1c`I` znauP5ewu4qIL{P6ae}xbVHnNx|L4-0g0*S+X0d1g=f#vX%M_2~#Kgxl5%8XpWLoH= zF7f$}Y4PlNv*($TDeQkf|9hX6-|w9#KFR6-nW+WyfWLBBC;m^89`)WdF0@4a9}@BZ zK-`4zWsoZvDvq1H8T!9lbZRH-kaaFs-=$o8m-3LilpDJ!$0GY(=t+cZ4? zrl4`7drk}1^!5D|+s_Dy z@G>Xnwptf&BwOzhJbGHlRGYzIAeeNcN0SjFN0N|`5HcE`$Bi3DCQX`j@!Yv{b6st2-@few zd2~`zlBKS$j%?eujfCnZkO?EkljP)N^3X#Mkv@I;>|d0UavE{Q#KheC?6c2Sd9)9Y zii#rZ*RLlwn~k>5NO+K}PRb-tKKUeh>7|$O_GJANPdst$*s)_J06)c(=Iht5FGjv% zyR57%GJpPjvN5lS*tl&ZKR=(u#l?~A>})b)#tZ-_lRA(2?Af!A;M^1!7n5t(u94Q( zR#K9`k^J$AXXx{V3m3?J_uWTgWAQiS$dJzMfu13Gd3k3!jw6>ZUnZ9>T_RaP`_|$u zh$SJ9q|Z$y$j_&rewrjC zBoOH5;jY?BJQ%-x`SNT3{O3PkTr@M8<5!fD^w^beJn+B+tAMW;fj2b(=XJOCm`hDZMV=RZI9+H0>peevSO#djO? zznjGWefeKcsAo{S7@7ZhJ@bE48Z~sF*Qk+x-ukhly9eq=_yh)w={bI!u9qQrEIU5f zzfW*rK)(S4`e$|T-rWi8bN24t+o@Ko>GN+$w$A!XFfM>h2@CHq zey~+O_fKDRWqVo~L3?FgvWaZD4^s)*0=8=_O`F}c#s%m}zkdCQPNyS* zf#bjq4I}abc8QL^FXY|2 zcc*$M^oCql}b3u#v1wDInPiStKLwL6REtz>T!nmAA6z zWs%Jf6p_W#lZls?7m-7Pxg=m$Y3_Q)Irft3WHR|3^@IBOUV$ecV>>8 z@#^$|$fD^15sM*Bfiz;eKC(Z+4}|jZ0LR5mHQmzbMv+OO6X`rpnKFg?0%O32M@Jc{ zFJPQ8ofyEbj|&VW6DLfd_0z(`Nq9sg2@RZZ32=75moB(lniU!QabMsg_Avu&`_N&- zNjTsR9v?!63>iX3jna{6us*}W!pL;6%eX!#O`b&j{l}7S-MSHD#EdGy)9YUScqZU! zD)97m@L(UEJ7bm;eT}G@MiL%2nFIy}5w>@4G6?#f47}(A^FLaVDKt4VK=XV8H(;e2E64P)!C z=||@tWe{Z^^ds?BC@6j1p`Q9|Fh6g-_0|o*J)^7sz#b2U^f;tPD=I27z(2V9Ehi_3pdSYQ z9ofHsKl&|T1n711N^iObusv#HO+S;h^>gs>>>eb}gXP+exMBY!L#?2rffBZ3d@_Y5`O5pz=M_q+&u|MD+r2+ltt5>hmcaR}6 zZ{l1sdE6vgck|{=Dw_un9;Ee$4jt;i5BNmit6wR3H#Rmp$BY?6+bUq~eD~dVbPh0~ z&yES#;gYaq+P|v~>2oEN5m*0z`V*QPGWJ*W?MfNI)6*z>xaaumU;j#e{`qHjLVklk zPu9e(ru@hCfP8T!m_Gvky1W0qd-vjc>+>u6btmBGF0@}L$0;c(bp5#!@;P!!1YLV^ z!7+3$a9@H6<>1?Iza=BVKfu0+ft`kZ70UlF?hiUASObsXo(S~->=_)$1KcZNLf*~} ziKVucCLuZuL|g%@79f%Y3@|18**{bsY7 zSS%JY1?HSvR7Cq1R%{^?#~29gW5|gUC#bC9+@P+5eH)-5DZiqxE)&Snixa?hW@cuh ze7^|#JWSnFJ$Gfy@*9smV5R++fp0i7aK>}MYm8w&2fF#AUAuNs-GAoH8QjbNJNu(S zu#UgOcms|b=y?ZtIU*)F>eVePOTZs}jNCtC@fGk3@S-jYbpq(2Tex3-`Q?|lz)mM%OAAFF;K)_Di z`lbEszmP_QO{u}T)o3(SC!=0R8C$Ys3H5={{w`Xyh#WtD+zEXr{R*7FHR1Y60p0WA zfddCxpLpU48dE4MD-=9#=sOvRIKOC1f9?MLKdDn<{+B-( zrwDwsHw_sw$g6+fzFq;NHQwO=dJpyU^PZp|)IB(8WcTqwdY^!R(LQ6x zj`h)x9^DfbjsRl$_5Wa6`b)Hq@b&c?J!)|GfYBp+1_h30gU5~TX9(603JKB=HH`Nk zZWtdh$`BGTc0!0=4=HG3$hh&43==~Fr-X(Ch9%BRcrz;6M15x5FJm0XWHQls0nqcfba@P zM`8be7LpSZ*!hT7NY^k;9Y5(7#=p={Mjub9^dWlK@BRz1ur3q${}224DDLnXeFqEx zSr{{D!g&3}sX-IhM2ri2XGTE852oNKk~B3DVYw5mDkjO2_vQlgzuki zh$UIGGf3%*jpWIPx09!{A16;_*~pGeF$QOQu#9Y5xrN5!9$R50=<|uGluQ{t>7F!n z!Bdatu3>z7^rXHFz^>`jr)QTw`*eN8KT@L~pu9wSZ4Yjx@v*WFaY89>D3xtp)-i^d zmbijUm^6jN&z()?&YeqQ<6>$5A>)I|)G3q6*s=a3I4F?D3!+V8T|`7UnLjUq#3v-s zGp9j=hY;P!5yS}VNU7{j#*P_HBBo6y@rlVKAULE;`3G6)HFMmIA2HTOedr|{$rg`z zBaJmK-P|Ej`j@uTj?c^H+)oA!^d)`NEZt{g><{x2R}E6BrRM( z{9(KzX>ri)e_Jp`=xrq;x`(`hOH98h# zdMKgNTmU`$!L}2CUW7-O zaY4ak`t%uOV(28~{}2C8jQf`o%-^J$Q)iIg>OS;*W8%b#WNKI#nHCvI`e_D`Nt36L zDX>>YnlS#1W5KhJ$&)9MX%UemE;fe5(siq&=M|GCO{8u71`i@WK0d?{5=^FrOnvuW zbo`bCG~m?~I-f9SQ|3m^0s8xrA%lE@pL)=V{v;@50;LttN%R4F;tReI`bMZrahymi zzT-Uwymz2d^`h@1MvQ=QYe2Td_@heIlRT1Nfb>5JY3RLZ`xSJrf%F~7a4Y2XI^U81 zcp&LMGJ94WS(uzmmfydGEJ;~Nl9Lt?!vq7RVfysxl%|Bl1tfO%99o9<40SHb5Zbk% zpdhL@jUZ!_!RG1pW2wHyb%I~b!?@b*+qb`i^e^w}p^B*9^`J#zD|#sla|=TQ#f!Jm>R+HH_;YV@6At zF2%UjMWCbKz39XQMr0-x7FvPz@8qt3^)$M54 z(64Z%&`_#x@qW#lklw%qYvc0;3lk^nz{(f*-Llk8f^@L=-r!w=JOx?-A`zW(}al=EB2 z6Ny);*RNl{`p z4ZKT(cYiR3g=Y#5hl2p$P+r~!n2EoFX3zA-+O=yt$nfmhvuUgx6UJiE-lHxlDk`F7 zsi~>%I5MV5BPY=KEyl2sR+MklpS88Mbj+W8@(KDBUtha+Z9meCF+dmx#@7D|>0#;a zP?t9ASER!zbDs1U78cTY{_*3-JNPy@4y5VTS6?M#2aTruFG+rs^y$@yp1YvzpgncL zqf8+GaZYeu{_w*ORG(H?S3|c15J{3l{x1T=RIYfwm6q8u}ABe{aA2Hjd%#UqRz9 zB^KoFitEh6mEL;mEqa!OyhGo_lb#Pg_<-`W57^+1NgK%giE}AE2#*Q%zb7u#<;V;4 zCp^nh-au}4{R$d?DGf!Lb@^Scgu20XHdbC@>1v z%N930%9qO~pw7p2jN|G||IVE|p?hNe6*T@*3PXL;*&oLsHEVmrP*t zJR?MTMmzeuL<#0`SR?ezP=viXa29C@t4w?Pe1*Xo>}2}s|z>k zBiDIn=Y+JMJ9m!sVf&CxpnH)2c+QD+uJh2&XQDU{o_Y*pUZ{)y1zq1EL3=!Z`UujG z8#Zj9xKTf&ABlR~^X$|!q0Jf8$CujONdIXB?^tv`NA*m2|G<;?sAFMVc+U0Tb^c*R z8W1<$c|d)LdIr~a=Y-=z*eSY6)OIbLJfEJ^Vx7z8xsvP5811bm{isKQcR!Nfco*gu zQkIKHct-^0;1<&4vj3h5^$GecX~qYr{mP%ShTh#l-S0YQcAY6>I(qad_03%Jk9J_$ zvSrXEIZb}!+43)>FtnfOKO(Qd@45zadi785=X_8mmh zXRhoJBT6+rK=&R^O-*!uT>kbS{_qF7m&d&W@*eFR(ESk+eVu>je7URid-%|P@P0M) z^DX!D9{yGF_w%z3i>Tj_Rh3v(}qLesgTkp>q09qK7?^ySM2NY zjK|2TIcX%qe;N-k_|4+ekQ^ZMZ-XCw5p4td9e5`K=NS6xc`sW2)dci%C?n`AqwPnZ zA3kqDxwL$CO8W30u1-SH3(7-`Vtr$#XXyZE8|`?{F|ve z(0T~(Na0;L90U5GQ1%t1xV)7)J&gg8N7pXOCr@QRPJaK;Hj)yaM1b~P%ZK1{7Pfq5&`|f*pIp>~x?z!il`%B1I(8*w|gk1^u%hUYq>8GCf zk9$^BG`+vFsEHP3*U|d=wcq^fU;bLo&-O6<0&}T>fdMhzLI(}L#NWf*bX;@s^91q0 z!&6T^CFUFGdyr9KzXtoU-~9R|`r-F~NH4wk66Blrz^}gXjc;HtgH!f|{R?C(4v+D- zV#bl@`3Bg@9%otRJ;;)nOUdyQZ40`_m?Z2hHL?xT!A^BI(c+2a80q38> za0kObATwfq5Brt+`g$rUDG_`HdIZE{o{x0=-d%Xl+qXYt01d3exXJJY!|xd0WOxO% z#&E0p{G*_iNtlF>C748z{^2HnKkQ%FX;qk%jkA+>T9YsdlW;yE)MT>Ej1RW(T-g#G z9c`Hw8EGj>4Yy=vP4i1nPxnhpOY=)gN)mQ?bLY+tNKZ@*Fe&S3zy1ip=B-{@hz>DX zVq;<~X>;TJ5)u*uQj%r_Wu~Qsq^2f^Wm@Nk+cT0P9hugsbX!V{-If}gWlxIBvM0x9 zXQahvIZ|iY?WuF@nYKBO3|nG$W?JIB`SV|x5kC_=+6@*gSYXiqUm)x6Fx; z4@gg%7m}VfFETSDH6|+~CEk&lIw#w1otJHgjiSw#?MSo37Lc#=aqO3q?l}bsx`-vR+?weTveQ&e`Bew=xMIcJE%jYt(+ER)zRvr71Ub2iMBU(3!A0O zSC7#C4Oh?+*iW_{p_83g6Kv*g=sC%7t$KW$VSo9WY| z0y5L)M=r>4hua)RoF~@i+kw6hATy#Zs|KkxAfm20Crr^3Bji86I;2S zs*RTd*9bkGgqhLtUdwnPAt1o7eERgMqw1pk{QNA%)_g11`_~KY)wF$4x3Eu>^@RQo z^?;oz>`SE$r_=6Hx9?jI39)m8j?-fCp|H?Uikv!C=$d@}{Dplf_CzBdx+|17EG$&$ z*0BaD*ZQVR2^0FYDf~?CISf^Q8Nb3dQtoLE4Dc8FBWApmICmb$oAUz$O{3C(rLDxm zb$@tqPJ^If)EoGOJ>juUhrQO%8+5L3rTQhyDL30rtJbWh-rjB0*sxHPFOut+o0B7K zD+`K>Mcr$vtAwpdO;r_HGZg-imE{onuKK!#)ZW=C?5VL=7|-(aa%fpoGtHl`>_sds zEuma{8dcRbPP5ELv2Zo*y|j?JU=KX zSl}-tB$#|GzJeye2Ve__wfyLqX~KRBv;bSLz~E3(r^LkBiZ7VC36x^Bi8bok35nvF zzn`!8HtaBPk98B!7xpvb*W_jVll9-(G(b0Pzuvoz?3(=sdti4T1n%wC*U?Kwj9b(* ze?cB?+OSq!V;xJ_aWm1=?h(T zZKCf3ulhOwr{H^7ivb^m-930Bc>O8x`3~lf?Z<>o^3^(f>lu+}w^zfH9rD?vlY9_> zbq)KRjAuu)QFhTl=>uy^R*L$=?ig@G_X+L~*Ez>Lz)gME3wwU-lK`*8xPN%_K0306 z$N!EaVvPhebaU@1(LQLmv#tO621kPZ4W{og?XAkJrQ54BD(Ps;LAtT`IU_@v}K=Yi{#l!Vr>Sv zfbRv2g^FFdMT~EV)7rGa2Z)8A!w-X5#U2_ZAKO9$ntFIJFvqqvzC01(|o#I@%hohb*wbyN-)k{~2ez*XBKr+&4*YKd=SS%8z zxsQG>_wUlOa$3EziPo%Yrd00pQBhN=vZ|U!_`Q;nQd+-mH7#DeSn$a;t5*nKIB%X} zlhw3*Ih9vd(blcoDX*YNJmdPq#@efGEYfhfTex0VFtm#LrIpUAu$G?nIv&^E!ryD+ zcKO@9IrD_QOju|LO`8_O<5QflQNS8MY};X{44#hiM}~(9zUbib9&1Aw%OKyN-QweC zi1+Z$)Tn4-dm9-!m8@wtVIPF|D=RA~W_rBXTM@-$DeRaW37Nkuzd$zT-hkWhuHw7` z3JO)^x5DCbD&a9Lljl8|4u`-m#{G)QYI1N~Qc9{A=P@RtKIk_X56~t>MTI=3E#NUQ zSB!mCHOe|Yd{3ZliupO(YgT-mXwLwa16MXLr}SC22fdZ^LIKm$wXGXkXl{yPYf-|o z+49C(THL&XR;*sbGGB?1b#mx-C`8C`pl{epz()@D z17NKl_WYJp zzINVc9{xmrQr_QsJ36U#^Cnt?J!#99(^dN~r^fnP+B3ABR<2w{<*E;v__%45!uS6By_#nQ6XE9NcG=smLI9vH1`agIh z{EW@!^svnay}(|H1AIE2&-$<6y1WnDC)h%10d~t;JAjW0KqIiNVZ6UXK z#E^*fa)uDK?l_a;*K5|SaoU0D?cd;E2lhO$TZIoKPf(IlC}bn}selcg9$??D%DOul zN&$RdzH8U6osT~H=$o)Xf*sdazVa1TmF7OVX zfw2KJ2;9Sd3vB{BZVuR&^KFK+(*NrKa?>y2Gt5)pf^S%9YYSX~hA~c|-@`r;b;2{) zbGJ#nW_vM}hEnw_KA3*!SHdFr`pzf{t?FF(O z>_pk5pFu4^&!*jf0v@T~TMvJmC_A2GTuz*pAnL!lY`xIezVgZ|&TqipP}SEu0rD*R zILd&%4xZ|-?#+2>9Ceup9K^V+-R~j+^D^x|A^>bZ(N>u2R#sMuu}|(Pf*b%{81?`x z%~>SADceTA4?o+|S10HLG$Hpe!LC?e2JlPpPYw@^qb?JHPh)?SERz=C&sE}H+Xmp} zkXhv3F$tI-Opk~aV_>zdLhu9q`=?Kz7P1BSJM3c7?`8X;ZS`dUPsRAh;f8V4<*b4G z)HmTP)Dzu-H|h6nc>>wL;TI5lL4bekBZBVV(;hBuTgtivz$^7-fDE9{>&ET3^DF?e z!?RkSq58JR*yd>umv(QL^oNQ4AoF79D*LEXl=|!68>=0$k4Ikyb#D^tKc*k1iGVuK zc?B|MOG}I3Wm@?J@(t!4W9@y@0`^2^CpyIV2Y;-ff5gl5`Zm+IpIqb7f_feRLb5wxjK%(*nkLxxS|b z)o1Mc7t;RxjItNv3dlHe?HRr^F=xZP%+p>v2~u{2oD5k2^Ig=xtzwhV`(ezJd+$7f zY#WRVp8DW^#b+(#{y1;-I7e6kI+Xjxan1$yW}pt}AKE>5dH{~GXBczfy*%fU^IoiR z+;h)8PJggk(6%Ao*Y6pZp!&>xP3j~rAmlKd2G2si*aHE)a34Mm-k_iJYXSZ=VCR#Y znC0BZg)v~})Of*HwDV_Adm6vd+5BZiEh7j=j+H zk>W$;e9!g00eI|R<=$)XKJ16*@Ta3kkJfVBlhA8}7SI;BjtP&ZBdz;A`e1|oSlhzQ z6csx4ea!RVOXS&SpQR_Cd{XRv!(57GrqgJ1oF9ZdA#>uM!)4F>QslA|*B`#_h8la-`>1nEDVYhNlehEKh2s)#zmA=Ms8uK3bd4b*sx7xL@uA$9oRTMF-plSTkI~a4#wJ`<{wVQAf;gAunhG`ZwfRoTW68_4$h# z&=#;gY9eJ!gby(2lnyfB><#prM7juh+ayfFBuv7`5loZe-#Wlg!~tBGC;dcB!X!+> zBuv62Ou{5g!X!+>Buv62Ov1+#OeRy0Nj=}`-xMyoHC2-^`ga z1x%kl-7hLCDq!l=sR1)1BLhm}A_5BXBLcFsBLW@y}0Yq0-DaG~~#8Gzf`67J6s9%`8~Wr`&*Fwid`Aiys@ z-QUk@ofD9fk`ll;3Ya~6cEH@3@j?NQWaKG9zPtWM+D5RJPR`m6MSgm6eqe<8UO$WM(GC@UxiobX#n?jUg>9 z)@DnK&9GVHav1zAKA#T_3**B1jO#34*eAgD8Ef>?9_tc^3yS|B#(Batli#dav;5*> zVgm9Lrv_wXqy$;5)*!}VNOD3#7~?N2JKY*?x1}&1lOy?ARAy>QR95DE;4aplZjH^! zu*NY?6ShEJtSgtnAFRIq*xFV^2xUawN^mbtKQ@xTGw5T9U(VP0F^Xrto!& z!;zL^x2IXN_(R#5HfyfKX3cTfY&niJ+w57hzTC8O6(!71rpl@+Z*3*c%z+>LB}yy4%3{_W#~zU^n7I@OPPZ@~O{vw|`+;zMk{DX zmX(v0mX)1t&B=CH^RlvRd5q8e9D7=Rwj-?&K1uT!a^GKUDB_`9B6q}Wm8t=$Ro0FZH z%6-*3k8zfgm62v;Jaa$9dG~4dEW0fy*O7tqbH!&aK>NP`bn1&5CG zx_rBRO@3x}dqGCtKvBkmD;SOzr{`Z^Vk`J$sjcu1;iJ`7cwecl=s||BmDq~D$?)w` z0fj0QeS2hZ*B|ODN~oc-jJo>w(pJVh&JDsogN8*7w7jm2PF{B{#m-Q04tu`Y>RG2- zwrug%wwD4x{++PR4c_(l_xDTUF*`MNc1T*<-0;kddEB>C;vEk7Kei@iWv18|&+r$V zm4m*De(JClGoDKs&*j`dEAz5!wF?}XP5JihmV(UOzQT;$Jw@pYj+dkt+{JkMdYP^G znXCj}-+^yd)$i`Rs_$K=|J`!c2e0az&ESVu3y!(Tv})~oikmr`)~{Yh$>~`X z9Ue-Jjf*K{%2cvB@`OF7^uP9T!@t>V-ky*U%wpKYXn?s4fY>e}C@Mhq;ocVTjPPVN!H`~_0_l-GO87m4hvv-uF=cCVlz0_9xv$C|} z-!abq3Ve=*xAO&Y5!1c4krv>CQ}Tc8d-0b3Vh0}|pMm7$=^+sj!SG#m)-=HH__53$ zl#!em?#N7z%W|Y9=47VYva?e2va_tE*^F<-JL5aOX@T9*S(K4`l>79TOVf&9K;QL- zANYw_m|0DYS@pCmZ?W*bxTbg|Z7g3$Z8a^_UDrXqjXgBDw3kMj25HaA5!$zQ4;@^8 z1s&eFkB)9WNXNDurfb@c(#eiv1}I2f;I)mkfPGBp_WRw@l-A5)%@b@6UwZgA@dvyy9bH6>f{z|&8^SIa_1zdW=+js!Yb8}uQ4>|ft;T=*xxw(V*<*?N`OOL(H? zD!OL#Q98c)i15>Vjrywx!~^n^^1Qau#~CpGr>4e-#Kum=`7Gn^`&u5r^0A*SAu1r( znjXddeNS0h>0c$@;Y)c<(Fz`$chHIUs{}4R@o9nUUgeAd;1+v=PcmMCQ{WT+nukpJh-oe~fda`t^+O9S&~&I#Z?zaR55 z+27X|uc8Aihhe;y{aK4^^yO3CC&c**N#FBSkk+R!H9 zVZp-xG<3Y!cRDvIMfm%e2Y*h}T=NA#Umu!1Gv0YlL53|=q|@q!Q`dXK6nVnu?c9XfG$&z>bC0#fVy3hV8wCVUaeH_E+}SjHZW4t@ zL^$_LYGKaoc(MO3Dmscbwru9_#na}N7Md0(&SU8b3Of6KuZPmKBKZ7%N8-M>p<6jC zMZ?>1js6Xujq^hU4lXc$y}=#VeukP>uBO--GoACfb*q-r%{P5Q_~UI|w}L)(&;67* zYX3UvHRaiD^vOH#7IE;gP*qjQ-<#!z->scnsHL-;91c6xELuq^^Ih}- z-UA z-u_|n`O)CejsvuL(`HJ~EugsAXo{OPhkSj^;%pI%Zvf4l9!;|n=To4+FQp{Ur{J(i zXWPP$e_c%lRn^v$H7#BEc13%`e>e2S*!L@Sgcxt}41IJ4` zL0w&4;+^860$R1akt%EIXv3Bc5eHxXm9-0L)@=9wKRqUjqGG0tF=+P8=`8|{D((GQgCn}1qTICTIzfX3Yl`A@L!t3GT$$Of1C>jSsnZy=V9S|9KF92H*lUW zbU<@%&cx3cI$Jnj@*nmzFDNRdkT6%Dh9A&5I$k{*LE&0zV%$KUJs z&H~OE|7F&aB<}y1=hMo9CNWO~{%`0$IX3Rc18ettID=|zKH|nxywK0iwjH8xVZ8@u zkH~ZA7T1l{0b}m6;s(!Kfw)87nUf`gnH5)}fG>JoM)$njm_O=>I+A=>O*va9)$76)j)UoXh3LV;F8ee53Hu0KaT&c|4T-x~)^lMs(eY zt7v3kt2m=m;t%Z!KTPxHCsA=pnRsX0wyo4uS4EDr6gND;Hz0mnwzM0*ed5?*8tUz$ z1$lYGha2K>rp>iiAEsI!=NC0JP;7Xx+dFdoxgy6zb5t`7P? z-m!Arl~-OtD>k;$ipEMhaNq#hY_9$f{*Sb{K6UC8^{|YN^9bMv4}QD*IydmQ4^o=V zCca(EGG9)XopxPukgV1e>T26aixw>sYfkWi3)vpN?=Y9Esaq({2FlCNqh0--)Vpi1 z8~%4}Z=)SMhs7M`z=8d=Z0%;+u%dx>?B2)ozIb830=|?GGv}A3wvu!5qg0++63+O4 zv|Q+Q7YdmV_=gB=@zEixV z*S?pZ@9vKrawz617-N#+=EL_`r8gXp1=Z=*7RLR9!2d#fjaX}w^Zj$dKi-vNy)up; z5@%8haMR~1abirzxDP%*&V2LcW_xWzJxITg-qHa)`TjWd<<-hjXH8Q{Mrqlyk~-0Rfwdh&PZ3D3YS&P;?ZALj+)%t6c_Fos~Q54=RK z_i4`|bV8r|S-e;yz;~cq6z7n_dq7#BgT|a7Z{8&SdH((^L!vhv zkBR@3BKSBJ`v0c9rF63M*r@TpXgPle z@}xXx^=zRgvx=4%E~PECn`n5|4!VkI0{O~vfHn(L^S!pw#~GCIzvLI(|C7Aocq}Nh zmijT=1KUfSecQdTUD)fK>Nz3K&^_6CHC^3ui1x3$oOUkjr_P!-T3fP;mgY551LGLB zKNvf_;j~;ii}pRv>mLlDx4*ieXO%}zjS^?}V!aUW`It=<6&=lSe$KNk1N?pY zJJG@}9p`DrM7ysi%5z#QK4ywyIUi*VL%G9ozO0!7{46f{U(wy3^SKG!_T`L&H_F90 zP)19#8)!}83R+#*OiObcsm@+2;>UqwQgQlg#`X8g(n>&AH!zPn%=aSyeO~ok`U-wY0Fl zQRs`7HB<^cf76nBDy^*}Ka~b%&zwPv8tSR0ehIBv(MYw`RpOjWoblDr&_Lyd4q8}S zP4P2ki2U(ReSHmWX>AqjRo0aGv~m4fx4fmF@cDBSX#Kji)UjnVb#EJ>6>B$$^MI?$ zi^W<}GWdU5$qU?8=Zyb~bgToGws60Eqg=JW_5_TR_ZdHbV!(OCKV$eh$6e3R$?q{P zOKhBO7DFtjiRAl`inKz%lH`JM>#0h!OLUrqaV z>=peC{kOTfS**R+FRZ14{Cv@O@BGYd^trq5p^}nvYHC^`^lDe`>Z2Wd_ES-DG2M2{ zjdaD{eS$Yg9iD_$t5?zVxEbQR#}8aah2;zB`0-;jd)6#*W*PJ^NSBr6pzNGn;WPJh zcYK;|`_!kXyrPmeZEB&8uC281@?CW56Q2-q*n5OB+L99J8vfR@(QG{)OE&lfPx1GqfPxO~q_8t84`?mSN&XNy2LGGkgKl@u3= z^JViKX_Q@1D%Jz5YpQ8ps*M)p*u{FmwCG4G%Fm&MI`~8vg$z`kJ@)I~!p9 z!zLhzzbk-o&TU`fSC(Ep?mm2>0P9sud%u7k^2})0nj6|lo@;bIz=wGXXbU}V7MpuM0qVNk_mCnvip#xIo{|8Hx&i-us zOBG5}N-d240mzX!hfl8`1J3-p{SXhF_zM|K!KJS%m+9Nq-(P8O;8oyK9aDt-=Hugf zN0X2A0WLx2=f^Ugk4iH>KFY8BHhz6|`;=w*we+T~lb^5qJ@WPUSIU#D%>S?U)@C0! zD6^GiK?Z58sHH;(_ENIlwGRX`*Ug{&4AnC4+%?cmgWG$kZfP@Z@9v~E>(|rT4I8Pw zwT1Gl8!3lnG~f>Bw4Au%R;pRpNW=X-)WzepHERKVipO%uayS!WXlTd{Z&=TP&-?7` zEU{Ju`Ej79l?HcRK{*TZ>DF6srJUS6y7!Ko>Aw5EL=E+Iv~SM{9XxrH+jp+H<{GkQ zWKnfl0o{D#^@6uUPLR(BwzcutROY;&9Un(`efmcF+~@8>|Hpp0LT~N$af5Q3uvvJk zuWLJ16j#xP4%hlA=2W>EDJ-v5QBPkl#Yaz}U5AfRX+;ss-{rJ*`*!N;>R_757h^f_ zkNI4EX%6L8E}{)B>nX#UM7gCE&OO3;d3jwMpsPBbBXsQCBi4`W7BAs%wUI5| zF6M^%eagWhAyiaSO1%U9G%IT66Fh&q&}XJybiiYOKI8u{OBXJs<45+By`aLaUpCa$ zQc*=UZCJgWwya!CsS7G-)$&DDR#8P;`v!&0fOZ`YHW~FbRa8<_PwQ4Jp%qIPQCw1n z7@P4N_99yRL-v9%0n9n`^RlU{eKUnkjic#N;gp$`%kte6meqAl80edEzk%T&sk7!$dZvQ{LtJtn#!J|6`v(M4V1Pe` zM@9)5Et2IXzkncNHvyY$tqd0!;78FhF+y(>78*>!p^D8nWGy_$uXg;$HRMg`oB-op zPxb_OH)3j($7kSAI2(SncaI!7f^(E`P7%(g_$$M=)w3rqNqLa#6vD8I;Rci9-{@-$ z_cH8dC}m*TuPlJa{u?j{EU;zL@l!WbdQO4U&OS8IPuOYt1%yyC&&>)e7gC^~g~#eL zik&@=V!4kNl~+?(c!U$b5^!csQ&W@Z?^CD7IL`vFO{Wn*4*^-^)pv zL4i>ToJR$%Xl|mkG@b`KGH7;khOjZi**UQLfekS9RoZvw&W@w(q6%>hIZwO)0DZlf z=cuuBl7$=sdzARtXv(xZ$d_pu=caoIuQ7DeC3F@C*A@HMHZeTI@U911$60cJWB7Jt zNW_LxYcX^a)YsWZO${})sH#kyxs#r5qb19hGma{$wyutPwsz8q%ZI42FrR9xD`=#9 z3ytj9Mk|)ok;9&8I1fHJ(4RJ~TR}x-6+(8GdxWd%7STZ4YRax@rn*`lS2nkhZ=lQm zzrB46nSFezrpQ6f>o!qlW(MPG88s~|rP%rDLVg5pp(Dch1fK+Q&NtAvl^XI>Xhruh zjSTM;;{j*|bdX_7qlQJbw4$+==A_zb&6+hV6IiHug`$4|{&A)>&bG!mlk$8T4u8U# zk_;C;4VV-@e^|w@TVDik)z7;uK9;{F#mzg-G(f$KhoeW1P~)NoVJBZxQ%#rc-o>;q z#N&T0T{+T6U%2~ol%JDHmksZr;h{k~x_2kt^4Ys-K|!I=sVrT##O?cjJ|@w}=U82K zK0|~3lwVj#mmR&D>UbW$vaN%{B3-uREiGHbFUA>L@;qAJ(n0l$8!0QzM%LT~PTjJ! z|AU@N$`c(t_lV;$XJh{WwQt+T->(sAz&EV?etC5z74kRI8K8Hk(%OPooL^G9)}8qNpCxw%>& zUvpyC`lD{f#~N-+-w+p%?`&B`ZLM1< zlW~T*V_sef$Ggt|YTMXMexcE#Uv_o0QxebTHnQy5ym}4eGC`bg4S555l=L=bYnIed zPe0DY4Wz838MKn+O8E@q&8D@hsF7s=E7K!z>}N4kGuI^Upso)^SBY;IVK^`9?ajdY@N&Wi9MlGDuTH z6?qYO#6AzumNz=ojz_?cwAW$yGDCo;c2ehJz|H3wFi?xbl@Ty+!};s4z4n?oiymh$ zpEz+s$imP~Le~U*OWZ?eg!KiyqnY#lOvQsYe4TH=+24O+kY&L+sBbWU7N20iq1T^b zz&cf5d3pJ#Q3ud6`ViU^=S5EhaHhOm8?(){(v?k@dBwSe11m45;$%g?13rQ^pg;WK z4_@gGprwUh{pwd@9YDp+Ul@uXIa@r2XdU*6Bm%oKAy=s|w^)1L~Nb)oM84}4eel9fZAVua7yz8l_o}$-Ze_ik; zoTvWYd+!N4#X0gwgY%)K-4y2KXgiz_elBp=U3WQoV^)HFTw}nYReLFAhT>}jx;W@j zywRGZH%|b*q1l6mvCWAOu6H~sXT*y(fcy$S0b2PLxR!o>u%8Y4yTIFi@Pi-FOE0~o z=kqe)%=sG`J~SIF4{$Amz%Rx@$xA`E*dqzLg{=zwXWVkjEn=P`dH*-Q@eLuncmqiz zqdkA+l~;tmAKwiP456Kk{bS<(2*ak*b%I~u9qgq9{=Ctd7Cg}f>Zp;=TGjS}?1Qcb(^q@~KeYsnFEVMMI zaZDbtf5jfkPH;H;9rDrB6y&-e{_ux%_0?Akzb{|-!WTq81g=M;iSK;pJ6in`)~tXV ztjP)i9p%JaP3{4N%`*BpWC#y^8v%UvZ~XffDY6t~sC67?ql;smHexVQ4zJoc0l)=+yrP03T-J{}vpne+#`zvez zu&qV=YiS9%$5^Y^FMz*)?sK0L<@UsfFo(tW)bzh*0N?*QsR8dw83F5xpeGLj^Ma>I z=~q{9`+|Njm;cE6`51uu{fI$~^_Zu4!#e;v{Ohi}&Vcv7|NZX*uh5l`weJ>VJ=Vy8 zH@pJ?|CM9Fl%OeNjsf-d8j%k4h4~(EF3W&^jJVP4NMW}Ndo52q2sD8CxSIA)OyfOg zl(l(5Q?M1oGpuPn{`li!%v8f)I34ClSg*4(#4=p;Ha%QM>^Tw(P8heK!}W%H0OY?% z9(lxxI|-0+AQNCr^!5$V0KS2D0C*pKK|Y5rz%%c^oaRI;>j79d!Tdv82FS2HKN&M` ztjl7|(9d z$GfKZ?w=ku(6^jckYE;bG?-UD77_8sr2`fZpUTQfS~(v)O^3Pt5&) z^PAszZ8HfNN5Ly4-X#3-kAEEZ7y}m5cD>5k78uewsJkVRd0LYD)^Gn_%0Wz($1%rK{l;@=#33$$LfBReV5Z>Xw)a0eT zFE&_4Y5+}pYcmO$6H1(E0dphiCuKZ<@f-XWvIhV(CH28EVbQc_*{~b_53Ia`GG-~? zhinHPq%Q;XaNhEj0AHZs`M|N{AJBck*A$*(E^x&aSBSMOIW|H*#5@nOi%x%sIlyE5 zb6)rHTwv%SH9!aBt-U0`77A@G@g@Onhcymw?`z@48*g;`hP3sV5)?+;YCGNV58ZHd zn6hUJb4uu8^kq1kdcY6R?|=V$H~s9za=^N_QVVRCYE1l=KAYW<(fdk6mt-38W8ywz30Raaf*Y;Widv;ZC9 zc;qhtgmp%mHA};O$)r;Qtyq0Q$X4X$~Of{?LU; zzXsz0jM;j;13viR17{z`diPl0!2JKd`|dM*1A0KoKQIS8ylSsg_P5W;5b==3UU=aJ z!@Ck7!$UXgtsWS^A^)Mw68{)eV3*?UT?vN{9g?~L=z5Qiqs=c0;Ie{GiSDK zTU{kU_ov0V7SI-GM~nlJk&zzXhn^R9H)w19`_LWBwZQ!Od30#il>+|nMhmy!e!KGqJ(`(l!{j022RL4~Pv{$_T#g4gUb#Kla#T0@u(h zLNASPW1kUhMLd-Q>j&QU7)U^yLEnhLZ3!XpQrgE2edXU6gdSdF|K=5758!Fs9gP+| z^>aN){yQ4}`|7q*RH!od$NX%pytOnS0lFR72;f&wBU*r7N4vg17GOW$bI(0TYJeVf z);QYzVgcxW#Kh%nbS41I74&kqC!CH2o@96MY>fYM+|HewO$XKSfBV8Nid6UWV4uWT zd3&S3v1k%HrSZs)0O&eFuL$Zozel^#ixl>&wkX0z*;`$;fbkr2WluOf8}KxL$5{wQuPg(%>2YuEeh~re zjUOX5K!$zv(MRdtd+!ytQJ`zgZAYs&_#^Z;82j}28x61H1=xil59|kPtJv(s|4?I} zbN&ZEdiwm%mL5C-bb)812i5xSVEhk^qunnSfR1_(sq()*z!n7iy0mqLZ60(TQcnOs z2#}RM*#J!hpm#(2%eB|3A&~;-691PkAE8-M${IZ6bFJNvH=6RsgCt<=hiu~w?-He}Ny-J|CXpx;yj+OO7In_q+gn`G?o%pt|jT^KgK z_~MJgcZs&H@LPg5!oF>}wg$VH(QxU>F5DY@^PAsv@)w*7qFwt3HG05UHeUN@0M<)j@2Cc>qguVS z@x=^hl)XS=F$49|kAsklu;vCHAoZi5ktd#b!YgjII35k4cZFRcz8mBhNP`XA4fyY< z+9IAq{)Al~boHL{@y2I7fwVgrFTn2@Xdi*w?&&ki9zn0|d=Y~m*Wp(F74u-d4Lx+7 zkP8uDvnBU}VIF{WG;jOuya8khIrgT`NT$6W_JQwNKJ4801KkUBP@~b4H(JyJY=+KO z2ZDW&pc^$js_Im{weiIakOeLyHR$buFfN1lBS21*KC8e3pfmM`UoCjrmwWv9aq&Ia zb~o4;dffkqy&v$GjdZXb1I_5aJr<7{jXt1rl5z+3_UL6FPXN0g%o)}2q0jI-81&Ie*W{HckTh=cDvqN z+g>67{}%B3A?Esen#bNa8MyELgZrTH^9egT$m3`0b3p>;6mrj4PNHMXy}#Q1Kfn{@ zHho@W?f=&U_VGzw7tRlP_St8hdr%}`JzDDd5pb>9|8=S9eny2eiXQ^_pb>j3^tLl- z7wAc3=;-Kp(xm!;!u$ZZ@aA{Llkb%|sz1fBK%>pS92TAdZ1O;%;INJ46f(;CUzrlZ%{@fC|_Ns=r zuDa?f_(c1Q?2qtY>dpV3^t%N+LMii44V`M(?=>oHK0wJc6&?V60sQcIqd6^oAb;#N zm3~OU=irwI@pA8%1n8QuM^O#X^L-RPnm$ZOWDt9TvCmQK%Nzi`hsHE8BtzdF6c%LFVLlB-#-z+KK46E4N~8)1^DpQ zgm-`Oi(gc8{C@cyeH#8hFqT4>B>n&58goe44`M7qTJZ5zrOkA7op;;=u4y?c&M3aI z_j*d5o$4$T)}x@G@I-T3z+6x2Ho!YzO9;LX{Cl$d)bM_cdzXxT|2YDDoe7^e*k_}+ zqldhPIh)4z<=ZSr&*5j6F}x-4%JW6^C9E65R~F{WShs~8uJj=UUr#Gbo5VT9*K9uO z759KsT_?o(#V5BOqsokOr%edPCg|kA*P$2E`<_O5F`h|&hV-x_08OGE;PLuBLr5$A zvYt`=BwR}Nz2^e(P4oo_jb-mv{7t*cnA zoMoF<^0(;`(~C`t-`4lN(H-Od&Hn!WUo+2lPT-+O(w-#+!1@RF#i(^d+PZPH*~bZ- zzM(J|fZsE{k4wnP@PVZn2VNk}I;crG7sSSp&rrya!4OquEjbF@RcBPv-8KM8{n%BHo|IvKkiG(w)=bm{DTO6F!VwCGj0JG)4@MA0h5C<{a2S+ zOY^zkz6<<# zY5=ct;YraZ{#uH>h(q*aLwi;3Xfnoxamr&%c@oI zZ!P_1skLOh>u!|{&&oo=<^y)`dYf0sr@)R#9U&XQ z9|z`8ngBo9uqiUoKy_-hh4I&i^M8TI-lbce_`R;(T@F0H=?LA#b3O3=8+)%4XU402 z|9!^)vT>9j`D5&M8tVY}(DUhK8t{GW{np?fzP)VY$m8P-(04#5i1P_WKZoBn{T>O> z1ol;8u7!ZK4B(wm78vy76}IA-a%;&ify>6+20GHZU*H)0{krz!bbRAsI?3Y!a4-4( zj;20wW<1l)Y3BP6mZp_>>zA-`JV+Yf_86;RJK_oV&?UnMs2VWt?VyjpzQ-$^QEY>7 z7MYNlv2KF3GX1y-UJAXBw2M&#=7z8<%OM>vVEhk=e#|t0etlD)($4{cA28nK{oZxE zsoqg5`~F+p_e;H$8P73ib2{h1T0iEko@_j^wuO4h!0%%}hd28AcY-)>6P!mT`VsbN zdZGcy1JL_VFMMT|rdSr!A=~w_SB}(5khwg8!4F{;f!*I0_dQY=_71$!6G~3^9?}*%-dHLHPcAb zARXSgkFHp?i&`o-Qf+3nYs^n8y|p5xOxrI(2cRd&DW4`)R#Ed3V?Fk@VBNw~Ii(LU z&3ZoG&!>yiU-L%}+@_e@3Edz9cs*>xN839FKiRMw(%KDZ!Yd4)eBkZ}Ze3B)^cNM! zqru;J-gv{3oF(Yvz(4#f!`}wZu6aS#(KrKSRp@kK*EgCkDA=)rhBfs08bdXWqaFUu z0euZ~DbePzpTxXiv^`^32Y?P4XClGoN^3iV!1DIHFTeELcXxG<5c30}*A+Ool~R4~ zLRwe1=H0tL_4&vC=gV{@R01lzcx#ymHgl*nfdlzBfiS+=;f|`K2s+%5Z61>A1#ee)=q^=VH zpU@M+KgU?-dt$7BjV)|$;CB>j_jnI;NAzEH?nwH8IE*70bD+1yem$)7U>y(gyIfQD z1d#b*>xH!p&6*AbRPYke^5l3wF@XLJW3Y45hklH8H=K>->0B&N^Z+>wwifHwtrL0# z?5&0!3G9jR3p&9VgL6k<7O+(&pYE?|GAZXAJ+KKMO>9mgcUzi^OrM%hc|RHn)RT7caE zY=U5~BhOlxC_vVO%!zp(?D#b6cG`f+Cv<_ZPw-auNjN_MoecCSpCQGb)J+)(-5~6= zpnHMb4nMlE#l!gu&>g|{3O)ufZr~R_xey1R{n#gpbsFr+fqzHX{pr@A5#-rx@NuDAUvi!|@NYRy^7)Ge zfCua^0#6uW_$Dbn^B|PJ=V`t-jsRSvk7Jy{*&8QF;qi&|?`f}dsR8%`{HAPY++EFp zeYCK(`Yr$dN#)-dyTLO+C%`lGj&Qtl7X!{$gq!4{ z;rxY}CbT_*ulWD!tO`?>;dzQhJ}=o;VG7hpbIS8y1<2<$+bc{{CZ)YgCS;p{zr+0h zZYF~shL)D3-agRZ)zfY7$thT1 zZ{O2>Sx&`w?b46af#b6GVO{v)3{xciEZkj^|p4K%vUMTL;1d^m!Ds)+(+>1oCiK{KBh!P^Cw2S zcJ^FuG9OoBru()G_YHRSxAyUi*C-#JY4Y>EgP-~@Y*<`tGM~5?DFgj_2l~4c#6P8; zey(dDKc$Xp1BeH1^$qY1;3}&TqUJv4KxYaiA~3*}gL`B7`gZjWwDLuuZ^yt$8`se% z(9%B8H`v>`J3)OE;f#<;LVd-jT@yDsQ-$F z;XQ+$Cd;*`hW{#gdmVg&`q!v;H!L^fp}hUXS5dw5McsilYjzF~jkFJ&0xh32-^8>R z)H`sQiLYN#uotwor+cgG-q#cyX!(-)Yn(7-CzGqW4OhLrCd>Wi55USpYu1eP_YCx# zEDwm!g(*X@7^QPf<}DU;FvnW%=D~SNKkjimrNenOG>A()4)5pZZI&QUiQ0U`!%uI&dVK~pi8~Xa$a%=?pCk*oR^nfW->c`k#9tJ zAE%w-E28@x@)G<2<&H#wrkY*yh`GyG)KqpZgqyiLM~&bSo}_b3)Gm4V2;W6>Zd=9O zi+mUJBwy5TQ(iT1^PTp;d_V1v`1gDM7t0eD)AZAPH9e5aH$95~#m(k_Gr3rCR=xn; z#O3nE5nPn>#p`@AeGw9_;(vwwZrm2W01l^b$45r+?*RXc-NIjwJIPlgNOdb;d{!B- zO*6pw?&PY(n`R2e=kqC4%xpH@BiL1#&xK`IXw7Ekj(?hDSCi~&l3kr6yHck|<{^b$ z$xV2)Uy_qK`rOJr-Mng;{r_TAYa6SNyR#u)J+^U?Io~5Fshf4 z5{xQB)z!p-QGJSIXPDwuMs>Zys3yZl9L$lX2>(d)RI?>8J}@aT%1^|Z`6>i4coN~y z9eBPeB&3X^xC=&c+K`Zuz}lv4Jn&u`f)2!U2gf>Jah*C`P(>xE))!amca1V$~HsN||rnx-S^(rb?;g8p& zT(A3ZZKHGDZewPdv!a^KtNho7tYh3w^D|}fJFy`ggDx%Z;_!pSGi0;JquFQbn|-oz zqupCGMrqAyN^8a{tvOw`W}Ixz8EDOTLu+0VVW$a_;!+d1@%vN4_`l%F4Bll$jS7f| z2bT^=8Qy%LO0p!G6C2lMb(gMNmt`-r+wGN!K4#A3xXAXfr)=#)%0yNo6IJH4J4@5k z-`+dY(dkt~#dRC*=o!e|im!IJ^=7mW4-D<(TOJ2pQZ7X4KZwE{oJbp(##>rVmS$JU zG)37en+@|6%YO%&Er<4fr?j-OeDPJ5X^SlXWnN@?d*A(*s6(Zex!(zV;7H@*H_9v_ zU5#I{JZU;*xnbX_#;DOrp+L@b80zaA8HjZ@CCIg& z$|-@7em+%UehVWlev$sZkpY%b-zzY=)_^>{HyJLzfX?D$8Wsxx7UdfA1c7@W(@3B; zZJc<1gZND`;lP~c8+}JYZ}i1Yo=JHDzt!4@xcQp;5WkOUAL8bD^&x&=(ms4?lyXc} z$`Lr#^*lm8%TU4JwERY2{>~Rn%Hb;V{v|aNdH*(Fzpc5K-@)M@SRXT+R-;CHluMNV zcgp3fCgr3KzLf8vJUJq24c^(PT;iSIE0=iZpUS0tXPQZAOS7p7KN;e(8Lu}hvB>#$ zlQZ|9DY5u@UP+6e|5IY|g9g!*3AoAGtS?i3F+Gu@=n?(|Wfhbzwm!(GpvGzEdK-Xw~=n16mCOG!DaQ_JDqY46fYZGQA8z zCI!ccN6Uf&fkO}_a0`+h)O_b`({D8?xYVY9-832WAyX*L6$W*Nc%o!(9~#bL@m&`N z)L%$>mQkc@OzM`K)ifgJGYkiOlo(~v;sJ&`oiQz~!=1Z(hE0#VVp<0J5%ruiCXh0Ui*qPZp>dvqqat($=Movx-r?w;8tnt z?B)rsXqm?uwgf06j>Xh6&<5^m3Y1?K-@?ifR)&0>F<>UI%6g5`hM?D8i@xs4TPX9h z{6E_5jkBq{vxMdZW11n?heW;1ZH6=m5oT@OGq<&44MI~>*@jqEQ`)e5aG;~3b4Wu} zEq$#$;Ia=HYO2H__b2>JrcG`+pG{3uO|qsQ(x^4Ru7k4F3Lb(C9do^-|IxuhV8lO4Ot|&-Hr5BI{LeOe4z^qL#;)yD=|QW)Bk0&wqq* z;-`(t`=VJFlZ%nSEoQ-W7H5o_`;`;Q{fHs=-GlL+`Kj5KQdV0t}T`+Nj-&wbqFwO)CTc&~f@NVa7E2dYu(z*8A%z)8V6w$t}^- z>Vkjy>M82G6Uu$DA@^KE?iGgIr?`5Pig)x}Z~ekm3)wF;HC1cz!w-)(vXRDHzetxQ z9HUd#@q)#fIG18gfr} z<*w2^6kXnUg6lhyCus6gYw`Mr*Dtc6ms03?be>S}y%!yLB8q zVWaoD=U+J%Pf+Xrfl1cAx_M=H??9VoGB~lidnnI%>aLatif?Cmy7~q>I$Z@ioAMx^ z@#A82+6Z-)XL$FpdvPXMp3&PU-Q>M}W;n~!-QEtZgHE-TYF2a?3MU!Nbck5!Nfd5_ zkjH7>4jEf-Q_t}Up;DXC(xPZM4me|E-QRZB9h$HZw{OV0J98Ixch6AP-C1U{bBV&0 zMy>mNXWa*Pc8+umWDIro4z#-(U;{tDGj#NN$ucWxkQXRG$6M4gqsMrop9+(Ad}TVz z+&(zc($(2IJTla|(^ckO{QS9bl=(SlnW5_sc26^*GLKI4g=S43Z0Q=za=6ONw_N_t z;pf7}rk@k2SD2n!lo;e5V0hzfYEfhI-tv{sS|Ijjx0Fsjq_aF8zB8fn_!!fuTDmE&5bjSTIT2}=LcWj%8YhK>niPhyT>%Z7qFz@3%gDI z4QYT2U_imewT9;izgNo;DAFu28StgHPp`9mcJ>br_4E&SxwHQN;pYic#_pB>r%mH* z)dXj&+DwMr&r_?)T3qI=#V(K4fC>0=FSUr#rg7F{xw95WO$Hh}&$YP0S&PB0fuX+E zVf`q~nY^l&a5Ngjtj-axrV%laxSw;2X~lOUv@wGmvn5K#bPe{15#CuZk>&ut6Qh0W zdX9N$nl|Q398(dijd`47PR-E9{F-A9#A{<Z48P0c2zvZlHU)#{|z-9Wn?ge(T#_n+^ESkJbE$WB1+!Dd^mg_OYcZX)lO@~dW{a{S?FtiXABQoG+CD#YwoiA* z@Ib3u>#+1LA_rv&$Dm#%4f6VrXvGRaljbbS3>~$%UU{dV?3K{e>*fw>y`FQ{>#}x6 zS6`bB??2`bR4f`D?=9+U&n?no@K>PuMm@fi@1Q)tHY?+?E1b8wtMz)vMbDl(uIV+4 z<~t(huNF=2BIaKfWqsY1CV(#!7LVNvX80-=Ca$+q`SO5#OT^@G%$-ZLF%=y1+!AdY zF6EeSxqW9X-dd_n)5$Tfy2T80OvG|+%zlokaK;Qe^2CV7!-b}%CpgXHO)^c(V4i5_ z{|nOQ{%Mr3S^H)9>Ued9Hs%qIajewFJdQH2(#AZ4w^qAR3o==&rxvB1f#owHN_kzu zNG+Jvx+BC$EvJG^x*&T>g1_u3sRpb{in_(e$pJi))E___vKFJz#ygzmZDUQ>%9=(S zb60EXw3is8Ujzn^(Jy2lT&Lz`{Ic;oPEFU_etJ#m%Vxc%^p7UJrnJmgui>0n?jIO( z|Dz%IzZ-Jjc%E|qyCL^i4Y~i>ko&^(l=~kIxxZ-0{Z&KmX@=bECzSikhTMN_$o)k_ z?%xSHO4Yd0DgmOLUhP{plFADs4qvl9jX- z(MVrvE&lAJRg)o{H(FI{ksWPPb05Q2KfGF{)1l&Q%}t;OFzJnUqb zn7mVFiFfSe){li{wSCGg-YN4#tb6YAaZqNB_qykA83$$leL|FZw~NNq^4zAU!`!<~ zddkc;j29nFDEHe8xt}!Tew!ipe;Vl7cl|_i|E?kThYY!Y*O2=ohPsDNDEFHTxgRs+ zev={hR}FQKo>1;r8gd^r$b;C<<+c!ytm1@Blfi#4PH z-v8vpyW+n=AAomY(i`4y8wcKjZ3XXpN5wmwD|o|ug~>bKfo%ov2Mo_8-cLF4uGu}^ z+20}2zl^{0oO1^;!e&1$M?%=nF)KGJv@zDaTS`D64?}PS` z1_9&Au(Qla;nD6*0ZjN0sKT-LHk2B^s9CM}G8cGb-$8HbN=4DaM1c_uC z=#^h}`*O9vTosaUE%SHnaaLmb)$jN_WA^gpNw@FZ$}w^mfLbrUD{+f?obQggz4beP z#j~>#)6&v8G}J$!YDHvu(6OZSrNqRkCcUnDEk;a)Hl|agNzlaXS5I1T#eAA$q>fRE zc|iTLtEP`}%tP*F4sglgO3XWkx8U?qTD>YUVS)NIvp6QfjS|uW<(@uS_p(66-o}-C zGspbcEvAcOq zatD_D&QOqC^OZ3NIOc%cTek(t-Q_aPmsAT07rwq5o=F zEe!_A1ZTZkS~_}r)w5w-tq~e*(#0fl%$=^D(skKT&v2)@#v#jG&T0PWO0#o#sK0%1 z&oQ?&OM(@9V^?{$h`cH^c?|@+_GBqBCxeweEUuV4Ip)u9ZFoPvwU_G_?@f$yN)vKj-sJmUEI2YB$hPZqqC^5+)!kA9nDKR-A zaurzSRmCxbZd`P^I`wzeVhhKl25a-`4RP)0QDSzhZz*`k&IOnoKjh4d%iP;L(BA6e z2`!hk?}RPikKM|1%7}%p-1Z)pE=!w=cJIOoH2YhB)SS zw=^d?Ce$s>r#NP&Tg-i-danL`j#=(Z)6(6^0@N;b{atAd7O2!7=W6F)@mp6qb8mqc z`PN?5T0^|mCorh$%w@ga4%LprEnV%s13Np_)i;^uOsHZF?<#W`Q^88NTBL@#X4y(i zg}Uk7Rj(0_dE4zfhr{GfTbb9*;;jhHTVGMXUGN$x$-FU`W(mXcKgmZr?~V9O3aH>&=%U>^!gOV+S&D1kkgCVyEIhF zTZQ4uovT%w)bF@r+BimP9hI0}Y8oGB%t54a(IIp7q4upqr`&3KLVZiapE>45w_1F~ zko!*zG5^Ie_dDN0Uf@x?-ST=TT(Ol^(+C+?S{leS0TC__7)nfXgiDvA#FTN&O>Svc za?EnK*64}Qj|C?<=5aq~?kjpbI|nOrXS#j)t_YW|Qi=I?g!s`=%hM5Zue2;Pc0UZe zmFG-^a;e0GMq*yn**4P6Ot`hbyK|?!9UN)Hs(|ypr@w2!nY68KsB@RR>+R|9l-FHD zSV@o%n6;>v>bF~3y8B1Cb=x}!hkFM4Tei0Lcl34+Rpg2-lJFwjQr*0A#c=D;@W`Oz z7D{`+rl)_2E~=%aw!URybLEoSma5vihNb_%vTN&Z+yuh@L-pBpnmv7tZ`(~zvdM{) z?IQjAn6ggJTONOU?xnenfM!GG^yr>fREo`Ri!pf6i?zkm~ zJS?3aXLOC@f<|WpC+YFb-xLgQn*Bd3jG2;!GeeEK8_Bt!*%JAqI?RR8o%Df|4ub4; zNQk$WB*{xBot;}ragtbN$4bo#Ui7l)zLKs~^u+ygJ;{E!txFV>Hhd-unjEYI_hl(TJ`6P~N`^*T)}bCA23%1%{y%;jzup0~5uY~C~r zET6^Vy48-=T&kZw1(6ghYYTW~jd{aeQNK!R@wOItBraNiUo}kR6K$$-EHRnVSLnZ7 zUte8g@u!#X&$m$jakG9|J+PN>r@j%|cp z7iX!<;v@?DgKNpRO3ZKmm`q;ZQYMp!Qc zSze!o%Q^9XfZ$BMHE+<=iJgTuxH3lV;F_UCRyvb2ocl#}HTbv8#S-ZDxx5GOk*LO- ztJ!2&v($!6k&+#b#vYSA+DxEx$vvRWkh5$KLaFsdWVHq4%zlqZU`RW)hRIwSS%rHN zhd7WOU<_!!8fJbqV>}ka>wnmv!rqs8t;9EnoH;>dK=VmU5gj1gnjWZjVVN5DsNkc) zIM8yH80}sd!}nrQUgkHSzc}p5;;qp}n5P2v2JBZ*HVWyLAHfm^`6MWe@a?oT<0^mx z9(9?`^Bk~Y&`f=aH%`^eG#dN43-T~j2)E%A7-mnH5j$>y%HP~9NVQkeMW4Y?;Qt}uG! zF>LYkJTNwMy~)0#?X}OJ+gm#i6{{= z<5k7nHEV>;P|=`J}AL#W-SE7`+qFx&|5JDZk;DV2DZHh7(@Si zcZFVC+naBI%&(<_$oY}m18DbCs0BQ89->$eINIW+fEwwX-bpmo3K|PBCt` zq?J`)bGsPi_L_?TTBGotWum*2cz>awZt2C!(C}N7lr9&95}T6uEjri&??PnBI?^~g zZFd7m#weq|`cFP^`mxo3-qb~(YWoV+9K?_d4ZJtB7Cl#|FwQBg1GlXlR*-YBhgz5N%|35X7iyr*s>4S zOhSepj_P@iOy8=hv~H=zq*dLfRts&jHcH)+2_i8SMQt@H(n?pT91%^~#2D#lZqIx7 z`m0GM?XR8m@Vw8*@Ao|K2lt*gZk3G9=@X~B^(Zy+eF1EGWtye@>MPoK3lv0Jdfbe(nWWO+lY zky74=f68osf{avlU`6+%f=5KwlqKkKOKyY$gwIM#R@{*%T6#kvG9FMJlMhsF8$)8s zGN_@|ZX6U{jV?gDSnviWlg2{mz<@3(ST57t$boc zQIzy~Fs}PxG|QPw0cT4^51P63MFai^XQ}-eiPq(!7sz6%2|)vHE7}>pRg92)gG<+y zAe0s$d)B^A%E#^NkY-9EK}3M%M3KOZar-JL{sPi$zyT!L09GU=d8RnXj#WP71oLWn zBndq7H;d8^HG!ljNhl^-qntVY6;zCc)nxgbl+^IuBnL_Q5Rz8P68TShiU2D~si-Oa zC=WH3Zld%S8qc+K3z{%tUFfL3cl!akMd<)swcKJW0SsB znrfhdLxR#j(IeCeYv!GW>YJ@vk0u1Gd;?Xori zM+@cHO_KLgj@?;~5=b-(_=#d+7peHSB7~gat|Qrx(d;ja^0R$S_+0Vs?}hZ_7)+B% z&Dt-MS`8ie~4QseLZYC}=t5%QNbdywoIrzgX9GSmW)oarL`2}h?heAoJm zdG&?D`X!`3XExb@W>RJ0qV_p?bPnB}O0eaqKGRdGu*P*sug#$oa$@#5((i*>V^RCO zJUV|5N>?7GtS{)!M;Rw_jGyT!ix` zH;X)0oG|Wqk~6QWv-(t7P>*a%9!=e2KI?hZKQ5$p>9qdMO==2oe_#~M6j$Gr!kv)gsotOo9JO6eyjWhn6<(lnE0VS-rdTBpMtnaP>*S_*0dF#G z37cynysk*QBB|(%v^lyKzxW_&N2&M)2^|?;gLdEE3NMH^*A?aXGd(l5l>A5ogwTpX zjMYZSFmi2pb>$M=EMy)UzB_3pchEAd3)eH#m*`P1;VI%=k;%pIhXAZhv}SpwLc_(J zT#S)F;+Yr7XTbQaKokDhbi5n#*?)Zu-$F<#mdiviIbtFvWAduWW=zxgU%})urm*%= zHd9>tqaYc^VT=Qtb~7UW`KFpM_?hcR;l>+RbI5nq%H;&Tx~_fIGn2i7mAVGHu(ebl zrdpu7nd)k)MXEcfK1j8L>c^ep_tilgb@)`R-I?h>t*IX{zRj@qNf=)ttw5s+PZpnS z5j^m*G|#-$%j=qJ#q;eq|H=H`V`AC^r=$V@P-Bb5Qa=<{N^--ah#FCQClpzKr81)r|uYcWvhCrSNnE*Kh@(Rf7 zAa8<9gIofc>&)?7%^QE+iNaaq|I>&u+X+1Q%+TI)BijLM-!a%5bO%qhBYep3EpI{3 zJ=gD*$bPtk{ULnIzYjkeu=1lUc)dd-_+p?r{1oase8?;P!0+>TgATVe(2mes%u#PB zpz^=>L)vv*<_UCNzFJSXb)*kqpk-LW9>l$W$ GcltkdNBPSD diff --git a/tools/win32-launcher/gpodder.c b/tools/win32-launcher/gpodder.c index 0d1c5716..6c314df4 100644 --- a/tools/win32-launcher/gpodder.c +++ b/tools/win32-launcher/gpodder.c @@ -19,9 +19,8 @@ /** - * gPodder Launcher for Win32 - * Set up environment variables and start the Python Interpreter - * Thomas Perl ; 2009-04-29 + * gPodder for Windows + * Thomas Perl ; 2011-11-06 **/ @@ -32,7 +31,12 @@ #include #include -#include "gpodder.h" +#define PROGNAME "gPodder" + +#define BAILOUT(s) { \ + MessageBox(NULL, s, "Error launching " PROGNAME, MB_OK); \ + exit(1); \ +} #if defined(GPODDER_GUI) # define MAIN_MODULE "bin\\gpodder" @@ -40,6 +44,19 @@ # define MAIN_MODULE "bin\\gpo" #endif +#define PYTHON_INSTALLER_FILE "python-2.7.2.msi" +#define PYTHON_INSTALLER_SIZE 15970304L +#define PYGTK_INSTALLER_FILE "pygtk-all-in-one-2.24.0.win32-py2.7.msi" +#define PYGTK_INSTALLER_SIZE 33583548L + +#define PYTHON_INSTALLER_URL \ + "http://python.org/ftp/python/2.7.2/" \ + PYTHON_INSTALLER_FILE + +#define PYGTK_INSTALLER_URL \ + "http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/" \ + PYGTK_INSTALLER_FILE + #define LOOKUP_FUNCTION(x) {x = GetProcAddress(python_dll, #x); \ if(x == NULL) {BAILOUT("Cannot find function: " #x);}} @@ -84,13 +101,42 @@ int main(int argc, char** argv) } } + /* Set current directory to directory of launcher */ + strncpy(current_dir, argv[0], MAX_PATH); + endmarker = strrchr(current_dir, '\\'); + if (endmarker == NULL) { + endmarker = strrchr(current_dir, '/'); + } + if (endmarker != NULL) { + *endmarker = '\0'; + /* We know the folder where the launcher sits - cd into it */ + if (SetCurrentDirectory(current_dir) == 0) { + BAILOUT("Cannot set current directory."); + } + } + /* Only load the Python DLL after we've set up the environment */ python_dll = LoadLibrary("python27.dll"); if (python_dll == NULL) { - // show message that python isn't installed, offer install - // http://python.org/ftp/python/2.7.2/python-2.7.2.msi - BAILOUT("Please install Python 2.7 from http://python.org/"); + if (MessageBox(NULL, + PROGNAME " requires Python 2.7.\n" + "Do you want to install it now?", + "Python 2.7 installation not found", + MB_YESNO | MB_ICONQUESTION) == IDYES) { + if (DownloadFile(PYTHON_INSTALLER_FILE, + PYTHON_INSTALLER_URL, + PYTHON_INSTALLER_SIZE) == PYTHON_INSTALLER_SIZE) { + ShellExecute(NULL, + "open", + PYTHON_INSTALLER_FILE, + NULL, + NULL, + SW_SHOWNORMAL); + } + } + + return 1; } LOOKUP_FUNCTION(Py_Initialize); @@ -101,31 +147,35 @@ int main(int argc, char** argv) LOOKUP_FUNCTION(PyRun_SimpleFile); LOOKUP_FUNCTION(Py_Finalize); - /* Start with the dirname of the executable */ - strncpy(current_dir, argv[0], MAX_PATH); - endmarker = strrchr(current_dir, '\\'); - if (endmarker == NULL) { - endmarker = strrchr(current_dir, '/'); - } - if (endmarker != NULL) { - *endmarker = '\0'; - /* We know the folder where the launcher sits - cd into it */ - if (SetCurrentDirectory(current_dir) == 0) { - BAILOUT("Cannot set current directory."); - } - } - Py_Initialize(); argv[0] = MAIN_MODULE; PySys_SetArgvEx(argc, argv, 0); +#if defined(GPODDER_GUI) + /* Check for GTK, but not if we are running the CLI */ GtkModule = (void*)PyImport_ImportModule("gtk"); if (GtkModule == NULL) { - // show message that pygtk isn't installed, offer install - // http://ftp.gnome.org/pub/GNOME/binaries/win32/pygtk/2.24/pygtk-all-in-one-2.24.0.win32-py2.7.msi - BAILOUT("Please install PyGTK from http://pygtk.org/"); + if (MessageBox(NULL, + PROGNAME " requires PyGTK.\n" + "Do you want to install it now?", + "PyGTK installation not found", + MB_YESNO | MB_ICONQUESTION) == IDYES) { + if (DownloadFile(PYGTK_INSTALLER_FILE, + PYGTK_INSTALLER_URL, + PYGTK_INSTALLER_SIZE) == PYGTK_INSTALLER_SIZE) { + ShellExecute(NULL, + "open", + PYGTK_INSTALLER_FILE, + NULL, + NULL, + SW_SHOWNORMAL); + } + } + + return 1; } // decref GtkModule +#endif // XXX: Test for feedparser, mygpoclient, dbus diff --git a/tools/win32-launcher/gpodder.exe b/tools/win32-launcher/gpodder.exe index d48b9f8c1eba7c45e454d1baaa184f4cad07a536..5a23b1103a23045f49658b576a29a3f858d433ed 100755 GIT binary patch literal 165851 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

0qkt>b;MY~JHdQF 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 delta 3776 zcwWU>6Wz#wX;o*ItO*sWGQ`8AR4DCWGfJjKQ^ZDqUduM-YJ~3@fp6oHA^w`Bt#GW}+QB=kmZ0I2{&TofpLz zWUjU_%7^f4+=l1Kh_VAKT8Hu;5joS2pw}aN7@w0(X}d2^bQ}nU$k9^%i=nHr!?0c$KgrPo(J9dO`v}t)n!Kaj8~j$oo-(|RKVVoiX!gFc^0NFq-0P%K+DujQ9p zr3hsZWKT&eWcq}(0%_J15<~=8UK9z;l8}}_nJy#E1{^?A4PZsnvUiM!?08kJ8_eq! z(G>6~cjx49&;*j6BB8kGjPbRZ379b+p~=eKwA^rSl8Yq03rX|kN&S;i2(XGw6|-hG zm|%`ui{SLG&fZE`jM z$776RGf94eajakCD1}6efS)T7Hjx=`79->acOA)ohGqY;Sf3qe!S9xAuJ1OIZ7@z2 zH6=}wRZm4f_)1m1PFl|pVf$SP{(DJlq@Ut#fNud>3xz=Y!z2@?8PyQPojFZ+nw9l2 z^J0mXTBITh!BqC99Mzg+S#cir zQn7|z$zh#E_4E zE6~%Ib&P-F^BAx28sk{A_;i+XTbA;c624V{@I~h~X(gO4u(Tx|@u7U;XN$Bo2`w}Qn0w2G?Em)7mK?4!AGc~C z1$_jIh)bW-3JAcfoi}l5j<`&P&Wo)&-rpMXc;6?y5$TpXbD4w_z9nT6_3i!9)r4nt zLapQBs7)r-x&@b}7nxpS8nO5avsan!rGCPw9rGy@oU+PRBtN2B<5k2+?BL^F{1_QV z@tf;x5#A0NE2_LHnvPA#m9gc-M~@K#)%G(I+I4IhYEC{1=gOxms@k`=f1)X^JZXXu znm3Dadz1{Lv&WX^KZYBKtVP53q@3igx(&_Y`zH=1`{`vpMx65sxj=q11nr5{+@7~- zxVW2-bIKJH_X>Gk82R^53*J%L*8};6fBhbz6G$#m%0)1FVj?bUny6{Wn%0po!Q`{1 zuzY1LQ(XRoAe%>Ej2A06b0V&>)kMJ0-PsK{;|R?mFJbeONp{7}{<(i*?W$Jm1lD#N z(<0N=Oh3-FmFcZaw==z+>77h>xW#YNK`V23sn+h+%-@#ji%y^tdVdARS4k-%lW*0A{mj228>X3zN8#*rg2ah&yad-m((p6W$=Lz|Q!$(81ClC-^ zG%Pebwg`uUgGU6vEDvpKY}8PW!QepSg)au89JUN>XdIA#d_VlDJ-hBfLK+3)T`%m$ z?FZlN^pn>@_AGTFv;g+&I$wJ?yso+tx}o#!0beip=5#(U_`L2j8`nny5P1pYG{{+y z4?(6uzI5lZ5zJ%-5kMRuBFHl!T_F2F{2)P)mq1!t{lxp-S|^&9HGDe zzar>20sc7nM1{rBG3fDj96k{A1dq2N{9?#mu?0Q<{D4nB;yHZO6C4QPD*3zkhqBWY zHh|Z6bQpgow?=wV_s*w$@(%_BUSH7Vk^OB5o#%G@LLtw9Z^z(I+O(JX0XbTK znzNhA=K3GyJNGz_goY0WWsR-@?CzaX2jOq;=s?@S?&+4gwCQl$!M7rPsq9CU0g>+x z0geOmO*KP~1$c7tV)_x)3w}6Y(GX~oe+o2d;#tse5u?lZ;kZ0?k3WK}4-O!qfZtib zFFwFe?}Gvbxj^mrzy|a4XziKyA@qSYXAcd7U6-?~-+`v?$l2meuua^W?f(m>oIif) P{Bf=-dTCYVM!Ek2TABoH diff --git a/tools/win32-launcher/gpodder.h b/tools/win32-launcher/gpodder.h deleted file mode 100644 index db123f8a..00000000 --- a/tools/win32-launcher/gpodder.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _GPODDER_GPODDER_H -#define _GPODDER_GPODDER_H - -#define PROGNAME "gPodder" - -#define BAILOUT(s) { \ - MessageBox(NULL, s, "Error launching " PROGNAME, MB_OK); \ - exit(1); \ -} - -#endif - diff --git a/tools/win32-launcher/gpodder.res b/tools/win32-launcher/gpodder.res index 68878c32054b7e0d022c2ae64db042575c7ca628..eab2eea884b57d7a80e0e85ad8b2e7f87247c60f 100644 GIT binary patch delta 357 zcwSAAJxc>Y5Qd+NF^GaTT8JRmS{T2<+7ARF7)@g*As#Vs#*YXo69VZ3wb90(asNPz z`&aSV1JQSw+1cHB=bhc`x$^l^8D>#FUfGXe6PQe@C&ptMG~Uja2H)hbktJnT zwVYD|j<};wm(;b%H68Odv01{s-Yv2&EpHNfGG?gRGS+WANwwH6sjLF^vSF5GG8Txq zmDA#hbYOC2%SVOU#?Y+C4%_@8x(wuZ&(KCO#WKNlkd8Vuz`Qp@? tracn}>YH_xtrixr_n)}Vh(&)Q5VtJY_2XhT^e|A>UD($+`1l$}4?omVJZAs^ delta 16 XcwU>+&$gw9tziq}iPq@`?Tk49JR=6R diff --git a/tools/win32-launcher/makefile b/tools/win32-launcher/makefile index c2af9a4b..bebd1c84 100644 --- a/tools/win32-launcher/makefile +++ b/tools/win32-launcher/makefile @@ -23,14 +23,14 @@ # CC=gcc -LDFLAGS=-lkernel32 -lshell32 +LDFLAGS=-lkernel32 -lshell32 -lwininet all: gpodder gpo -gpodder: gpodder-res.o gpodder_gui.o +gpodder: gpodder-res.o gpodder_gui.o downloader_gui.o $(CC) -o $@ -mwindows $^ $(LDFLAGS) -gpo: gpo-res.o gpodder_cli.o +gpo: gpo-res.o gpodder_cli.o downloader_cli.o $(CC) -o $@ $^ $(LDFLAGS) gpodder_gui.o: gpodder.c @@ -39,6 +39,12 @@ gpodder_gui.o: gpodder.c gpodder_cli.o: gpodder.c $(CC) -c -o $@ $(CFLAGS) -DGPODDER_CLI $^ +downloader_gui.o: downloader.c + $(CC) -c -o $@ $(CFLAGS) -DGPODDER_GUI $^ + +downloader_cli.o: downloader.c + $(CC) -c -o $@ $(CFLAGS) -DGPODDER_CLI $^ + gpodder-res.o: gpodder.res windres $^ $@ -- 2.11.4.GIT