Richard W.M. Jones
2009-Jul-28 16:59 UTC
[Libguestfs] [PATCH / discussion only] Lib.pm: Add file_architecture command.
(Not to be applied - there is still a bug in the handling of initrd images). This patch does the same as the previous 'file-arch' command, except written in Perl and running on the host. Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://et.redhat.com/~rjones/virt-top -------------- next part -------------->From 22bddca227ebe52fc668ff0bddee7ddfeb3dd475 Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at trick.home.annexia.org> Date: Tue, 28 Jul 2009 17:55:35 +0100 Subject: [PATCH] Lib.pm: Add file_architecture command. This command detects the architecture of some types of binaries, libraries, kernel modules and initrd images. --- .gitignore | 6 ++- images/Makefile.am | 44 +++++++++++- images/README-binfiles | 13 ++++ images/bin-i586-dynamic | Bin 0 -> 4616 bytes images/bin-sparc-dynamic | Bin 0 -> 5060 bytes images/bin-win32.exe | Bin 0 -> 21617 bytes images/bin-win64.exe | Bin 0 -> 44557 bytes images/bin-x86_64-dynamic | Bin 0 -> 6484 bytes images/lib-i586.so | Bin 0 -> 3834 bytes images/lib-sparc.so | Bin 0 -> 4536 bytes images/lib-win32.dll | Bin 0 -> 16402 bytes images/lib-win64.dll | Bin 0 -> 34777 bytes images/lib-x86_64.so | Bin 0 -> 5467 bytes perl/lib/Sys/Guestfs/Lib.pm | 158 ++++++++++++++++++++++++++++++++++++++++++- perl/t/500-lib-load.t | 26 +++++++ perl/t/510-lib-file-arch.t | 64 +++++++++++++++++ 16 files changed, 305 insertions(+), 6 deletions(-) create mode 100644 images/README-binfiles create mode 100755 images/bin-i586-dynamic create mode 100755 images/bin-sparc-dynamic create mode 100755 images/bin-win32.exe create mode 100755 images/bin-win64.exe create mode 100755 images/bin-x86_64-dynamic create mode 100755 images/lib-i586.so create mode 100755 images/lib-sparc.so create mode 100755 images/lib-win32.dll create mode 100755 images/lib-win64.dll create mode 100755 images/lib-x86_64.so create mode 100644 perl/t/500-lib-load.t create mode 100644 perl/t/510-lib-file-arch.t diff --git a/.gitignore b/.gitignore index d66ed99..f2064a3 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,8 @@ images/100kallzeroes images/100krandom images/10klines images/initrd +images/initrd-x86_64.img +images/initrd-x86_64.img.gz images/test.sqsh initramfs initramfs.timestamp @@ -123,6 +125,7 @@ missing *.o ocaml/bindtests ocaml/bindtests.ml +ocaml/dllmlguestfs.so ocaml/examples/lvs ocaml/guestfs_c_actions.c ocaml/guestfs.ml @@ -156,9 +159,9 @@ python/guestfs.pyc ruby/bindtests.rb ruby/ext/guestfs/extconf.h ruby/ext/guestfs/_guestfs.c +ruby/ext/guestfs/_guestfs.so ruby/ext/guestfs/mkmf.log ruby/Rakefile -*.so src/guestfs-actions.c src/guestfs-actions.h src/guestfs-bindtests.c @@ -166,6 +169,7 @@ src/guestfs_protocol.c src/guestfs_protocol.h src/guestfs_protocol.x src/guestfs-structs.h +src/.libs/libguestfs.so src/.pod2text.data src/stamp-generator stamp-h1 diff --git a/images/Makefile.am b/images/Makefile.am index 56a22fd..0ff91f6 100644 --- a/images/Makefile.am +++ b/images/Makefile.am @@ -22,7 +22,18 @@ EXTRA_DIST = \ helloworld.tar \ helloworld.tar.gz \ mbr-ext2-empty.img.gz \ - empty known-1 known-2 known-3 + empty known-1 known-2 known-3 \ + bin-i586-dynamic \ + bin-sparc-dynamic \ + bin-win32.exe \ + bin-win64.exe \ + bin-x86_64-dynamic \ + lib-i586.so \ + lib-sparc.so \ + lib-win32.dll \ + lib-win64.dll \ + lib-x86_64.so + noinst_DATA = test.sqsh @@ -37,7 +48,17 @@ squash_files_src = \ $(srcdir)/empty \ $(srcdir)/known-1 \ $(srcdir)/known-2 \ - $(srcdir)/known-3 + $(srcdir)/known-3 \ + $(srcdir)/bin-i586-dynamic \ + $(srcdir)/bin-sparc-dynamic \ + $(srcdir)/bin-win32.exe \ + $(srcdir)/bin-win64.exe \ + $(srcdir)/bin-x86_64-dynamic \ + $(srcdir)/lib-i586.so \ + $(srcdir)/lib-sparc.so \ + $(srcdir)/lib-win32.dll \ + $(srcdir)/lib-win64.dll \ + $(srcdir)/lib-x86_64.so squash_files_build = \ $(builddir)/100kallzeroes \ @@ -45,7 +66,9 @@ squash_files_build = \ $(builddir)/100kallspaces \ $(builddir)/100krandom \ $(builddir)/10klines \ - $(builddir)/initrd + $(builddir)/initrd \ + $(builddir)/initrd-x86_64.img \ + $(builddir)/initrd-x86_64.img.gz squash_files = $(squash_files_src) $(squash_files_build) @@ -86,3 +109,18 @@ $(builddir)/initrd: empty known-1 known-2 known-3 rm -f $@ $@-t for f in $^; do echo $$f; done | cpio -o -H newc | gzip --best > $@-t mv $@-t $@ + +# Create a dummy initrd with a single file called 'bin/nash' which +# is used to test the file-arch command. +$(builddir)/initrd-x86_64.img: bin-x86_64-dynamic + rm -rf bin $@ $@-t + mkdir bin + cp $< bin/nash + echo bin/nash | cpio -o -H newc > $@-t + mv $@-t $@ + rm -rf bin $@-t + +$(builddir)/initrd-x86_64.img.gz: initrd-x86_64.img + rm -f $@ $@-t + gzip --best -c $< > $@-t + mv $@-t $@ diff --git a/images/README-binfiles b/images/README-binfiles new file mode 100644 index 0000000..f99fc84 --- /dev/null +++ b/images/README-binfiles @@ -0,0 +1,13 @@ +The bin-* and lib-* files are used for testing the +Sys::Guestfs::Lib::file_architecture API. + +The bin-* files are generated from empty source files (ie. +"main(){}") on the respective architectures. + +The lib-* files are generated from a (really) empty source file called +lib.c which is linked into a library using gcc -shared on the +respective architectures. + +If you are concerned that these binary files "lack source" then you +can just remove them, but you may need to patch out tests in the perl/ +directory. diff --git a/images/bin-i586-dynamic b/images/bin-i586-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..4f770633b47386ce8ab5a99eb6e35d1ae57b9de1 GIT binary patch literal 4616 zcmcIoU2I%O6`oyh8VAzWcGF<Mz?JG0r_{G=Ym;ms2s`#VcDv1wy(x~O<m!6&+IwMt z%<kRPeyHNG&4Xo(0tK}^pc3dqP=(+Dp&}}j$W_uxMT+{`2g*;SjR at 5uTI7eQm+zao z<6f^DA%r;6*_m(7H)qb=duHy;o=>I6B9VyD5*2NNXzAOr_5{jDw<}9R7-GBV6FuV7 z;vO{7mRJG@`VQ*UZO|CB4Y~_Xc3p_IQy&1P(njA at Dd;PpqcBj}UvwzDZ2JLh&~>(> z6UU`Jieei4Y1pW*15;_|7}P%S`!F`u0H$i&iFdsm;1<#SA1k;sj}>zL1-DdNFso&A zQ1!*oGWH`!Ps+ZGgMD^DS?9btH#rYO4k_Dy at x))QqIr{$r^P^JZvb9|p$qlTK$FkL z+8J}FxK9Ynnk$w|R at JjBo@EJym}O}Dg*9;utvR=3)v8VoJemSt(RNGXNP6P%h&5=& z)eun`V+6mP50%p4y7zJxUr|sPKa92CgIMAyx1&t3#3WBHzgxfE-f%%{H2L!~jBl(7 ze_tOM{+>tiOBeng_RO<->m47mhaU2 at -MR@#17+avXP5s}|7-JjW->ot2V)68C!We@ zP&96U`2M9!7;~zAJJulo^o2DK&u8ViJFs1R%iGrYJ}T3v-&ngOCEzZ7b%=q~zV^y- zBuIZ6KiAfytJD7FLufy^cJ2$SzkZnh>Q^H_W0Sw at B1wVy>BjYKbP%b(7CU`rZPj~N ztiJk1^40t=XTZI9)$4kNZK&+H5$k1}e-nYMrh8+UlK-tcV4pa3X4SqEL?`Fc>hJ4M zO*PKK&4slebt0hKJ&or-^!?Skfr%}rnyRul)x7phGrDrJiAjHHz+b+;`WueDlIp16 zh%Arxwy&giqKK`e+LvR!{_gtq*uiI-wLjKh>p6YaI<vOY)5{?Ee16A8g$H_Bmg~N^ zv;Mc3e{-d+zV6rFS5pq2qkiVdLDBdL!a9W~t at 4~1uLN<*_o+*^A}eHW?L-;JUV`Kj z-N@$;KJ?4uSd&~MS5R{O<WYVCWeWO9D0A{bD1~G7;!SWgw(o)>7V#;l0l%zwqvV=l za&ezwiBQYy at QawrjHQY4Jz!M-YvCTFJDtT?C8)$lMn=AD^kF;LYb4A8bI=%!#}5n) z3?_`eNhfEF+n#FgPYhyx|L^Q%{6KuG at 5Ehv|3BGxpQTw{EPD2gFsoigm3durOP*7i z7iOvKIp*-;iGI(X6Xsm0X6Ef`UYNPX5<08Wt0>Dkr&4vxrA@$st>P5OSC#pKCrr2G z;@5K)@H-0tQ#ogQwlJN%HCwTZjxe)cxl+Xds`y40j^M;Dx>*cRMo0XZ(wpizQw2L) zE*71Vr!(L`m!AcNImeup-#`H7r54&K4?+2PC6C`JezOeJwQ%pJ3_$;d{3VZTXFT9( zJ4-6}Zmu8lxTf;p4WZ7phN|Rn4UIs#uE at Ir-W3?R_Oy^oc>>DyLmt=8doVEZ^|)-O zPD8ogSm&Bs2hTt~JT9P^gYJNm$2HrHO4uL$63;_5k89ijk8#t^`DxxF>Wr0p2=|yc zc-$AX=s5Z6G;bWdaq!}rgpxe!d8p>`{Idk!3v394F;Ff-HII8*H#+x7i~7;yt^_=| z5ee`TFmONAqIu7uf&R!F0&fTgZ6jCLe~dbLe0SWsc}7wj5gH(x_Y&%w$B$b2F1(jR zJbt_~;AtOWf4>6YGv>JR%mvcxsPp|&*oSfa7OKbP`N068)gSTiLp<*7z2I?Q*Fp~U z22}e?f|vXlf9&%ID92}f{FWaA at 8h1!Td>og7V>yb)uOBXrqGv`<Cy&08lcoXmV9Sg zzJuh9BXF*N<`?I{oMA49{k?j>5b01y?GLmq!u^Ad>Qt`w35Asd?gt915xDLZ=ICmD zD~!oP^f$0gzEQPam7P10T9*o|C&=}uFlV9GnZo>HV?Wxkb7cy7Z(!LLWIES}!aM<} zb)YcLv=HXI!gweU=C#6VwK0Dc=35bhd8#nK_$nV2Ry!>7PGOZ%%rAx2iGq2g at NO0| zUlb1S9E`tPzUP;M`9(1w6 at l!Acl!^YYhK68)AS?2I^GD_Nnjms1gH8GF!PgdCW4)6 z3Z*<{26zVL&CqxYz;T>|Q6SH at j{hv$$Ajm=@xKSGpJzneFJ1%=kI(hq4EehTtcCMz6F|>LL_5TvTkt=D_4ABG9~3)~xMBY1T5!At54Ye9us&Nwq7R5O!210dVz=P;i+2KM zZWrdi0L*<EP~!8zS`1Xa+k$@z%zc;7n|G+61M7V368DN<27G<zdJ{Mq;=fHC<Vy$Q zX#gJz^0hO1pZEZn*9*qb8SNBNEJ<EpTwuoA1<dzNdk3EH=YdB<_ at Ng2Bfz(U_tO>K zDTaZ04`L?M-xx5zbM)6Gu>P`kp%A(jifqNJdbQbEGmC5BNaon2m7bW&;I?R4qnps< zBO4~3g)BF>VD39`FfMS`nJ+k=lLJg9(JxoF<_hH*yI{#flV#Tyggi`HxmvNfsK-ei z9hJk3O%6YqvNYl_y8e+Pc?gq^X53Q0yDzz4#yekec!aa;O2uAO_g8r5NiJw|O1Rw~ zNgq2roVJdQjZLL8R%ZBcI>qU2?kt(%uJYClT4(^p2{i<q(Njl<pPU#GJOFM)A+OZg zYEAkS8_k<;<ksWotVw6it>Tb7Qn0I4rz))3c`N at k3XFr{TW;n<Lmyqux7^}4ji0NQ zt-M{z6&!exuTnqOjmS6?7;$3N;mH{~@*s<u at 5f`Fb3AK4YkB!v>6_-vf{=d?$cG~S E4Rlo`%K!iX literal 0 HcmV?d00001 diff --git a/images/bin-sparc-dynamic b/images/bin-sparc-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..138839af7840cc549a02937310df21c799984b7c GIT binary patch literal 5060 zcmds5Z){W76+idcP7DMvAscCE$4g;rkifV!MXY1$Gf4=PG+}8vwHw;AV>^jA$42%G z3)LzTK>MevLlc^+im6sbt9 at wEK24KW2`jAxAJ7(c{kUl<?X-UA2d1fAD at Ay}-+k{o zPR1nqbyqs?oZmg?o_p at Of8KrX?7+|wWhrSCOWGkTQPvW8ugE$LA=wg at 9(h2zP|>1w z3biCWe3A%+Fen5JT|gpRQAeV#VZ0(mY9b`G_d~%G*a}G0Av8M*eQTh%pnnf~pG0mz zM`B#;0|a{&kVrr3NLrWm{(b`OPl^gi<bLQ#M*l6ycPrZezCwO{Um?4<kT1^6#w(@x zer?LOF_0P at e%iD}oH{1vl===(i27}dKW}|Dl0W}^&&^vqUVJEj`RoIO(9xd6EJSQ8 z1*UQ6({B#%t9@|%O;)Tae#TH~`-<ISwR}X8ouYJMoMYhOEh3x5btk7wMYrOm%bx2B zhLYhB4v2ef1hv_G(VeN}vaq8nu$xZji!wNL>~NpEKc3KD85euTO2L!kCdtNpo}6R& z1~Fo(!ieLh{1?by3S`7+X?gzbrRddAZQHLuxK`aKk~~|lFJFx;MME$=7fXc~A~iKv zO^G!pVRq(7a=p(b8StNw&tG4P&g+ru9`xfaM00s(we#Ij^_fed>Ph4vxeat5=wiEV z|Ehf{_0m?`c{wJ^5$E6Z(_9!+H(W2YJ-Eym+8yb72pGF!{`HRcZ~S;m_st7-ZR<|p z*A7;#g>Xi$gs;`-s!sc3j%+#?v(>8|8965 at wXn;P^F1lp)YL0AM<;F}><DewkJLY> z4eb~9Jh(jnr==)kVgE)>Oi6 at w%|t!MG{0bVFX|jQvhHGg_hJZk$Q^tmZ;t4^nLdrb zd-2b?q22!~MsMa2G3vfdjKQ2bnA6X$MsD?j>$&1V5yaSbAy$pv!W at 4XsaaQc&22e< zsJdf*E+to%t6|HL4b_+}%+tk~bpA3X_g#uf7spZ!+iLEL=-j;;PKC|55JRZB|8C@` z+R^>aLilma;n_NTMyrs0ACE6DU}v(veWbq3cE%6od&xh>^h4dwtUrHeh}s_F9_R#F z_4=I;!4vg*o##M5NbeW*+^B?qv{`L$+k`4z*9qG<AV*n&!uESm_j_<pk{iFWw{P9% z9n_$}U%i>@N`Hyae;dy67r-~-3~);IJD=c8B*r<bZiBag{}y~bXaKYU#CHB3<rG;h zjD`D|ad02Eg0{hLLCeZYfiu=!AigZxN(dHu^rvG};J1MfK=;K8&vzCpQq%OsT629R z64&bg;@m(!1o<{)k}iXNeUI5aIF5JQz46|7!rq at qd_B>-{}H=qG?%rHraixY at 58%A z{_l<Bl{3>`dR*cauk7<FBjt-;u6#=3#gdncCl4Rn>!l|HG+CU9kI&@sI?QJ!PBfLS zOi4U at rU-vN_sYKJbgo><mx`-^3tc%^NV7p8oho<|&lmG}dbwFVCjg);Wz$|-;<+hz zqMV-2xl>uRHAvzauT-v}L!W&=10{T>r}G(fSb`hB`FI6JnbP!huIQPCa8G<YthjWr zyK%4K{l>r3n8s#V?L-Cl2<?u-4kR|n6z+ePhe5_}3U(m9hp1yQcKz5tp90e#_O9N) z+-p2SS!hQZ266w=4trYfYX`Um#Mo%Vz5Q(vwu8324HZc5eK1|jIKCI`U-;wR)%!OJ z3)3&p1kw*+cSp<0a!>`*<8AI2Rq`B&G0<NM421J(#UFLV7eK}iXN*2)c=oX0F9$l> zy$DhuoM9H)kmLl&6#8Jf1TuC at up^~VXNnyNFM|hm5eMCY^mzxSi}6<lq8-M;dzHRh zF)yYVyWgO~*qwwONZ&En+WoG{ZWeYRIcki+jlUXX`oozVflO+=BOo^Hu0u9<H(&?4 ztKA=)>=t1MYWRTIkpB#sbIE?+gB_ at G*M_L=qTsmOnSNU?qY21=$APnO9HgIt7+<UZ zZqe_TAz)L?c;81wFpieb;1AS at iMG_S`~$@P`L0 at q9Z0VuFkOtlkAX}Zh_qAsrR$qD zbhu8zSEEGvZv3PHSA5VH*MCqp{uJTG0PY7RK<t;8 at 5Cm5TV6u5J*YFKDJD}DaDC3` z#=ea{Pc-)XRr<`JbKk%JZYS`^?7!QI{XOfy^NBg17>WN*25t?oLk`S*QlBCN<`{?z zWWdY`@dYwqo;$=#WWa6YymOENZzK=CLx}yn^ZN at 0cr!WlT>He#8`2c1kpXi~h;NVq z`=2(JUbDpfwxphGlemK%>)|pPu=(bABfvaIsOOrZ9-jm#di`kJsd4at9-j-1^?~Hp z{|Ve?;=|-HzAh6VFyre1UIb at D#`mbGkWGxqV}6bY{VC|#-*?2))4=;P at f7T<;Ku$u zaIFddLX<zvfj>0!OAucb{lCK+C>Y<H$nRSLW`6&$Ccf+Nw?uv5 at 2{}8o3PFmap3=s z$*;1QUwq>Q^92X!PknU_J_viAf7m1cY7}}sU%;3z^<C(7ALtbGp(YTIgYKe8Ci10D z2kYx#fS-p>7h6B|d$Ac;5x>I<*kk>v*Wv%80E4Nwp&x_be;12-*YuC%u>Ze7{|xQ7 zSX{5_W5jziz;LNPM|>$@&yUAihxW_V$MpKZx2 at Hx_fdecK33_w(cXr6Fh1*R7~czQ z4}TjZQ}!y}%)~@IgHQ3kv5`@C=-5+Z_+oe6{#EFSz9v<+<W3e!<LQE{uR(5lW>#?5 zIaSDcxorH=1CJaOD%^Z_7N|ENnRKDxy6)ZD`IoHh%=Gjb->kVJh-qNBUx##LH2LI! zYY;;+@``7DKl3A6+v$pGJYVF92Zu%uCx_gTBS)SZ7<0#xhld6 at a$XAEbh(^9<K~L| zN6}QF|7eJNVsxZ$p#SO70px4=cye%{(YpWH;pCIY`h?d&|Gx$t=${;!%8aY;n2qXH z|47^?PP?PI$$SNu;J!k-Qpr^$uwVO=#Bo;slKj^Xl~o;QD<yX-UCb78W=2iM8X at T` Wu<PQ&YU0v^&gpxs{w1TwFaH5_!3g~T literal 0 HcmV?d00001 diff --git a/images/bin-win32.exe b/images/bin-win32.exe new file mode 100755 index 0000000000000000000000000000000000000000..db6d5758da020fec5272d4ec737f4d7d946da3fd GIT binary patch literal 21617 zcmeHP4Rlo1oxk_Jm&t at oAbe?5kU at gb-7+K)0=A+9Nsu6rK!SpbkI7^bMkh0IW`baC z4TdObq#L_-?Y8tRRCd>P*<E%^TUI^WD0D?vyKGO7+pX=^wz3V?y8T*fPg}FU|NVIH z%}juT)b4J%C-2>RfA{}&|M&B~c{gir8Db`5%)&J~%GeRa6vE<u=36g{$Ip0TJUd+S z;>;s_^@}rGx5hKU?sTd%9q9^2Bgtec8*GaO(>=*xJQ=KSY6*6w+GC-zvT>D4baMk^ ztNC~~slRI#Tfo={Ib*M|VqVIPCCmq+04{^Es)>lpaRqUab(989c7sL4h#32k%zSn? z6ZH}dL`w`Jb|L~9YX%Dmc$Y&c8{3|R&Lc&*kzG_*s*ERWVa;1Y?U8H*m at qwv1nSJj z;qrtqs~QfaC86+Z6$*)teCG+E3y0b=8G`ER7N%Qa=w;#IP+ZCrzJZT~yz#lTq<4Oe z#DWxU!9{w7v51{eZp^Q~M&$O=y&D(NO`?o9fNtR;0W^{Ay|_r{6kIt0bTx|w@;u2I z!bQHjN<f|)=xVD){x7JF_u(S?t8wK7&@Emlkb`tTgp26rQpOvqjQLAy1t6+8j3m+h zfq*<W$h$_`S4rh3aFKoQ^^k}p=&GxhP_lw<uizs3DqK0CoY3D&*f3Z&+#F^DCpV9N zXHWKOhWwG7{J_bUzSk?CwJMt at hS|tGbl1Mut&ypiGe)RRdm4WBY{SpUw1N7{^8G9r zX3y4FT2>gbRml(m5A11p3z2{1AHlKT53ql at XVu6sa)VPXund%s9EHTbSAR6}0e~Z4 zpc3Nr?<Yw}So?)6t8(NX1G<imd=exB(<(<EBhu-IVe?}`5=aN@$_GHW2_- at qu@BZ& z5!R54H4|11>{M!WbX3%T;AG$HewYp|Y;@{D$Q^m>?a|SpJ%>fF*`Uj*KdJJs=a$1? zQwAISgQ&sMhZ!5b`~6GzAWGl(B=L}U5RrHMh-AIr;uCh6DD5Af(EnMW)x&+qrrf&u z8H+7_1gzOjOaFwTE0+E-qMq-(_W7k~hhefe+pu&xVJ~{*lKhc7$)9iWY^HxWdkD%1 z+_R01o;ZS<j=uJ1sy@{(pSlBi4|geX&r{qjuxMA32&_sf7*hPFZUaX8RW%gcF?6a< zNfULIYDc~eX9~5aX6Kd)T~9lu#kr-zKaZib|7F2FVb_1c(<1{AEv5Y%IX*YY_Sqi@ zQXk8{59VRgV<Y{LGVly~ZvR)s3YVQsH7-NZz?9076iU(RU?>3t at s6H&?&y%}51WsA zRP0$@X`!2r-t{YJT1P|Sd6;v{rp<dIzal!IEqnLgGH_z&PiW~`|EayVe5(4yXDB^k z*O%bI>fs5WCZ~Q5=_6oe6F&XsKk;mFUs)g=X1t^St2<QM`1v!8^)g*#QI<KBevvhF zY5C6YqSVsa;G0i7l;Pf!!R)x5LVhoZ$N{|*KE0HpZS%<n<OW6Y!13M}xR4ZnjLgZF z_r7Qjh$7WrZq4zAsPD_)^I-o_37>A*`3s5$PG&9{TxSjPzNh{Ce#XK~;^`l_4642S z!7zpk8sO5=6N6JJw`aNam_V0Xm at G~`cXZDeU@!yyO&DP1gNyb}4YR(tN3-+#-^@<l zGwt(~?-&}L-1nN*_Xh8I6D`?01x<hXFGolFj+Nhf`{twQ|J7f8%@}xQ&vHH(=qHZ; z=X!oL at X~8f>hZn5JPi8>PQnyx^U;o>&CeDQLJjp=AKG_x_P*vYqxdNmKd$0qDn6j% zLn?km#k*Dfkcx*y3{{&?-SBG+CTD)xeCk2uRiDF%8103f6evBU(gL^uH<HQ1Sn at 8g z+zVjZMG^0U2NLnN&gdO>Ce)rtFniTDdwr}kp2^12b%{tO6U)2{CR|kUJM=)f*;RgU z9b>zZ-{`?!1-8$Vcd2FS1(baQ*Be9wS{<%LI)v*wT&r>2j%zEfZd~`^dH~lDE*&m} zoV~1Jdpz5mPDNvQ$XUm4h-KHL+IteQm62q7BDRdN1Ytz5ti3%=MC^M;ODww~xm8fK zH*Al_y0h_Aaz#9WF~H_9+wP2IyCU&qB;A=|*CO9-+p*-fcsi9t?PR`#o@(h)(zY|P ztR3m at wzE6Bf$U&*GzOcn!DMzk)doLsJCzjBE>6UfbD9ys^B~a;8JT!zGLjH}A)k7# z8ynWIZCJf<ff%bOnu4<5<m$?7i>9-hOM6_#(-0XVDR!lJb_+AwkX;PFA09xLRPDdJ z1TP_q8B;y+dL(sM{Vvis$CGO?4C>amwqzseY)?1yVSi2|!vh@#WMia6*>RQHCfv9{ zXdw;HqHjHf%eL!Uo7UT_8(Ug!n|($g^&aH+!~4JcTJA!d!1)LkzhUi$U|p~#v at o=Q zam*Oip(vZ*))P;(x5v{mF at O1n#?|%nyW+{tyVKcu3q#e5Le=v`b|D&>CXY#BA<nRh zdy+Jl#oF=iFUt(0II}gC&IWT)t4I`DMTu0hQxKY}*V$QSeS#k#%Pe{(F5>s$Zuljo zLvC<ibZaEdd^ErIbg-a#{}$}li|y`gnwfo+HfA9kg$?E|A!3$QY_~-+F=qD5Vt=vS zk%)9M^8r~NKt7&8`GYcF4tD4u@#by`O at WA>j!gU>W)4WCqS(%Mb$28qU10pM6g&;K zKMkw>D;iffFmv!Zs)11?9U&`TENYVDloG2LwNkzll{2{Cp^$)I@)a`s>u+vaU(bq8 z-iMm|mv3rqU`21x+b_eiIufZ!mie1+YHF-!zMH7w$62NJiq%caS{v8iV7Dy0sli^h zzF`^b_AM*^A&LWasbn^tO5B`Ew=>`J;(wLy3}6n(_GBblr%)@<8tIf!y at LFKhIBfW zZtCd3QpbD^3JyrPC6<UqvnjOQ3RO at ZsK@J0O at 4zyrwG)gUa9bkfZnVwOUEM2*C<Rj zW=#v!rK{F<Zzm&T%(qIBCs^5k!2DmMTH_x<qKTPf)ZBMtu>pz+c3soj)`pF(>;=QO zy7(2Wj=~psYr6tnCBuAclvoz1PggPDT9vhst!BO^mGvXLfcctLHh}Cx=3A$-sBgNK z`PQo}Dw<x*d at U+l5m-SD))Lu<TC^6E;Z(VnSmzDUzd=x$vmWAvtN?P8LWTs=0OV$c zJR*>KAR86(aUN)Bk2BvUmEVhe2Kif5ejoB}+nMiHl|MlA$ls>&k0T#NezVFSL_UK2 z?J9qW__0RVDt{RHIPzOm{)n)s4i-fe@)RhPYugkw3 at 8JpsLCG`Of6t)SIBWtY|qA$ z?Xh;<7f>1#?Pbn-fy*ZUF<P&jntYTqQ at 5+HqqqWZxy)t<SXnZuh-MoiFSQ#s)-^P@ zHa4xb*EiJBkZSfdmV5;S(5QBab+qmCtt!!@!YNSoxKWi at 6EW_YZ?#}IW?@ul33?yu zTT}8=F|-1KwLM*Jv2=3;KcU312Ss((Dlz3QUt_W(mF|krRuz4%<ZCd?m^B5qS0GhJ z_PmOO=;q^5#e%x{nuRUiS~fQ|qQkFmVSeAbl6w3cA&p*NLXt3r>h8Zj78R30O9>YR z7BgM(ju2mK$=fKltQaIs;&<UbndV70#WJpX2)W{9>~697HD<~A6SI|_kz0#6YR8O9 zVw!5J#l?;%<5}C;i5v6T_fdRFdrw!_4rfDdED)d&0|t^(L&{(WO~{w#3X|J*zKpX9 zu68}Vf{SH_R<Zyt3X8G(xeOCK<CpSlkTxD>>~d~dgjYD*c^>5aqo6Ja*EC%8uKzBF zbA~7*&MRzbgzecj at h5l?EP;t(wh?T!-I|tMj~SCcNxs>IYx+J^BMhQ6F8-C5Kyszd z&iE3_jEB2td`-l7b_o8EDviKjVl#Q+)(t<e at p5RJi|bL4UB&Y at a{Sl43S}#C9Yy&p zyEEBi$8 at i?<>OMC at vZy;6gPv6*8TrN`fsrDt8^*FuSmR;&@0da(^83cmpg95%=Z%< ziHfew?;vqQgy8WEk5V1oJ&fN;P7pstSr&E7*>a0%loQU2O!{R&VB456kvae{`q`kY z1A at K}%~!KI;_1u$#5a-Sd=5F^?o8l;%$OmB08+i7M(2q{VM`@8S9FbQv16J{{eZp4 zj(6c{P<Ne6cngX+dd7PZ&lN2mC*qHSRuk(jHJ{FRD(X#$*- at I@SqS&MeOM?oU;c?V zHBriRMx*m(Zo!#%XbTt21MNJqqa!Yr5?i|Y@!BP|^SYyY^QI)SD!d4!YX*F0=-t_G zw3SmEF;j2E`27*cu*61;_fZ<Nh$S{+eAmZNXJeLS$&DEAm&JZdZp8QlvOIu1ZN&J4 zGG7jMwGrdHB{T&h<VK7SNTkAYH)8z5Qt&iZWIY3wKCuzwgU^%tf~}-y7kc(xTJbyC zr8%21!*51YUEPV;_MqII8Gfrh)zgMb8|6-sMgo at D@ab%YL*Rvd9X-jY at VfDbx1vK8 zSrOd*yrdINkVJAERyTSX!9Nj2j`NZm5z#|g;O{|!H8c0&%>1nXUZN{9>4iB8z0Yap zU+KbwD7+Z{uX%t^<g@*gOHKb3{)v1NFURa at RI<|2>i}VMbO|&4?<;+OQR8Hc<O#qj zQ8bm!2~ff}nVbI7QV^7KWQ)rrHHemsLyuF;f~Q0ZMdu?a*k3uUMZ_9VtWZR(Wt=xo zCVc!%);M`S=qCvJBC>_>a)D!mF%gX8rG>;eX)2!+AcDz7V8m`?GI#Bp8iKiGY*3hc zNsVJJwgw at UnG*;?T}6mrACOh2s*-EMK9YM`k>e2q`YtC|U}@8m=LB5RX|8+&Zk;}z zR|`QKOE(GqSC+#0lQ80D)UfKwBrP}{i48s?U~FcHxh6=dSg0MaRI9 at 3>}vO#TB%Hh z|4ILB*PQDEr0wdN=&W<R=(VWIT=JlF{(Dpz8s+)`m9ew*7N<=`{jA*XP^7z$&)YAG zb-(aSPnPJGA4k at e=35ug{h`cj8`b7wI4=*-rp#bF!OQtC$Cu&GfnX6}e11<RU9d~Y z?8wYZr&3w at 3TS>j8BO%iyKnWn2&}YE$F>9^lWmWuLR(1~lGw4x^xbhhu5~!+WL73I zuNbuLHXk+k%vjZoF1ne2dS8cGl0CJ_GR&WTXrsB~+7DRVn0uLd#gO?+cKo*bEyk>h zTg;a~biditVU}(j at rTXNasLxrpEr}oar^#<j_)w9@~<+>H~N=8+HaPG%qQ-<- at Md# z5BD#%*O<5ahqfcpZ-)F?(*|9a|G4>H|8f7)=Zpz(MjxtSun*$?j@&c$CN9TAoo$JE z^fDv^Z(y}`_jkzr7DG8?({I3>@q7IN%i4{`nxgfgHE7f?8}IKoR+bfMoE~w!xcGJn zbo31Kx~5-VR#e|-I<n|#gXn}TlxbP?l;Op-EPAB43$|!_l65g$cn>&lBGhC3h1YOV z;{SFJV3=Xb$yyZCvnbMjifN1+tOxr*8ECGcmqJ8K at ntgYr&#`u=+Xv(&6MR9#j|AE zPjLW>ymF5K`!X)hT5uPk93&G38B`&jEYp69=ZdtestWmPS#D9hP^SG9uM}yQwi)?# zvfQG$MW+1})6bq>vxqh(${!YSemPB*AIHU6^DBscB9m7_$^u+KuSL`-lN%7lWio^4 zL799Q(Vxqtt~d$&q?Gh?M8A;9#ULVS5V{r-NkfvJ<wzQm^z=s3kUWU!i!%8XBC;B& zmVXxn?iE5?=rwn-C~YCxQfLcFkvvXgXx at wQ|343;QKj9uX#CN*ycmAJJP;D^*W_IN z_9$bW`iEbS8}u7af;bB at V~l=cs~4NJMhF_ge-G|Kg~<KeN06h*-KE(Ngr;y8`8yyq z`4VC>eNqA-5WJJ%G(F9xtP}Jp2?9_E8mGuf=#viw;0GSiI18IYLy3P at Ia&ctPH$uj z!@nztB$%AOYp5(BI;jwPHZ?iDPAxR*$BG7z`=B|9JFU67;cb;ILu_*KU3xA7awSSM zy_Gh32kwQsE>jR*1%M`qdtudRX{A7iE=;cX;sSDRwTgx;H956+ZqPld3b5)?J38q{ zoOyUgY{S=uN%?fR407ZS19F6jCLkwZl;{acORj9WAO}G%dyDQHl8fxw00#1c8_uO~ zP<zV0;qvR0K4C+7ve)D at b&(T??ugQa>ZzCZ27L!3z0sx};BbjwwUDbSsFy at Y7e4aO zYtsu>FLe^BS!gF+j$uxsP#1YAH|X(oMjxJoF4AzevFz#^!=CffHHI8 at Vv71Im5${f z@&uh+lRg}KhSYu4_4D_ at MI+x0+Rs$4v(??Tr_g4S_)*vsM$zd;6MkD0zp*(q&P*#2 zs%h>>BB|$MA<YeE@)+$yo6lgO<1s-)_RLih$r2eZq&;7RJ-uhJ$L_}GPS-49PU{F0 z=={ea&4usU<Y+E0(sL9MeG4>>Hyl4pT~x2X22Jie%))v>Mg9z+dZr_Jtl3zNf+}Ip z*u7Wla%N*#n;-P(4x)f8F?r$Yq361(;Foiq`xZ;f(`|a8?5T9@(He4NTFq$<m#eur zeV9vt9IfWGhEuzmoW4+`H8MBQYEEmoT+JWMEmS#Lg=y`Tt8gt+xsEKTyEB>`&ok|3 zr(R5+#H?KWO$b9H(vC=+&8%EBj9d;<vppZFeZb|)?+NFm{cElqrJbJIbG3KpBemTw z*E`aF!j+ at 6AI{fRlgLMEx4K;KNc&T+9Ho6<zOI^$`AF at RE|=221nvSzEhrDydiM!x zEEl%>*IhYE`&0S4YO?uA?L97+(jGo9?Z;d>O8evax at xxMBemDLTuS@O^V0r`D at SQR zmanVk-h8BX$mLSno6k%8uq#JtKaj7h=C*vKHso?C?HkWaJ3d~^9bbzM<?E{1nvc}p z?r?1tU!vkPheOkm-P)79ld*jcqGzNn+Cp&Whl0L37EONd9g9Z#Z~?vfhdRu(l%k!q z8}!UZ^R%R~+(MO7G&QYfqEViI7wc8idnS8S|2ckkn#Hf`7Ua2mL$EqK2d7@=G?P58 zB|9s~BibH~)U3`&YH7+6ZQ*F&s(Z^hX{X(ulB2w_J6~5#I3KBf!9`S?cAuB_eFfSd zawSW9YU=Zm+Hbgs(!Tw?v>zzYKIBSP+E?ZywQo3x9?M||(PP=;LuFyFwh%h=!-XEp zBww`Y8OHK1hvxKS`Pwtly!-X4X+D!Zs`q~U>@<rH>UQV!_9i#z-7>8g1 at B4lMYDWM z!q^W`9ssL&9uy+zhXL8jLCm7LQgto>@*&X^K;w*Dw{OVbZZtK;7p!mOzXRcg?N0h; z!NLPhUnQEts#JmI&>3j-`bF|6oZHUoI24NBt7pGO2O%Q|scFwgYF9g4wmRG=*LOVi zlL>4oqDsWHvPtANL{A|{k|mOmk;uv92M`@pHI>MR6%GAY9+`X+k=}Jng#P<USa50W zF9F$-gZ#H770)y>X~8tT%1DGhgr^5oS68)In1deVMj+HmE={MPkxxrf&W-|PumJfa zkOMj1_*)={bC4&2$a!AZ>tB={vOwzk7LZ&&3-fYnQ33Mi9B*6=M9;la&UHZKtgdy@ zI|&N(6ewxh3Xn9AV<?Ak(AYMPPvaaL1=l~lipxbl24omCl8dP6-<Qxn$VKRXpP*Ge za=uJRPQ6|RQVEcpA}#y{kjIhJ_J~7x$jdg9G^Hq%YqzfH<v<`<$dEL1fK=g<?^lVx z7P)-_(Yor9qu|!76-Yf07 at _Rh0>qz#BovqH)q8Ugd`O+{#A{NL;mY|4Xk6{K`XXDG zOPfDMa*%ZGp*e$SBti#v+g0nh+P at 4My$3)Gs$;kEIVGrS at omuLj>;dBF8IvV<s*>@ zuH*`Vcw2Bb5Na!zYoX#|47&IPloif?D?zglC8Sc;bhF~3NFsM2srLX9xeo}f7urXR z{Sgqo(~~rZfsj7eo)>^naFK5*gg7ME2#_T(#_bzFQ8ccF#d!H~2pldlRlP)XC07?9 zjX?C=D|OjGDj~=1;X8>&&ApQ5Q6-0rFxX!r7iy2S^>m^mMUtKP-vuh$-P1<TLQY;B z4AG=*ZRyxHO__)%V>;bI2XJ&IgTsW1Baw>gq*6og{OCZW_eh6bc<4gB81$U_z|r!t z4poF}wD?GlZC<NSYp2J!{95NZCD%n%KU8B?opU4?Ih+`<)9T+r*wP&eZI2b=(e56* zBZgyvc&jW9>p-A-#f(&UEWU6_t&RT#myLJDAQqNJ=<FXPwx`5dj7Y+6rw`zAA at NNd z4$tGO!gwSRzbDpC<z#5X+IkG?JPU1cpwP}YP)KGW`GH;SqDA;GV<Dj|Br_1Xe#6?< z#x)Igb4$a9`X(IuTHREq&nMgRq=$20A2#EhqCBodHspR2AG$jhxibVK3;vr1z_Gn5 z4wC4zAt1uB5_$H-ZaMwGCqPdDX*QAZ7=kyh^0>bpfzPN1<9`ysYj&!GsG at h;IBw8| zlT>7NZUOxoklq#(C0&s_QfWKW(}wRov#~CF8xEr3teLDUe#f)7Cp=1RfyBo^<ixAp z=l$Oa8l!^<cK&~A5H-U)1+T=@w~y)wPIb1%BHi9<j-fX9-#~<y2opU27=jRN at 2H~P zULzEeQ!TY}h)DoWOJ#Dr<vk)~+c2%&_OubS#JeJ$F>wq=wh4~JlBdzvJCj|pq-?3v zSDxBY_8w2C@%$eQ;Y!h4wb42M(IWS#2kK0xuAF~hVcXOQn$bNGrF|21%A~KNUSD|+ z_ at g`H98X at QWG5TTUt{(M at 39lN?~2Cuc3o*n)@w;4xp+C9_y(WTr^$1LL)3Mr_aA?# zai%>X9G>rF+dBhlF=rdT(g(5+cn28{{$dUjr=c>UUpOb$L=%aVlWupqGnP)q5(^jD s5v^A}n&?jH*4nECs}?$Jp>oxq^18z5`=B0x=-93$&h(=jL^|((0C$N3NB{r; literal 0 HcmV?d00001 diff --git a/images/bin-win64.exe b/images/bin-win64.exe new file mode 100755 index 0000000000000000000000000000000000000000..98bddc028a5f0f95d155a970813d489265a624a3 GIT binary patch literal 44557 zcmeHw4}4rjwg23^yUA|a{3&gqNDB)M5Rj%xo0b+^*fg7VQ_^NhQYfXc+3aqb&`q*# zHf>sYSV*hHB^Z#uico#1yeDe)Arvf{QnbZCSn(hJKwnkB)S^~J<cCOp-!pS&?{032 zkI3`){%}9d&YUx6&N*}D%%3|mox6Jduy6<=ocJ3X6JifSdVKQt&40Edx#+Y<i^PMT z at 0`BJX!y?QEghY`-bAuzV=~<3jfA_qds5!Em^azi?d|OL`Wu_QT|LoQMPXq<8M6-7 z2@(B3i7<C|tr8tVybH=46K9Jlrny+m08t74+(PWqajhBQO{F)nauGm}&k!O{h>t#C z$Z`qcm1xOF#wa5m4#q`=Xcgj4<e%(w*eAryNo1}_#rjjoxBCSAkZx4oae8<~u(cu@ zPKA+_z at MnZ9~Jvu1Xzzx1V<{8iqH#l2p|54ZWjKs9-nCSRkZc?66#Pseu7zvS<&sH zb)=$G at sqY`MI!1%oSH?1s83XmRMa-L5EfOblq9)l5nw$&;Tx$)#id+gBevs@=*sbz z^$@>#)e1pH6~p)=x^oH0eoD-FRZAq|U+H%j{)p~8{N+5LTd+`K{&YHm-S|5Le-#py z^#i)<^CkQwHIBphqXuHL59k(EAwh at _ki28~BRXjTgqa6)=P!_utPg=oA^LS00*?61 zd5agx_yv?+0y^Tio|7{H_$^WTJwiT0Ov#W}We7L|x~j^>1RMs5sAReAoSX?tNZLEk z|3V7{23}g6cAe!D!k;djhoE7|B at hILN`HS51%<yrFz9++0<J$%Fz7Gyj-E1&&_5-3 z;EBcii%;7jtp|SP?bj{)=iiNutzLh?^;e{m=N)kUITItk3ilTXqF8Ec)kwP3s3DFY zM(WO|Q<ptLE;;&G3HTq_H-=}l23=IT^eFNK23-%XkilaVq+P$h1X)W)i_r+uu5(TU zhmpQQ=-%zZs8;#_QmaOwX8Hc%M at ZgiJJ=rmOz~+x5r~v7gsy=h*B^dMfz!NhF^x&Z zJ3Aq>_~GEpz))aj`*p8PF;WXCFpGCKB4uC?mA9z)1Iq!VZ+I2J&L at j+8!3Kh<VY3e zWP1#3-2kH5z*LP4JaPzR0#rweB#B>$nzdCUj}!u1)3WxmOPd4Ny>usl^xT(WhQLru znRn-J0)s#PW8kyJJHG^r!~$vOnU$ajq}REtMveuFzc~9zs2kWhl3Ey8vcGu8jVNFs zy(}0+nO`~Tk+^=~9vMYXHumGd;4zu$R+Xvm-_x$U5UqN4;8mk|M+Agv*9}1I94X!r zgunx?A1zarly)V6mt<=}w)5G(0#e|Eu6kmXp8fc2Qsddw4A}i4#79p at eSyu+BT#oV zg{ldl62=b30)x&off7|u!pR;WtxC^rMCwpsBLt3>4gp9n`{RYkJyyJ9iY$-o7?8-2 zE-8M<T<U#)*NzdGamSM>=Z=xSt9Oi~rUV8aH)PtizkkJFw!wI$03!NY;m#-j2F}w0 zIfJefP?q$<^YFX#mEs+ at P-$nswp13zHF|jw75;Ys1J^x4wQ$8%p(|@P)LglL at LL0a zG?t!G?Ee-?IkGjYev2P&C~G}>SG%t7x~h>!$#bio9Q*!}JP at W`OHj>UfhcLaogaTzZ0r$us2Ke{sy*#G1*v4zou5Sl4D!AW(iBkyqrU^i0oR{u)o5{K5ESXTO;E7v*{WBD zRvUrHlYxCdcZ at y^y86K<sz%@}>19hmaIL at iwCxarikW)az&DK18$se9>M&MEe$y~` zWOS#@;hYsn&p2)M;AmiQUtnOrdvr6<OaAo!Zw4Y?59~Ya2&7A2eh*k5a5 at z)SIrvq z5QAs_2-tMtLHq^=OB&Lyrzn;#{ThPNU!$mluKN)^ax)ca at OxvW+g1be{dH_?7$tn< z3R%LBA~@ihiNcX>Mja4+<W7*J3**G*FH_M{PDAJNQuzVbFHj_UMz2JzQbRuS#Ou_? ze4PF`(j}K=I{iLQZw3QzAZ?_ at vYUk%*|K2S5Q5|?Ss_(VKSIOi=pB$1ke+=EAlg## z&ifFNeTMgn{mX7emeks1w^QI<_7MbqzhwI!eQ24B&?}e0<wx3w`@RXLWUbNV%ry00 zYMlQjk?q4{hxWiJ#*Ti9^H)84WHaE5{~-4i%I(y-SCKk9-U}L;!1<4~0YT-L1z;q> zN9vLADA_`3u@~G14vrm}pFvCZpJMbW8MHLSO+Zt_mO37J1JyTr)Pt__cNzU)PB$vR zedM2!I6OQ|^)tGKt-fEv=$D8B03LK{pcr_~OqEi-?IF#sxN5(}Z)o;UE{DyB7CueE zl0T-N38WolF>~w?`6N(%zsbqkj;BJmH^m<V#t8$jIZ}nt#}X1qFC4<GFtGEL)TpLU zpE_{V=${dY><^^<-zXtLza2XS+}4)@>8sq-f$a?p{ys4Hv(Z76>gab#T9&-#z#uvS za;Z|9aRwlHR at xkR_0-hjK;+=Sh%sme1~+`OMEec~mXkquz*UT2de8velyT7YdrZu# zMvfkQgj{#@kFaxK at NsE*;yQw1?Yp2jK)nf4mb(LkrC(K9Zj+{!KU5zL>DiC00u78_ zGxkd>jbfA at 7(7U67^8jEUhMFY>rZE^{QJ3lm4S3&7(>wLUN{Jv2AZ+ItUR?@wU-Z) zuIWM_5qyjY(uHL-UJ=dchX{d at tGr<d^Mt_QPt<(j3Yn*&tUNHdf0SH4kZz!4*K6qL zM`J)p-a!0>5Y^Hg&p_|WEB1rQSm~)$#KHZ92 at F1S1-THqPL!v7bS1Gv`#qT)4}*Nx zL*>o(M}ph0Te5n6DxcATNX^oKvG2MiH0<~Nx at x5Tx~(%Y%->4P-22DXzqFsq;V*vp zlDy)FYi87;y5<%?JQ5i48#Ak(Jn9S#jFkJ+zNvMC`|6i`Z;Qw8 at VOh7Jf18V*k|~c zd at uR$EL!z%&}Uiii!@(?v&0ceVPKWADLqnp8&Cn`@#`*-3O?U{-8QJ#_Z-AG<<$>9 zS%1#H;)j<@B at QYj%$ZeBA1%=K87WT(rq&D|T)kvp((MSi>z6#4oPuG at zvSuU&xeoR zN=@LyX<r#h{PUrGqo<9xU;pZzBk<|6*1%w at tfK){FnCQ_A~5(ACMJC|0%=M~BPEa~ z^uQDS`{l%?W)IC%#!6pYiCTh;Xxd-qA9&T7@(#S}OP$g%)KIpeW{;1YJKa*YSh~Yl z>26Th4?YtZd=0H|^hLbg=xn!Bwwq-(KX4neb8SPeBT0C{s54)P?DmQY)eR8gPrDw+ zixm|kK*b1B8P){`<7KUNJ4YG at qg1eXS)u`H{SAYA%eEs^Y5^54K!poZ;noGxpl?VM zF=B}ZB=k3=6*1-vBnV|MJ&5T|U}*L}1P5FzA(lG5z~G_4Iq>IK^RN9E{7$)cb9(N* zpxF7FzA5QtcTsFCb;)pG$^SuL_yK^MuMZ5(z4Cc#OxKhx&GcUvJ8SmP_(B#kj-(BT zgL+A{yrrW-8g7^TY|FDp{4j;8|MbG;#QGIf)X?nrAex at C^U1!u(zQ-Zk#9-&x(D9C z+~X)Q9N0g#VQAqL&;*uzzjy%4L1PU=XFmH&3a%-uJo;YhKL*}#7w<R;1 at cp44;=89 zQ7w!5bN)Jdvy1FZ*r7lx%y3Sb5OtUjk8VdogAp&Q9C)Loc*kCl7k at AX7T`5pyyFGH zR(~$FSn|i>f$LD1^d at KeJ^pm9yQcV|V-3cy8jKgfq9HvmwZ8ZRRNVt_c#C&D3I+pj z_*8j|cSeARIt`94%v2z>W)BT*4dhTqM(1LJar9%OFT#S*@S-^s1X^nbkBvSH)RCzW zTKsUGXvdg4xDVODD1eCxI1c$;usMobvxj<Q=J!)fGmZoxQP)rLLv>=u$ku+9kyOdb zNPfT>X?}8~80qOcOp>=Q4p1q`<fMDRb0|9-RX1nrqHNEQmi&G}B{fE+Vn=_7{vsQ` zDHlFMuPU%u>T|GG at y=VorG5CwPZ4DGmumxqFI-A(d#JDmOD{BfC&o&Dfms at +_-AA7 zBrvpg6q8(Z$)n|D#hoMdgZqki+y@;4Lv at D(>9wP1znH4SH85HMOGZNy+O+fy*Ac9Q zP~1EEI|pKE*C7Z(hQWo6h#YX8iFA)sj2v*Ch8WolgF+c)O1nOXx6Z&|-3X%ps-g$S zN;i;pLxt}JVytu{fU(je%Y}H9m|$i*R(dgTqrXPAwGRi<br}C#S3(kWqUayMS<b=q zc+wHrGyjwSKKHJ7lc)`4J`{YBl$D~s;~MHa;$`co&uGQlRcdbF&)*LW&ZhTa>MlS| zbm%V7XAm8_i&pfC9T<N7B(wq6(9LG7v;&F~N#$7SGDHWz&f$T<-;9+u149|SgWnh& z8!K%g+67U7uLR^gffj7*t6r+FdcD5t<@(c~Xc#<PzvQ{VpAV&GVv>Gc2^GL~Jp!IC zlKeg2zS8 at 2`w!q}dlzsik3MZV0F7_Y{!)%U5~=1_fq`Xb(0WsP_68IE;`)KVjHMQ0 zs&oqas#U;P?RW5*u^HdMbgJ(a at IX&cm`1iMt~%24s+zA>J&P<SA<NNxX^+AEL$$`> z<AH&tKN5X^IQm)SIN3`z7^<PNm!1Rwh4_^0yit|qgdTM51S~6!^i8|21&ATWCG|ew z+5}Mg4TiKM7r^T+{Xkz1=UH0}HfcF7&Bi=4?eY_1DCiEPeQ=7>g#@C9{3WI~=aB53 zPo}1gm43*F=mFPsVCbPD=8TrZ!((S&2n{JL;_xgEHNJx3+d14kF4XiZ7~jsJhM)4~ z at _&Qj+d0&*4#(pcG2KI$v5}sqGW;Wkb^2M1f06M;4By1?D;$2B!)wQdw=;atIJ)ul zmvVZA3aJakBluB}1#A2};oD;YV;q~-6MZ?DOhqtue0_{uqUc+jRCxaxDir+ap7cB1 z>uCHt;eQPatnTbydD+~{7FBzj`npq{T`_M}MWwgAEtU#<=X%SNvCS3U%5%Jxc;?D~ z<J3;{#`>Z?p=2!H6A7m}d%9`+FVz$2iF-H4lD&jDGwQ{zU|;v9?w&2(-c*k_MZ1L9 z6C`mJc*&+`Ehj5}-YkA?ohff`=e8L5fVQi5b0nFnh{oe0-qXGD>aK*!f85{gKAGg? zur;V)UqXd4 at qh7;uhlBN7yCjFhJ|=33wI-M(Kd at _e5@>@Fv~d%av0 at s8;8Rjev-on zIed!4pK<tG4&713cNT|>I9$bH2Zsp`cW}6i!!L1|t?%QEJH+8(4qxK%H4Y16EStkh z4lm#^z+n at I8#wIXFu~zA4tH>PBZs$gcn^o4=5RNMk8=0~huLMI_<tvxlfM7m?d}mZ z(debINUA3pi`Ml=VhQT#0^#mxJeCxH5i63hSVL!9GMwBh>Wr1KRBc}}8S733lRc3b zw%1qKarIGApM`DdNXEiZAjKyMOBo?DNtwkXglSHNlc~N$eRq3Ljrg|2Z0$|Ox?0eM z*7UCEjK?S at eoiSZosmtoJ?LJASYtNygrlq*=8^ZBm-NMwTZ6G=drz_}+#QKYLX_fz*_4Xch7+m2ByipGG{TPw*U;0msV}jjuRB78uIo;rkm6^Qa%m at 23dh%WZ|UrY=0Qhu zEVZ_~Lz=}h6Ld>~{{}~MJQhocsG}v8?CR_er()VXBIP)4HgTha#eh16DiGo(jgdt` z8AT|B;h?8G*58>DmjK!rOLc`IBDt|wGy(4H?o7qHH;ZP9_q2uDQ5f1(4~629p6<;u zU5Hk|y|Gj%oJfRHTd57VDNJ84G!CaaV#y>OX$XZQUD0^A*n(JB at 5Yc6E3Oxzh>Cqf zgxcwpix4jh$r{D)5~mv>jF6i|w-I7ZpE5#y-4a)6hTD3QDbZjm4p*7&iDYMYs$E3Q zcK8-fq?lb{6cJkAV|K;5A_>&NBW7>s#_n)jh;Ny_sboCXO>GUucw7H2u4`IT*RWu| z9C5*V2KfJH{bh~qko3;;54AvvZ$fcF#*dsdak_qA7#a88Fd?&dkndRF9Si)IvcP%J z2CH#+Xq6lfxA$e(d3opgpKk$reOC4V#nXgvoPsxOOr3CulV_Y_9#EHccCXIG=A9}q zIf};G!+mi~w$$Y47?7CSZQK${L}<=M=QlElL_(s-qVuIplIMqL1An1VZA)WQsG+{O zB at _~8NQ^%VL%H60{xdA_In;uxf48x6&024*x4NPlD?sxrE0<KxuUzCUkM$>FNxWQi zr^4}bgn`wUdH9R<$0{OXUPn(?Y+mweOlf=PB@<n3eVy^>yya`_8~pR6C(PZlsCr%s zYdxDRcrLPA{Y=)p!3<$WELVx(1SKwqJD-+#yz-~7n`XN)EG6N+#$n_|I>JfeaJwuD znPBGkc3>)v)uwE6r%NU}6*a}3?k~fdPWSWpbvW~L$X)JypeB;)&d^EmPWN&wpXM2B z at S9JZz_0~zcc^Y%ZC$XXzHv>csjjxM$uI77o$G;_J(;)1T6#k;hx0pKu>YK_gcb2H zUR%tYImKD<IdC*@$tNM^9Jj?mzaW|)$$v#MDe<i7>uQT7gJGP$kKwHYY;I*XGp&5| z4oUAbc$*XEZTS~qQO%s=6;s?!_cW+DHB{TUrloFOi#X(Ty_?kY1giq5W??RM{fe~> z&R3XajB$H{3l!!;#*}!1)e3VFV`h4S3l+x47_TR|NMULiQ|{q+PqxBxm$FZ#XLWyV zZ&H}GjHvcB$2QiYfPNQkJDYPB6T%Nf9V0FvL>&+-7_pQPD}Y$Zhzkj^5{LjJe1vEQ zqMi}UJ$0<eDwgZ__>+~wyqNV30IU*b1A{?;^M$#Z!F2!^2y+dCtpFDZvys6LfaeP{ z$Y8?L6z&)1B at Fg^nj!$3B<Ps4-S9L;0XH*z1K>8mEesC>?o9}DEyH(GI^atg-bLx1 z!n};(`vFG*uVZ*O;KjncoWVT+mk4t`gChW|Q0yxhK1eXiy at BCF1f$?rGW-m|DEU<k zA11h3m?4Ho30^47R)&uO?u52shF>)be}(fuD7NWQ>n=^Pjh$HUfCp at IoeYmfQXVIf z$0U2=!h9d+-sSQ5V{LsKGYQvl!u=jkL%27!Jc)&mj+P!N@}D?ucXrx}WKWk&y_QqzsMJjB<;?Hr<dJd7nf%+C;Gjno`7fi6z;V at yXvjsE)vsCJ*w`Q(A?i1ZmS5gdCmi8- z%OpwG_LS_IobB<RFm+cu;pIgQK}Fc{X+Y=%xsOwQq3KdxA9Zg<Ya1HZtPBNPnuK%i z$4G*dzNlI_hb0)iw6WeV%p0jwDyj|CG@&b?9<hk>3G)s*5aM(@FbRavX0S0oeF_1A znl=80I$?gBG8PlD%HTF0Lylr8R$)8_339q)$W~&=e%9 at b_Vl&IW5QA5l-(<XPWOjE zG|f06w7P2k;u=w6p6=QUjHjVzi!je{twx;s$Ux`D4n$l_CF~Z(irg%7-3ZL|(7M&D zL(Mgp)`e=C>S`8XmSLJ_xmICbD|;3A$Ynjrs4&mw)-61k<D~j}6}FtQrl%#mQK8Op zk=4yPPES(|Ye1W0QTY71jC6VGlF6QAV<IAZ@^^FgJVv*-V=YOT=W)M*ew(P9V{y5R zD9pJ`KQ+S}?Wcl~MIJx?mro<}n8!RyB-Ub4$<#A4EYRet7<r=ZG3RscnF<kF9q!#E z%ms{{<yk=vrkfY~zG`VPj0m1}U0qrDg|79mq+<^CBy0_|=tZup71kkUP?Zr)>2$bp zzJe)L!o^|+8FQP4L!x+mb(!b8z6lm5?lR1n>&IySo&Xj_sm- at bkX)c4wlN&pD$I at 9 zTB2v_kPaiYgW9O3PDY?(0|K_ani1&BfPkeoF#??z5GYHW5$LUeK=;(e2y{<CpzH2t z1iB?4(0TVTVpt;3fhHKSOCr#PzLycZC4xH9Bx6Pt2D<h#=8(cb*%V_AD-5*lW6Uvy zfx4R+v)w_;P<Oh8F~eLL)Q3vr8{#Cig*Mr9&Rh{sHHSB2IFGofHUPr`6ecP$C*K0J zs=jm3)k+R0i{hZ37ns+%rl9rD_z~)Jl_n?>#kNV0d3!!hhl+#tlsohP2|1l^%AY-5 z3O3eb^3l|c>EE=2NK><)&*w)Fr~2pVK~pRuoAMX(NkdGFvZZHun7i`_knD8R at 4MXQ zR|-m}P=Px!NumZO%)JFPb((pp+Nl)gV+Azd5GRDzw1isfmy5;bLj_+!9&7g0fMH0O z4;MTKEGdL8B(iCFxEJ=^Bbm`0O(GjQyYLERKEl`%Pjg>eGcVe=3G-3L&n!G5i{SOt zB(c>=n+R*s*#vvgkCX3zjp at oUIf=ImbEM!GQgo#_C1;ws67Nn;HQ94c!|5j7oo*`i z38DJcH7n~v_&=DTKwXW$u1WaJTMHvN+~$dey22YfBNze-)ntlLk+wKS<l7lz5(e-c z3_A%<#*ybv#^gzgaIzx`rSD>-8%SF0muuJNM;Ti{*l<5%KgQUpz+%6{yqn=7f+6zb z43_|o^!9ZL^B%^W01QnV?qzs}q!8vVhED_>Zx2f~Kf$<}!1ZkI?h)oE8S^e+u+t*U zf0ouT=gcCKSXU>8iu;(Rj8T|63-eQqJWFLnbNzH-FYIW}DF+4uyJHx(K2umMhpDAv z1{swIWJ^NZBzQo>9#L$o8T0<aQPf#+aH5olkkjd=bX}(_>Kp2GrOq%NMR(vovUpa9 zBORUHa7$;Au2l7U(AeILF$lAN6xqdT81(Rlhc*#|>tajY%qvn8Z>NVHv8AVZYgb!O zyd_KnxS7xCZhq$gQ<)5&Zcdu&X~wR7V|%0AEepqWXYOH{C7xQm!-XU8a<r+=2(lJ% z(h1ro*(Ecl6zxUPb)o$=Ej1y3J>IXdPH?$!o6Cy+LgnV|qRiXTg{%&mD%26?MY?2K z#yCc%ujq^5qs27J*SMMnZQsMDzi2v+`oX at k$*j=UEw~LGhq<yyO&QFBmkA6o=qUIQ zf%RH;0iE_VS25@=I1SyTc`<`i3(hC7fx(gjyrSc!g25Rc>TMd^RR^|)u`>&{6Hz0B zvkK^c8<;@`y#;CFcnO1L1w8~dvFhaozaX%g!E*~{p?5c17(B1w5T&kVu%h5%0xxB- zvS1Ynx{Sg31qGCM9Sf>1m`<seGq|`QOnKKcxU>KrA6_aL^bv%23TEXmc#MdzWN<~n zAxgc9i30`Q1cn%FD7c@%RtAFwza%isU`xRp#Hx+Kbp>}37-4WjK`RkQWwn}fTEz_V zqdBN!p19~{IL;L?!8Bt<e$YAHGjUw-I39yJ_c3!zQ57tqeWstwB$Ur=&GngWxjyqg zR at 13`<{AdsXa0#n_L*xLWS at CIgEN$OY%fwX>6ywquH#hpj_Vm@?-*bu**kVH$lkG& zLH3RhFv#BVK?d17ZeWnTV~_>0cYKIJ_Kq}z>>W2U$lfu;tk^qlVvxP#!(2f2j$sCa z$~$gmaGmmwTNrFr-tiF@)S<lNRtDqBJ8om|Na$W;oHL-7&D)Ds!5NO at Es7usFTkV+ zWYc*(#zaF6$IYN{8|LSVo+D3brmbDtix=kSSrg%*ZGPR0enIx~^lmb~f88y8&73nc zqe_kp^NU5VN-g^FtCh7VFu{--=#-X*=1^@-L&Nf#+KaJXHLZFEmEZ#W<{3f!%C#rC z$RuN8mO;Z_E2aFB8nio5zoxmRW=(A!*7Tf?eIG!|?7nX7sYiulAH5c07KOG0nx>Yu z!TL2T8f!#H-VJ%vPlOpFZ6a?lPYp%F6Hn+j50Uqwywm0I>IT*y>)n*<Nr=2OBTIm6 z=}cju%Da(KGd<BQ>qOoVGxGwxT;$!vU>T*#@geWSj4CGzg&Jnmc|;`-Owh>HEAnpU zgi4~#PPl~=s*!+Ni`S%5$<DUE6cqXhCoQHVxz?9=E2EZrwlsJ2Y{6=K6feGcx8<pU z+Xpk~g3lLuw=;TqmOX&JBkuuBE6h0oPe*eqTHl at MONqQY^D3m3f)d%-my+1K7`skl z<%_Av`zRw at MR87D<b5oU>MR>6@*a}a<8=QS^;Z-MUb^B^kzcw4q5#wraAF9+sm}bJ zTTqR&F(HyCBJw|=E4(Pwt4_3Z(v&LygBw70T0XjEXa4ZF5ckqjFl`ughT|BvqY{&W zvBw|`kYo at bFvaPVKmV3AvKNP1<f4ZAOAcDqIKv2GiWiP<?0xSR`QC8UY0y%p<J6PT z)9d%_qfT<PvLwB?zvQF^4sm9rBNo|&$!d3aV=PKXLxgd<VNfZI8<Dpxf%!ByNn?(2 zH|8g0iC~?^lo at ZJk(DLZv?vUQ4C73Lh87ElW^bHjTmm{w=v(TR3*!u9jXput62qIq zrW1{?LY9Mm&N|zq-|}hr#p8677ARgly)4jSl3291rz;Uo#;{g}qc|I5nHPy(r$J?M zyk{oLj3$$!LpX8~xYsFhb^UN_<iHE5lU|GF5T_Ux%V1oEDNEoyDBezGGKANF)j33( ztAR~)Ka2h_iEhEU95Qjgl6q-4-UpHWis!k}zC^qeCrM+WL;|N;P}9A__?BT9$0%<& zLI9b6PIxm#30oH492drSjHRgfvQA+<B?-#9h4Ed9JF5)IKafbW7?Hgj1;P7FLLL1v zwi|leGr-%QWZd&45tBq^etjC^ebanIA!wG>cd`(3$&u(W+AAs%lwSyV-X-{XFQ9o5 zL}<oWzD1Fp7YfM}N?F@%#;2r!?acV&Gkl=OVhCLNukXUm9q~l(Hq-|^5y!bOtv5bH z=mSWu!jxT~4HL%w<tU!x=0n$3c6R&aYTG4!I5;JYf7y(B`YY%wTEVxHd?h3g7a3n5 zw^)F`%657)#(R&kn^4yf3L87A7%*QXqtgup^QjVd0Wdtq)li}0Fyiy}1Nj%E&igJR zeg}&B6GSS!kXQaZVt5vO1cm<smv0Y;#_mVKqxuCXJw6G3zi>Qm9{K$?u*b9L3B+3z!1&S+NsnD5Yp#@a{t5)kPVh;(l^h!1UA!IWk0bZl?^P-}-9LihCC0cdPvc{<E_QJp z?B($L$hpL@?}Zw}l6-{8p5t(eQ-}*f8 at u~(LX3|LhScG>q%i6Y<0!N{%(Q2psC2DG zo>6SLzUN#df{5ZD25xCjJZfdW*jS3PK0|oCK2Z}k8YH_eRPj>0%i<JUd!kPmtEFNl zx?=b}EvH-%qStY3&~A?P3*!z$4%U?{d>MyVf&RQ%T8TTP61NkNDzscQz`ExV_c+`^ zA3}viTU<r$%Ht@}SRA-RXL+&0&eT|Np#IfZqj-2Vo at ziQG^zxrl_0xb+4BZfTA5Dk z2=|5}bShIAm#8G6ljP_k#}=cBh9HlloRgN}d|<q%O)fr!<M3`;0>;83F))l}q0X*E zD8wiD3V!`p#$rIm&SoTx^<!hcCd~|MVU1ClWtTw*4)Z&yf3mpp$-(??vI?O?)CF(G zI)`e)6r!!>-+K3KN<W82LOYQ>Gnjwdh@^44zk%>V(i=lms15Iim}nVuXnnyF96`@P z%hX1tE|5B+Xv|ZZUu4_MH&#gBF+2`Y>4Ool-q#3i7GjIvM>_R)hQh*FaxP$55Ww4n zae;zoEC*?8hBQK??^&B6jS%V53>@9s9l~u;(rTdyDy9ufYQnhi6EZ{1Ow2wYP at S4z!#)t)-S?PG!v?IfkV=eUq%vw$(lX`enZuk$tt#nqh35kbMk^Hxh4dy=Av4K*T)_yF z1Q58HpjPFlnMXX;8^xj25VlhzFzqSIV8%EK6pjgIO-Rt&*P{t$+X*m+W3Lu%^;Ay7 zsvTx|VlDcj|KNswMa4YzFW%X<F%ltw0tL;dO?<g)AMH%4NcQ&qqUyPzohy$7P%eti z)kg!Eynpec5a<$-xzaQX<}+&%JYCsThl at z_@jLeBaX0zR3HS0%z4c!KZY3^LZS5nF z8%nhIWscj<ce?X|vTx^`#<=Z#GqXQsI(gsC%-yJRxvxjZn`fBWdu`AtXCF=~mT$Tp zXmp8qtlz7)@XV47g15a)Zw8aS8<tPUlS7FVmQmk*4aB*BjvqQC<Ef&ED9Al5V|?2E zd%}Ah!)GXagCP6tjPV&wu!{*q)?-XF&U8<o;&7kh#s-{Gf_~mC!@-IvQ!c~`qoYhv z#DNU~XECDn({a<D!od!u#@SO1VDepp65P`b%6Gw(_e>$Irx0uaxay}b#?Vs$u*d?Z z5IdYUka=7>PhlZA5p~gtDzlVW%m6r{&P&DFQz<fyB6xMoNOh6a=^2I+oM9OC(+OXC zIyldR#1p3*Q%IgnKIx<^V5X(85GRu+*fjtFl}J*bG95}Sh0Ix0a>aKxXM&=n_o?8X zvA}6g!%<{`-g0E0g?{;Tl!r_q3wK6^anV#|DB|grwwvS1*bZ~r>MY>Q3K*FbvWU;3 zE0WH330h(*ua?0%3#InwTEvR)yDJo{DQ8cm+V;^%&on^QPgh8?*WB4g)%3M_>!w@| zn^jCP)`Apw at l{Qy*+eC4gaQzVt$nEzfv~~+Ojc>N1q2df;zg{hvk;iDESv%#JOM>m zl*uQ_&d(x)4vVRPByCBBV1s3;jH!)P*6eb;2bN^Fqs&V!TN1d;()^;SRI?W at MBBK? zBD!cQmB at EGur+5%n=a4JLW#B6)Widgal%HWTM`--xdpW^r*2Cw-MaFWSLbK at zgs)8 zM>}yrwoFoD($9Q3oIFWN8-FP(#IJ#>KsO`kq?ef2*PEPY at 8Ns5_RdZA^rY0Gu6do^ zk$7J;hF94N9Ty^VNDRF2KSa7y71+F&Q5+joahk1Q5LEzX$q9>wk`!L<gJBB^5C**z zjfg5CLjOxcMSD|GjAts2p2yU$bB^tXaq%YiXEwPz92*WgzG<v-Y#YA!-g`gcIHAJv z>1!)u8!!IE-sm&8UvckKj;`w+2aP|tPycHD#qRQNI<~s++2#24weEHE6Hi6gpV#3u z9sAtvXwmz(3?u&a{8flQ*8jj207mlv0AQql)olR2lAn?(k2(t0IX1UD3My`WZr87o z at L8GVnf`m+zq-Ov at cawk{OMjtp?m4Y_18E`+y{Sh?-h>A-0ME=C~%+P2>!uwH3G`L z?iNSEJukZFIWBzO at ubnd(mkiX at 0P%Ym%HbEbWMw6 at 3jx0R4K<p*Iw`VmJCy|WsZB^ z?>^`_@%bO#>o_FtaeV0gKf3td_4SVAunfLz3}5Lu!(HJhS@)GseZ=9Za6J0{cE?F( zh4GcHD;!t3+h6%g*GC)`?p2Nu{<_ at lj`Q5 at FI?<6!9DCaaaFzPf{!%7MNF|`BCnZv zx*>!$-+(`CY>UsOiF+ at qjNI*==l_=lFu9huju^t|FPWO}o<?_$;=%i$dP;mU3^3>~ zQm{_fD<X7si5`Cut$(1SmA^vh1&!HgyYwtCDyc7;SySY#DJriis;ntmyt3$!G0l-b z&6zjN<(ih~oHo at lt<co`^-H*hHGd83w{8vV^fDzb^M<{W^{Xi=0m(E6dLsGgeEKCA z!?S$+MI{{jpB>;(0y=a2PeM^kOP$TwUsv0<_4Ga|)Lx at JtZJ=dMCt4VZz9*ku~R{Z zgT?C3ZX9sZ?DUZe+NSh(CgrK8t<1Wa&P>o^7S2aVF(if4q^Q;5t9z1I=GqiXYCcLS zETif at 0IjCAMl5$k6`hp8YvxQySy`skG?#rS6r1o>T(Mi5y%a6Q at b+?JyZjH4a*b6; zt!)O#D2|g%y^5xhR#mb5x=|em(M6=~9m|}0v%YC_xTZTwTzUl-R at MJK<?}E8c)WJp z9=a@>G^%DRF~<=}|2s66RND|(*jg~3GpR*cS)d$V*$1@$XSa+0ZKZQ^flaZ+t>e1S zcZe+`HhTma(~^}@$KS`DEtsj%AS?F=IX=jtA%ZmdrzglEQ0q7vw@`}4`qhl?VU!`7 ze#g;2S*Wv^0i9Z)2UME3))FX{X8mqwYI at zLhpeLGX$x1P<8<jR)6LZJAq(f#@tZ7M zxsHF>!d2?{?G|paj(?o11+_sZGIF0U at _6<VhlaT1OdfGpatKsz9w9!@)IZDQYSOtD zXL8w$^Hr99j6+n{A32(zVH6BAgN+$R+G8?W?B!gv*+7pWnsu&tCRejcvwk)88Y`Ek z-fiXTVQbyOA$VIXRO}DT;IvGxwLj))IFoCwW}wY)h_%OK^lC<<mPc)jblb>emRF$y z(&mI2Gie;Th#7`5jDs6F8n;m6bM0c~@8gi1SI75SI9tmc;j||#8n=!=XW?x54s+Vi zEgH9uzhL1?bo^|*c+)dc at 1S`(u`oan+U6{dUT&eba`X-hrO2({LQXn0LlSJ`XwpLM z;^>zw)LxDruuwnb=<^opC64~ZLeXJ)dQRYQg8J0ToMGkK!cko$<a(G<S`(nY%_yx2 zP`_f7)&!_G7^O7<iVp45<2}Aof8{E|nv;CcQm*Id2Q8FV#?qi!i_!HtK at +QFvDF-s zE9$uZAEv;SD9P5Z&ZlW6=%Ov+cVd5s1$4Khhhwxj`RKuMJnOeg{{`k(%pGEay-jzg zdc4s+?s$0*alYA{ZvlrFa9GCSc^tmo`46-F=Q%87IVW)VE5_rl$q64l#?ekaJ$lf5 zo#E#=Jj|h at vVQ;G{1&H)V- at Xq>p)Tk{@xhF$_y?0ssG%WlVKY}hVbHl9_1uS0Pj!O z at 5Nbq{E;afxE&?AaWi7nxGhWs5Oxz7gNV2Rf8`kr<)V#XZw7;i_z3=j_><BJA at 0Rr z8U7S!!h9Bg+o737^HoCQVd=cbOpuj}Rz7zDq+Du9{RuE5IhdD#Im{SU-A>4%K1#{b z-|hh!Fetl0{niEoGmrjm4<Sg-L^jml;vpKTp>ZBXZO=3kf(Hx8;6q<Fus?L7m>yai zb{O=3t#?Q``$w<YOqDdWJ;#}{i0CM?7ch0;4ufjWPE!LErMwx9o`2K&io at _C2M*be zd-TK{hiO40zicy(0;|d_-Xm#J__gcP%P7*xVN~LmCrgOwN6+TTI~~ShI}_lC8B3Zv z4BFSreRSJd40NXL$Q^3zs`8_K!zaCk_~;ZXd at H^|rBS|N<<E|hZ;(eQ->?hQI=_ZY zO6RuDZcAOs3g_Lh$u5M_nc9WD6l9ZJ?r&!)J_go7X)#F86(cp&`Y0N*DwQ|)vFk&2 z%YAf<do!zQS*`zp8YFM}TdmuYHGw|-6|lEUmJj+UZ?VfFOMD8pRk9|wGfu+v<JhD8 zP?c=mxT%3K+e9mJD-7}ZGWd*eeZl$gd>xnsLMdHh=%uw1x3gP4?N5Q(o}sbZ`BJ1) z-()?yPAxmzdn8?_t;nXz?ggLRM}K{cuuuv9V<Umj$9v1xuU}6*j!T0Re7NGdhI#;L z4cS8i$a?6DXrNgi1n#&r@@s8nEr&rv_H!8J_$A5K!+dIeKv{fp^=2A>;BV6SYu4q^ z0LXe2AOHGR;4E2L1RVVh#E)>DPS~@tKPwt4*9piuPG`BCEQA*+s_o>Kn?&h4-HxoP zPA8y|cCN1_%UL?-$|7Dg^E#~k(4I^rq7aH4(=-xuDyar%Q{Jn6Rq>&6QLD~nrhS!C z{#KtrBaJE-M2vg%m;4B=d}IDN3fPD3Tp~3jeQYG+t?08WqmSLr#JL&;QnHTIZ{Qdk z-NrX!vzVpf6X26O2Y4$Q?#^g9K}p#fhu at MlCa^qz8}aRu<%6n!%M;#Imhx~qb)Dtm zx#d?aw|+f&oz)5^qN%MR?BAeSU-Bk2lz%x2r0hJgCuq;K>f-n#wGaIM9{Z3!4PbCg zd))-BfM{AlQ;7+rH4-I&*`C2 at ofRKyO=aMu#x=@MkM>m`;(xEsH-Ui{6Lr#OqLxeY z?g7nVrXhKB|06zN3B6>$k?8>xAJX{+D6Ec~OLF{7PG@@$pnD`Ac&Z+$M~lb_pM-`b zXyVe&$Ek~-f`;ltm4dSW4$w%ZT!e8zNGn1lpj^4_lyLN%0-6qlZ$@(=XndLmp_(a| z;B`ZJg06R^Gs$`ddf=pK)?>FJwGgd^BGjW*rW8hk7t*pAAxg{ECCGj}``{3_Jj|V; z$<(sKkcP)^O+nUcB9GD<`Y^^x%O9t9HbX=2n`zjwTHePU)O=`uDBm7NbS_!sLGTGzXb5#XFvl`9p+v=^s)b9cGdgEVs-#m%&w!58B{%(}>mrkDg7;H<NvZeDeY8LC1{!KX zR<0bP*1i#(M)gHBgw1`lKCM72Kg>-hNbA$8twAR{$36NTtqV!&9nCsCqe<UxeG(ac zw1nJ{-Ye<Qv3jrU%}r#8)*NW1L9IE^-EO&UmB?t#fmRySngi9G{fU5v-t5&o{vyPH z821bVMQ`LZgK!wRZwW+dvrne?YegzDqNa6SWXdkoSB}fhUx#6lnk;DKcaO^!K8P$i znChj_AP2Lk2_R#529oiXw<JAalYXmB`YfAt+9%1CzE1n<Taw;jlYX~NI*o at cOW9{p z<=Z5Eu}yl)CjE8POs at 39=)~TRveVu~4(Elm&z6I!e%U7dkWG5)q%7~ZNx#u1eTL2Q z1yC=y>>ZPm-eQyffK7U}O?tp4JuxZiw33r!=Y{v#q at QP#et}JT|D>efV3R%reO-<| z)py&ZKVg%;eNxh|u}Od3R`wk>>2wDeYskIL4U>|--6q{>D?6QO$g#$v-8SjNlaju{ zCVj81?0%c{4L0d_PD*;hCjEJv^tes>jW+4KCMBKz!*q^S7f!WV{#KjxM{UyYpOo}| zoAj4$WxvKI{T`e2-IJ2;vq|4!lRniZ{WV)pyJu3;qc-W^wn=ZXNvByn*B7_Akx5B! zwMl=%CcVKXy~8H`;H0Ei+N4Kq(qFQTagW<9e`r$DJ8aT_V3WSVR`zYSvOhB^>2aI% z=WNoWHt9QT(hpBcI^A2y{=>7%Yi!b;Ht8?fEI&Fa=_#A^mu%8gHtDx!%HGk9TV>%F zmT$DDI&fbvz7J&a;dXIMYY2YhpSSXsl$n`N#7Eh1{tO6^Ry8Pw4m9i0v-b^J!*Qzz zM9MVPqlha$F!;DfzfJrD%T;}!u8ZUAyl|EtFOE-hKHZI}$~D1S!T9=mOK%EOHD_(Z zh39EIYfSYXZB>m~)M4}ISGBjiCFzGyC|NGedEtZFVj5HJvq>-07R$UL3T#P`d*NMzcOqH=p&)PihUm7Hz06j2T2IK)aM3DT+1-<pK58rb^R}`lY|=kzD|^YLq|dUIy}?%Y zXKd2HWGnm3NlBk+lkT at kKV*}>%O>4BDe14<EI-vI{Z5;7I#SJ^z%8zPQqpJG%D&Vl z{h&?y4x9AKNlAakR`w at sUPmiBTvA>c2->`E at uZ}e*vejQEBlB|I-NJmwY+aq(&?CG zPPrDoWGj2WP5OhjvIiz5{W+WTZ`-7=vq_KIqz5M@{jg2?4{Xv~ZPMwQ7Pc7s{JKdzKW3BuvQ7GSoAjq_(px7b{Z*TEr_JkzZPI^hlio2Y>B8poGi=g#*`&|1`Fvth(w#Qx zvux7uw at F`Qlioim=`Y(X|GKT-Z?H-Kna%RsCncTEdgEW#3h;9_=^ZxdxOrLUVxPZZ zQqq55lfKs`Jz$f*JR at Dt)qNQnJy*|~Be90VT0=+}|JY_k6VdQ4`F~`tPW+`+-(;@- zfG+9r=d{&JGkoA|;~qU%{|A<<`Y?1*<#LbHCi8x=utm3><Cp7vuWoUM{(q<zJH0Ek z1$;864RPg7_TjyMWZ6kG+7&touT#51cIOE3M-e;Z4ByN9r2m2(UJxT-4Drw-BZ`OT zr$ocnP?-Nq<ah{D7 at Ae>V(&HO$uzo at XeQE;5j5(4Ga=Oan3r>%gj{!n0o9k{a~3c` zeg{#Q#lU<!hh`-(st?zELcq|2jWg!c4a_j_qbWW+nZ}Yu^U&uqoar=OJQNW=@K8D< zB0dKiy)&!$e2w^&(Errdvgr1&2Qz#q*Na3Wyje6<M3QXfqCKL;z*w>>h#+G_#KpzH zxN|VH+FFSe5}@>H2gb59<?09Kz8rl%1dJt1m2{gt#m%+DpTAV=NZP6&MXqR$tbYT> zmxCDrh8|0wr+~@zsNWM!j>S9>tNSQbiW7m+s|N}*4;U{pDh&}4bdq~r4yMtDp}Q{i z$}RaJzD9~WxahGg-$g8QFxLa4-<Os24+EoTl?wBDV06!~F#9AQUl!*>!02&V(ToD~ zJfdU*g?X8B<yfNteyZnDs_oD%UGxwsF#MU(8**CismQe>hx2 at 3)a*jnpdXmrx at ZID zb+mU&pUuF~LxIxpdPMcCQeo}}W*7dfT7D3a9={aLkAX=r4~2Oim~|PQmDh!Bei#)r zda9BlBL0Y6dc074sFT+7RfQ=AW;^ICeNF|YH6x4oQ~={eNI6ul#lRfO$>j$|zc(qG zD}m|A$@M;9toB9cKyV96yIS|tc20w)6}c>Z?f~Yw96Nsw7<#OdehnBu#9DRnLtuP4 z?ftjF<XYpegaKzuRv|X$^}J4%;uK(pGuF^o=<UkMbrxu%IntK^qxYK>pOwIn at vOG9 z9+)5G<mv?GnjFmgfO$O!GYHJgoO0a-OnHtq?gxg-WXXCA7(HVIJ3QY3rZvL{-wdYD z_zJc1Pjx{)MmO4_d1cx8MdpmEmoyltxle#8sd#vffhLusvw@=%dM!oKlmc at wV^zv^ z1~Ao`Tp_x93?BjBl|w at x^?Jgh;g1Jz&!Jffnq8T45$CnQyp+jBm?$viIW*S-b3+a$ z4b0x0Tz3OQ-Hm0{F9Va?iyn|P+5OlLfT1DY%JmCi^gb-?tUi(~)XG0uo}Oc%sYXbU z!gw$lS(>BIIl%0eW!E(41Cz+HMlCRlbIP?An0OAKtAVM^ku?BJNhX)Rq;OA;teZhY zb*?-C5pfSNdd*YmOyB7s8t!}HQFNUm$+BARw?IP=<xshP3QQc3)hho4%*#1C>!UH2 zRZr%_G8X1sU>?ZHwHO$^qNrpw0z)w?*Ct>pGi67TxE2_CESlSanVR8@>n-JHs{1pR z52=rWi(@$!`vP(u&d?CYuK;snh7V!B2TTV-Rd)Uex41JW*AdXn$jOzDX>}`dQAy|z z7rX&emP4})m|#x1E&)cbx2RlkU~<Q}n}DGnz~cNFV7BM<evblkYmTg^fpO+weh<uH z at S&EVWW5edZrhoPLr;2DU(uWej5nk65<nGE`UD#OHyz#R+^fMvUmNY>WMFwiswQn~ zquZSsiqj>-9B-%Z32Fd!sH5l!b(F<~a_&`D*P2QhDnZ?)tgq9iJ6+Lvj=u>R_uT4h zUFA_i9D2reE_B1O2-z>+#ci$=-mnYCU74G1CoExh*;Q%zcy*0Xhp2075L0H%u|QU_ z$J=w9xpR$AmZQ^=>SL);F#F<DvV?}Cbfs;GenWBk+z=Tlo{ViAhYxk&N^?xqwq}3E zo-T5wFOr24`~e}l*=8JqErVOQ at eQ98Dg{@tGmgJa9}3}OHu?WILm}J+Lo2y4>!zMi zXa%mQ57zM&K+vzgcTG?CmSks&z7A90UE7yT;z}TygS4j<eDWvO)sx%`I1%eyfJ;O1 zRnQc^I)j_pVbQQG^A=P+U9DQNXnxh=#gsJ}OW=E+p^d%m;m$aH4<WP?A0)sh|6=|4 zYMJ~B6k*2Sj3XB=%BUETJ_z3$iuCks>Le$|eMELVlIgBad5=*JJH9==msH8{A`LY| z%yZNsU80Eg at ZG{8dAXU8Wzjd-=cH3rN~TR~*R<5Ht_ua5>(=@k at ww23##;Ry+|bIH zz6d^;?1{vBd+Sl(@QJoX)%1(&k-B5?1 at l8;2%;tm4NyGQ>@eGa#O#YeabLc?+n8 at 5 zmL<a7$1(aCXh$qb&Z!8r6Evmb4KQ0 at Vg+s_rF*93Wk<x8uIt5J#i$r5W!%+Ca)uOz?m3aNT8<jeL+z22Iz-%nkG-zK$A at 5P+;$Y|X(ti5r5tsGo1&zo?8}+QlhILWe4|g& zb<qV<p<aC%6|TEZ_CkN9E%`j&x-<GW$5Ly%)y>?|j341LCi?sqRRQ-t^=KwFP)^_a z3^Pbhofao;;I7_{YDBVV)clWInf>-)@}0~L)1eTS)UvpSj_)LOYy7fM+G6Mu64?gh zYm at 0_<na~KB~NbSrH_^3E0MLziEIUAK@;dnXcEhA!V^!~&%)R}y*XBvHKj&(rYB4C z=g+!gHNAA(6 at 7F{vs;mj#Tq)>==*09m35mnGk`nt$DP)8<3dR)k(46;r;%))<f9>U zSL#MGOI3(&>7*;i(BtS_Xh)Hr?#;4^iqHhSk8kvh3F!JP)|osb(<-zKtNpfg(Dx@~ z^PTw4Z!Qb&6;mHPjajZ3z at 7hb@<r9UbtQy0#^lh6Zkl?M><?&@*Jc+u=kjb+FkKLz zxfvU7%$H0nztjAsZLJb;4+Ke8N2og0oX(RQMI_ at Z>SpgK?why#fOzQ-bZLK!WciyE z&2<gh6mE}GEpcN1$t}AY_O0TLt0ZcBXxUv_9auGv>zCPyq-0+DK-Uf*oyebf<;r5w z+0z!HYnwHOU${c!%b+JE>RaeE8K8bDx9Py-Irh1vFP7XIj3wn)o4X at 1>BZ6=$h4|u zOSNHNl#TA4XG^nm$pAQeL0e!4`U*(Qs$9j1d+-TH4_=B8q2qU%<6AP_r=Ml at oUSUn z(^lPSD$5T-*>eu7H_x;`exCq;9)UJTB5 at 4&^s$#-d=`Q2aC}vBJAqKx>bQ?<nsLoe zONJBC|9i<u9&dZDE9#Tpw2dq8P2k%kWHMQ6vG#CZ98H}EX+=S)xPaceJ)X-dKk1<z zt5bdxAbaq`w?1*<U#OivJY at Bcyh_h3;DF<XJcvBra5_;3p~&sRrEj69tqmvW(^fo- zqcV<fKjXWooHEliSzW2m3Lk%-l9{sc^p7+Atr4H+uUVb8RNYoq*`FVOoX~@FW at 1m3 tW_{rxYcgQ<z}%A2Lr*X>d-JY9ep3s^l!J9D(*b9ui+aG<lSO+?{6CJj<B0$O literal 0 HcmV?d00001 diff --git a/images/bin-x86_64-dynamic b/images/bin-x86_64-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..033ac759b0b3667af0c5dd5bdb79516806bf4127 GIT binary patch literal 6484 zcmds5U2Ggz6+S!TpG_LaP8w4;F=Qn+l7s50V;r+74I2MuTsD7>QyDeN?0R=?Z&>eI zyR(&3f@*1#ip99yN=QiX&^+{^5>GsUkXnftBkVkY0tgyNRYHk{>5p&(jV#n=Ip at wj zyEEerg$G_Z_RP8GyXV|<?%g}*{yaYv9#(ulU{c^qKvGH71!TVg{M&^nu at Lw{htI%1 zXh5VMA6?WCw at b{g$)=h6rJjnsj>?Jz6x}XJ-fm04oFgPo{;H(QqRsbEKuF910zxJ` zs%n$<Z4D8DGruDpY)Z~{6dsxA(oUCl%u7<AIroqHMo+u!U%R5CM6yl{2F1I|#aJMA zYR!sMc}{k6u3i_K%!5J#V9s`@(N2aaHU2&0I3G_XCwhAxPsKY^$#j0Mb1u}|+1sP# zGFrEYzXhA2E*?8^Ry4 at tu^T1wy$2uqEvf$2_s*yPQvdZQUJ4%lU99Qt)9UKRBH8kT z#s8SdCQw6rFJk0-3z_EBOeSsStZ3FUO~7u&s29CpnpBn*Gtp!kj)h112h47*TRSY8 zp+5QWkNQdvQGRc78%@r~Y!PlWMns9mm||nvka!~k@~0M6M&W(``ZHKuf0tfAL>r^< zGyih=@P)bnln<ov-MnAN63NqK^Vi$ua{15)BgJ2xH;V5Vg*zLk#zt1I&DZH*tSprT zTe*a6eFYW&Q7VxSW1)T<Heg)2W+~+x!bQnRXN}_88B&}-+JbtJ|MHK!8X{mUv~DM} z&JGfmHdSMBylfo#L+(KH{&@<<DE!oC6kFF+40g|Nh1Nprn<$}D_MM;CFJsY1?w+~6 zJUKb3HSfPnW^mRh9Q~s&fDIJati64&6L$Q{Evxw_A at p>;ul(o9=KX^J*OyBr{4f2T ztR417F%`TSF2;kmjm6F!HWXewkRpcodbnr>H^RkB!A+xhE{MH-KNLQ=)>r&^q<GI* z`dA$)zPVnwUoIP0KCs#k-J<ag7ylV9-Wx3bt*^Z2Eu*mPGmgBMeb-nx7sR1U1zW-k z at nBmROM&o$73>HvTnct!w?Y&fQDyvapx1Fm8imcW_2}!AHbg&+!h3!k_XU+I@^|Hk z*uTyC^ArpH>NIDZvjgRQ>KB7JHX;w=bCk9-_?8}eD?MD%?T`JNjE-&~7t-;PE< z<r=~%H@<-`ob!?J9(-Oy-06{gh4HzHco8|A{#N}94dzaLxX}2L@}jy}M_`pO1VM~zWyaYze>Xd1#ki`AQWMKEk9~N*oFOQp==iSY@>NAAQRG_U^NNmd0A6-NLIQY5@;1p^ zC1*zCNp!O at A~=r$>+^Wh_e%7L%|Ms>tF&&Xa79NkI_HIGmzCeyNY+BxIk|+mJHI zdI|r}8Lv-XM=v<zI5sfwM4$sx_rXAq)}wU=y1TlLbRF*M4Rnkq;sGOS*?4EqLCo;~ z at 5);4;*1rY04--_Z9dJVWZFt(XF*G6tc2FrKhkMMr=&EM&TA9-Brc%IIA|nIM|0Dl z#V at 9@J)2uuyXM(MHkZt#U4n^q*+eQz2C_7pvOr6wllZn0bNHS_0qZjHs1*e*F>Ov} zqcaI}I*zt1fflne*&I5w*@YNZVw=&KWDFf<uo--5qHVjKi5zOjGBY!YwB?;9|Fygi zEojd3_XdiN5|RXXA7_KME|-aa79Zyt%KIeVKLtq1L7sF4hp^6R|D>V|?I)#w%70Gs z+7DvoJ^WTV{)nO at LU~HC%09H-7IFXUrV}VqZesg+MMsJ9m|$SoOyoBjC${H2 at -$+U zyV!nJ(NO|el|V>H)fctlr1L0H?qT~%zL5!$_ANvlKkG67D%MdhW0~`rU)l%A7>U|( z#xFp8J%<mCDcf`Y?2z`{PxkNa|7DN8uIh*Y=4HXaX-{j6*ZxJsC@$_NuRr4+d%HDx z_Fw at yt%*+iS?Pb)(|<PM`NQkpw>|bHX<w4|tJJuI*p8v^V!`Quyj~Yo<8r`uvZCbd zpW&-mAbTGFX=y(#?Y;hZ{Mi0Ak3F9^_#6^sMajMXf8?>hD*a!T{=FH->;Iaxm&1kU zv<M>A^V%oHzk<5df3~L`D^Z7>5T9iKOVoARhopT-+I!>m%D+K-Qf2?V{_4`6&xca1 z%wLY{EsuXbZ`^3a3M8*TmYM$vb)50@{^zE&4^SfxVmsz^N^#n6Hb#W at rnL9|-d=eF zwW%%cKlp9?kEA{KQ#2}dxlH^+e8|6-*nX#{(j&qyG_3e`G_qZ8*zP+pDthfn=5NQT z`VDFrX<g3aPh(lbhsTZc61l16e^zcV`F;V_1bO{4UW=;~t)g$KQZZs)C!LilM#Af# z8?USEyWMzwWxwsl8*u&6oscN2w9=}za6j<6;WScV8}NGI#<y4Y-ERCL;QZ~zcL3*Q zH{MjauX5u%f%B*vZwAhfZoCEWU34cT$|}w-&S%a_6>lOqPr31jG4Dj2kSMEoYU8}( ztW=>D at 0V)nf2wlt;MRYna=vlnZNT5H8-ElhY_0a`HpNZ$chCfHcz$2{4C>%+*{yA# zL47sG;d7|ygRSF0`xsx1aTr2efhM@^@k>`IKB&e|@ey6Xhj72_7k`g)h*LYK>U1ns z=|S;dMiq)b;2Hmy1-=Vf8uV%-Sb9a^TYtyzBTjw;p82zcc&%|0>y5JYcf5o8pzOx` z%LtV!MES86?#BV~DO=~yF2n=4Yx2&AcEopMobz&gIOjbkao)GE<IjtBSgP{=2jEYO zcD8<Z=LBB0=hD{@-v!n0k=K=PBHmIX{_l{!(hRenaeh_c4+C9pIq3(8Q-A6DjEMGm zL`$OmyXB7>BSPlaFC^aL`Cfkg0R7*~_UT at Z2t`3}3%o`ii$zl@$5kc7vR2N@;|*90 zZz>1IPL7)4kuzg>gK3(BF6pTOM^!vyPNgyv(Ud8UduB902Y8g5O(m>ET<h%)9R{i} zlkqu{z5w=#F`l29xyXKoP7De+!=ru2hfJ2p4VSB4#Mx4KnMkJTlGwycVvP7$_+)=y z*gQErd}e6O9P8^34^iZFcr~NhZ1kd;NXOlPxS<7e at GB?!j*kogoki`-SyU4 at wXs~@ z6er#a?7G=CpL*6DO-v<ocqAW4MRU1C4y3;KrdQXUSH0%QNo+BmOq=;!f`W3nj^{Gw kbTl1LC9p<}JdZ*pC~+h=O*}VqWTJBkahw)6%cA4(FRYdo0{{R3 literal 0 HcmV?d00001 diff --git a/images/lib-i586.so b/images/lib-i586.so new file mode 100755 index 0000000000000000000000000000000000000000..e82023a166c5a428ab399dbf7e9fc0d80cb15d3b GIT binary patch literal 3834 zcmc&%U2IfE6rODtsQi?Q@}o9!qtz6Zo23>gB*wN&TS^K at TNJ2px!v7%SNEsxy;~My z0?kztvTlOZcOQ7s2#L|gpd_Yb8<d2H1~K6Q6B2<eT2T_z#t_!;yR%boOG)&}vpIXt znRDixGc#vq?i_0AX!UqJLP5DG7nF{b2~iK4nJYE*!Y90<Ry-z_IeKMJdZ}FE912y! z(K~IApdC2Lb~trhK at Znr0(~Z+BaT8QQtt(Bzix#<?gOPqSI3TdGG;|ce9V5-R{+2I z@%Y<;mhUGnzqPaa%iQhCpTGOH63x?qeHHk?Jg)>$%GD)#Hw>Qw|2pu}qq4C|+%C3* zz2K5xnIU7CViN}nSc0sUfsQb7z!I at Q2wm@wClk7987WKGg&s{rEur^;Ko!gwWQ|z# zU|8sz2ldWyf7G<XsX)vy&9EtA(cYkDCbhLf4~GoPK%ZXIl-|&k2#L0i_U3?Ir>)jr zlu<eFo at u|Ap<tc_^U3H#v at oP73RoA;<w=ZjF6Q7<QjBMW6yq2Jorm^sNg?kzdflFzD7=I&g#!PchVpz~6hG(66i?6>p?G2;{v%{>UM&JnFoOuyH^(8uPnSL6r3=wBl&@YQ zM0WTN6z^WN<`ljLv$N-X{@4`2{?)F+DOeBXZ#^u8JyCV|%nJ5Szm~P{vg4>#nX~=i zj(Tef?}6s*TK*5$;D6=#*~zlpKrw4$AY%Qw!N=`U&rwGxeqhr=Y4+bZXVbCA9;@ov zyC<Lff>D at nK?5_CPdeef+2I$^3+XP+4o^yMLC$6y;ukO4W8R)U`D}HK9E8mO7ifp_ z8XV+oANbtB-E8Asd$MRPv~PKf<Jr03({~saBcCxxlbFH6oqNUNF3b#bf`g))lIMD2 zMFiKJE5O=Z1j?HH{a!IS0-k#*10(JuF2H<X9EfUl>IA0ZG^UAV%~j)!A!V@~*nmdz zD?qVk!Usf1r-qPPauR-#R+2gV26_X`UnLn${~360C>TV{BTT9-5ZK_WZQHtIrLP`^ zU+1gy``4{rU03g`?F@%}n+!{~ud1(GIlFa(f1Uq+>-zt}`oVc?=7G3n^a{<iQj$g# z*Plph5yOlKEp#9OGfAzK(5M*<r_5+FF-_2+ONC>!m&`!S5}I=uX;wG`-Z_%Aa76D* z8S${tf>ttR!m%W81mS=ukmDtlbRrt at Xb@47=#4+kaf#yzeUtHcIAN)U`xo>H*!+Py z;qtOZiS<Cr1fDL$XMn6zwzGDL$AGL^)*NkEv#Wq?qaACV$QoBbTf!P3>y>t_RU+$J z#U&*+16kkXS>r?>cz0ZgVmlBAtkZ{kgy<{DAWnW2pu2&}j(dv8yg{6Hj)QhVAVN8N zm3x`UeW-wTguOszw+}W%zoU_Vv?E4=%8qwGv4#yLU=D;NP}%Y9Aga5PdKEWavV$8j z4jZD<x$O>>?4WkO6)u6{_!Ou<N6^5yw7Y`6f8_yoIhWlv*j<C2@&VNpf81rqv$601 zyANT<^N?|!?-ekkB^ku=$9z8ms{D9oo<vZdvkI64 at f1+m@hm-!Mvy5`cD!8ZmvJw^ z-~tr0&C40+=}!UeZYTj%>3BBNmx9l5*pDdzRN0Yo%@pjzCE!Cx-h9sinICI`HR|?v zc##kXl at sV(ETri$QWE8trrfJ+DlbLmo|LkTz`ZABMwfd`%Dl1UUXn6bO70mc&vRt; z9adhNLGA&m=O|>YOPM#GtZ6CpM3J>CWx1mKrj;@V4PZSI%7y&QWZg-5u|rv3QkJ_& z-CgC*jVZseq at E{?ykn&-J97P{?5-5XTk6a+_bQ<bH#XN<ffwJY+?y(24{m&}p~}~T zd>bIEd_7{ZXo1XloM{g#vkP<_GM9jIFX*T%UIubwsSsw1{|@w*OXFw!_aXBvAb7At zxWC--KY at JM<?k#FOTh7b1D^Ya;3>OZ`~g(Wucxd^`~>-`idR-C{)D_=`74_*Dlrf> z|LniKR9i3;KH#%6<PDH{#u514-UwN(2j2l5klpWs?KAW{ArsU)!h)>ok?#T#G-5HzQ$Pe$mT9H?`m`Xv=>y%{I`xkBu5P{%^o`S`&4DQu?_xa~%4loWt at jIDvIDWO6%Ijc zXh6SEQtyu?dySaxT-v&k&Iso+*F))e{D6wnvUQ^qrnR$aON*`~hEe=Kj+~DG#}Qs4 zOtr0JTXR!~zOA*jtEF4-ZffpmVag#hsYi at ND28W@%wPG6u5DPW^@lBeAgEiBbmC2| pHzV|oyS6rMX%E17`s-+xCy;t8&3N}ry@%XysK!S3b4b3m{syTyoD%>5 literal 0 HcmV?d00001 diff --git a/images/lib-sparc.so b/images/lib-sparc.so new file mode 100755 index 0000000000000000000000000000000000000000..7feec75eb2222139e80c33095d8061bdedc6546b GIT binary patch literal 4536 zcmdT{U2IfE6rQ{7Z3`5vfPhNkN*YrlTo)(=i3ztXOKB-Bl#-w^xxMW!?VA0;-CJyl zk>y7pG{(gE<WJlfjq$;T2Tc48n~LItMiMdM0h98hA+d=Ng8 at Uje&5`g?QJ0j9(?d@ z&YttlIdf*_%+H-U80*+#gbY!kDls2A3aSc_%|g_jldxHYg(;fE{bG at C$A5*)vqF&J z;fKOMu%TEOI}l?J?6t}sg8d5YJ_}KTja&n+R(u9hb0c)Jw8gz&cS64%1?w+_Lse_% zZqfeYo96k!o;gDs)7cB(+>A9}o&1|NF#XwM^CJ<jQ<!r0^RHk0eB$R=bm^XF&(6F0 z>Sy!*`000)--fD|vJk;$NuyD7OktHrS&HOIdej#}V_BDF%Y4Jr!l;c<Z4l+F5N*Is z0lZ at dZa~Y-3nz{3V{Xin!gGY<45YIeC-1pA&vAs4%p^VG?1g}-f7qq!rjiE|!fD^{ zbSDOqc`uQRrrdl!kr%0CU%!>lTI+<9h`XMPI(_-P9}PvBxM=NY+Z1(HTdS-!Y_mck z<TUsbVk2zmD>|8cC=Y at 87cMc@zy$smNomv^SNgaxYCcu^W$0h}I&xvul$5>#`bl3m z&p|(}^a<!(H;j1+`gh0?*8<wA`5sG1>s+%+udRpAeZEia5|m5*(AVR2qgAEF?_4}l zd`t-YV7YvA)Vz3<3+He{?~*aIWE6_MB2*C72Fh$<U-6~brQ`_Zp;O~^hc3(LxBTfg zB7>razB8F^vpv=RHMC!iw(G~y_85B2_UGH;5!I)rN}p_Ds<JTp^}}iSD_s5Cl-_V* zN^ks at F{^EHG+bKn!TMt8{pu6tLeZYT!4`85H-wGDqSqK}w8fF8-q2We$#}P9%l@(s z{bqNSZ_tOnV=FN3AIIxB9*nJa=D0NG_yT^WF4uC#_&*snFL3;I9M2e5k<7m>W~s3) z4UAvTiSA>d4Ot$HAF$oh{@u^d`8fKwP|i>F#+!xW!E(qJbw%jx3*{J2F_zEoD&J&3 z{;mBx$q&}$b23g~os~fdEwrSrh_2j^T=P6T=JL$QmM5=4zYaFB3UTK1Y&0;7Vm3Gp zo&)9{uEIW|9oZMyD}sBd7Q7fHjEs7y0LgRoZ7|QJ`fRy8iSk}Z_RE000^AOH1DL*d zM*L>{M}##LiJU0^$pk at v0=nGK#G*AC-4JfV=VW=f*=n{T;nk7I<B{goYr;+4iFkOc z>-ps?S1td4I$QaXwCDB-EAQoeIjFTv)=O9enIWrhD4B|{OvZ&ogKmCMSn-hzYWmX4 z`Ih~OTt1o2Oal&VxkSok1*PpvdBTz(CCf_;LzkZ>D>3No&AI7>u=>4hE|1W at c%~mA z_$6W-E0>jRy6I#;+R36ezD}r;O{WtX?=F|fgYf4X=9)gEn0rGL*EPw)di at KMe%veM zW-yN*68*^Q!Q3zK;~tXx=$Nw6mp<G}Hkg=x*i&-faj$8TOAlbH+BfhEwfijZVY*$E z%RcRfANCpbP_NG-49xZzi;@%vQ>S0SXK at r*$D<ABgUEoDANRK0-`w-`TcB+88wN8z z&J5m%<eg{-uqMVJy#UsJ1^9tOwwR)@QjbC^KeNR137F at MCLQl(6wnXjFfniB${6XZ z{oa61Kb&2-llphn;F+WS-U|4Q!w)>|Y|?)31^n=3H^G&*pjPw`1AY_m16OQ8zvBSN zo$MdZH+jaDfOUJ6?C)1#H4ff0<y~_H$~4iB%sUqSaNp)xEzj!?U`;yi7z!8{dEq@% z-ZhCeX}?n_U_3?A at 4QBk+IBB=y at sIH@$5eh)};L?F=v|UPokO)#I?oou-yhQ>j&aB zpxj`tH0gL62PM}6D{G(Y3afVIo}^vHmwS&ujhXvQ8u2|Og?jl9JLd_+eIqf?4QjF; z>?(h9573`upuHgf{qHGMv!pQ336Na7^skptu2UHw-)E3vj#I!sj}rJY1 at JwTz!Ma} z%p36)3SiC&@U(XcG1i5&a~}iCIi>$XiPax4 at 4`BVNRE7$)FVFjku<P>4*-uV%>Ln? z?)MKB*}t`DsYpAL&-=tS)t&)6+j|OF&bz{cn1%w%wf_;|VgSE}d=Y9ps`;e)S48`A zd@!(oAM5-AGrwQV=pWX%X)}WA-!H&LK#k?vAy)Axbv}&{^I<GRJehwZ#QYl%17D&) zF!EtoI^W8FE9`Q96y8Z+Qds^Qy;9&WEEU5;e at ayG&ck{!4(R#v--*Ucz!BONer1OJ zb=pYF<i9bB`Dmmn-;Mn_FYgWQ-D~yZjTi0d>UKKXcJ=VZ=xm;b+M at weJnIakvVCsK zk>6*>9U2z+`tD05yhPkuyKc>TL4%Ww4+AwvM8BI#IgWF?dh&bk#D~)95#KFXp!yW+ z+$_7arMqQ&%+ZKl()v_nd2#T2G_%nu6CSu6acf7{rj`z;Ys;2hu^y+VWm89tBai2^ z&Y+u#r|>%V)1aE!(cKk|ZQk7-LzX(XwY0`6bv8fQ*|NPY3jgWv?%O=B^(%bFi at NgC P4!+K9JNVG{U-AC{m?pQ; literal 0 HcmV?d00001 diff --git a/images/lib-win32.dll b/images/lib-win32.dll new file mode 100755 index 0000000000000000000000000000000000000000..e1a2d2e6d30ec35ae4ada8fe0473ed603ca99e2f GIT binary patch literal 16402 zcmeHO4R9RQeSdFvWv$W4oGsfp;3nr-1RBsuI(^tAq&{pZV8_ at -wh3SE>U6h~4xjGS zyFFv5J5enQEQC9DholVc1UyUwZON2|wB;k25!e$$noM0!n{;S01F6XvOj}Q<!_bhR z{{HXdcK1#)AEBvf{GWUK-uu7*`+vRvd;50x-SxK|WF}+GLYkRj>?z~~NpU^<Wem*zKJm-~_Raa<U-1;*`27{zhO?#EXt6L<OpV0SseHcR#RlA1v7C=(^Rb at ITVo@Ij2mxk zyr5aJ-qOq1M!tY;ni$!@KE>E2oUxbLycG at HSS^%V078SY=_qnaF(fKc8F<ngT||zI zu`{wV_DL at 65*>(^I*43lTNvvmbU$O46N9;6RFKTo`hoFr&)w~z_jTla(u)kC6o7uV zr9YlYc`4v*!pD$cv#cOjkYsJs at uDOYer-bo(OsY^WDdGye4tdK+BUi*=~4 at 0EIA!_ zB|qUK_)74LglPr8tfUh@>{oO&W&x1;xw%4G`4T=A{K)PAfNpJTr$odk8$%*H79oWo zYP7arB`{^W9z-I##Z(Cb=sLOtV*fm34<nHymm-A#be*dN=DQRNPaqM$j|)`b0=n*Y zQ6DC{X(XbHA%y^Rt2zW`jIPI#i0+eA2|}CEx>|UcJxBarMj|>fh{!7tCG7tSY at d8} z{EcN(z4o!5W;>c>QREgwK4~?d`g at 3d@yLO{A;|~6bs1%6rGJR%$KT=~n?7>zz&A0Q z1^w3XH>{~8#B<_=*L|3T9JuM{SG{z{vID!=lsPf&*)zu_!T4$Gs+V at 1o?P5~Y8`kT ztD|1T=9ndXa;gj1 at uSwQJC6ALZ-jv8)Q-sb+uU0{)f=6>t=XD{H86^dcnO{ze<L#S zFO%OXFE}jJnD(4g>6w|C1MXXsXKwxN9nVKdz!>D5`WC1srXL|P at 7iO)F!l&(eCkPR z&7&0($VW6 at 0V$r6GClbn?~&7AYkxDq`&0pq?Qb4qG=EOtdoT#XpY~xZ2JcLJpCLQj zAZ-VFOg<0CO`H%bve!g18_`6*xmF0X(P2J1P~Vy3FT&;Cr)Ye390>?`x*2`8|Nehd zHu-94>C_F at 6d!-i=6j(_RN{-T`(2bi3_Pdc2=5{>G^ia|Yds>cYpsdt@@qOQKrj8@ z)z-wK<L}IPEfa5gO$V0$HPr_X&NN|6$N!y|--M>oMKJA|U(C#mAC1E8M=<{FCr%ra z&mUOJry>*7W8%f~naLlVepbiN;aC#-PreFOtQ|)N5AHZtM;JJOogRms+n=H$jK&y} z*)x~k*UzGqkEwjW%J->!kIHi at 9~C*62q6ExHuMf+qY}S6UV9XEVh%vm%tWCl5mPy) z%Ch%I at 0$FG>;KX7__?KVE;}%kzTGLsGr1gdHtcfx+ at WmAbBpV8sZz-mdxdjL<MY~l z*d7pjZ!o=li`+|V{#4fqanf=}Hs6sDfubqS=O1+sB>Q~}-a;97MLc!*xaBFvaL1ez z?nm2Wf%a!megWwO(vOf%B58Q9v^Vf;UGMrrrkr!HOXV{;_ZsL$xGlv(`kG9p=$5c9 zH8aP-qE*PdyR#m9fH`ilm at hEaW(*GI%B5k())<3D*JZ3|jHEz_rw>5COke2j+tj<! z59h_eSErHEu5{7+e;)AI$<VW4W80Fp&$acoW!s8v_qILMcBbv3_U86`+W)Zq>+MI{ zUui$p{<C(LxF~UHq9w5*aZ6$(abMza;>pB`#7l{vBwkPaXX0lGqocDU*#TxTCbqiR z$)1OE+yl#@pCNR#q^408Ezy?xJp5XC;Ipt&j{kEe-bSJ5s1<cL$|=01!s7ZGiaoj9 z^{H%rUEj8?UaIJoM}>P5qC0gx2Acb*yR&ZF=00cR`mNg>hy9tr^aL=!7GC}682N1s z9mWV?@oP72kFAS!#yjE(#&K)K&96P4W~~F|Y%Y_ at 7G<Gz?e_H>ds;`b`Jp?CUQ0*3 zy(`|{BB~t-2U<TC%I9OlsxRkD*`d6f!Rud-8Ag3+xKQ+BVXRdr8m&6q%ZCJ^sbbLa znE4=ol$5i+j%%HGYhl=uvO;d~dFkO)k<D|mg at N)Qiy3><Si<U^QLo61aVi at tQB9K$ z`}Ts7vC^t{22v%L856SEu6G7=sUc?EE!!igXLD%3N7ke04jIJW*e_9w!J<4^%HG9{ zNr_oj?|37lgZb15I^HW8FNf|&A=3W*`i;HJnED=xH|nG#q~Z0#l8{s8TlKI?`A!&T zaJxbw5w`4C+u82<;^w{{X1%%>mfK%kziI8}%^R8ZQ&Q5F<=0;!r&!itu8{KB1(v;W z%Z;1Y_prJf>kJTGcg?0AXj^wb)ePIp6v_i|hCS-Y6~P(IGk$Rrjh6L!TpM_V>ve<w z75_2>Q6Q{Dq9QFNjqnTOPf(L_2>S!B))szP3~C!lZ$i2f?T=Q-A8tXB$QOvco+DNx zzK8dN@@eV;>VE~vg};N!qexN5!E>v}_?HO156z?^aaqV~S1^7>4KCS^*gpg3OoJN* z@*jbNhe@(%7_^LkdI at +P0d7&|jy^Y4D!`~u|0C$@krw4f``nUS+~sC~tq0{cV50+l zE;PE5xITcyng+AQlBZnB_$8!joyn3c+Jw!l->_UZ(Cf#=S#<mc)L6onQj{~}!ADW! zoE<@DgT>KYHG$*tR{0Z;_-U#PrPHmlmN@&o?ntzNwnZ!j)Jv7bLeQG+Ufta?n$}ZZ zab(Bwa*xt0u+Y$R`aLZGYWkXb`trRgGDl2bK2Bv!UrS71zE1?uO3RYdmruxM+mh3l z-!0oCsMGZ2_sDt_-PQEv`z2~ISjg$iCnaW?<xgLJuVlQO)mhKOqIqKa@~Q8Vbu|l6 zVC{PMxn2Lu%<amYHEc6o7#YpEyJK<^`_t5jR+`krH6oT+CUkXKg&>HYH(1W6<)V4T ztrU}13Rj!YAHopiQM`aPh~VQ7rcvX3{uhwZO+WGtP;k~5zWJMfZto$wI+Nb)qA|D+ zF#kd~UVZ)*B!cSy2>3#Nsom6I+Lzc1`63?0XELLiH8lJdP>h*NnQ4Ef;j?w?n=m0S z1fB|YOW0)*D$Hx*rrpp0f(DLieWRoX(Q15pv{h%(XTD^L7$PpXV-ODnPMoia2oVj$ zl2k~}BVLVl6<!8-Er>%B$+;}z(_Gj9?H3{PqMbf53|Qzhy(ejh`7R3Z1!+^DC&Vn~ ze0>v%U$O$@vD9x|6S<l`-n@&q!tSub?x at r5n-}y;z4nVO9Wq~QZ~<x1P_02^1zX?L z3jZ~#7L3fA2zlrO!jI9<V0Yol`P&N`apiC*<}%~0<x;U`u`k_OYAF^9p4|VnX7lM> zIfHjB{&o?)OI{{hhz}DN6miFqWxPMkxPz5)-jhWHltH@%^9jy(+7FqxpWJCb{PA1N zZ3oK_kMGLuGk0BWMmCK9>9ginzVyQ0HRf;LWH#D+%~ITKjCVb7tGV{^XIpOW7`n|d z8*j3|eMP&uaD&+pH+vs9E`&Mb!oc7AWeuGDZW=OmXdu^;_6o%k%)+wg-)K=eXMy%- z^c{;czQ>MO)_#mx<uf`4WhL6LSzu2XYa8n{p7v^&2k^_3b+jwHIe_mOHyOQOAfWBk zlgKr%-f`=0Y+%mAIp6`B at CNh5Cv6%Nlx at ms><w0?6B7dHbsn95AX>^hWZ9;icH%+W ze$-O}=UJ4eW!a|uX;Jq1-ii9(B5}4AR{_(wK8Hl2C_f_0Hs$nsDky3ixc?CCheZAh zQ7+q*Zx^(OM4nOoD3?6&V4+|d`EewJ9kM7lK?8Ltvt_pk<&H#Crnp5kw<_h8LN?_} zp=dxMn-o(lqM8MSSA6|%=w}IOH{O73t0->SiHua|>_)VI7!ViRWX662%-+HIuc5$$ zzvl1gM>`-mi!lQl%myhSX+5DgiKZaPi>t=yCmxC;!AG?2!L?suWUu|GO)Cr at ZPZCA zAkd43hCHx at suj?uqzFN)Esa|>=#x)`7aH;y6>H$D3WJ+0_|St at Ej+GJbl){Oz5e=G z4Ussv0W9qsO#TY4wXEpH06`;?$;WW51OUns{z2t*s0y-bnE?MIMKfQ}tiiRG><vXj z5=<V$HGE&vk#HqiWF(~T9HQ4cEqD(!fUm-NJTn5`Mk4<SKNEt at hp;iEv&F_I(0*Lg zRK`^HB7L at lPrcx#FYjkeW9THuRQL9CeKL+P6kjG^;Ww&M{PuK_ioRXi8#K?PH)tCp z9H9EJiWM&lyNGk8sZ#i`tRRM~z+cLmeGclG;_GucdXY^&e3<(5K_5DqHrKd2qj)!X z)oLN!j}{lblDZdO7ds<(t;`;-V2FG-Xky64m{$BOWs#rhWng&ETWc5f1)Biq6(9zj z;LK^Ys)Y%3o7Vb-SqNh7XGuf)&>Rng)`#Q>+h^mW&SKJfDD?^RpqiF-T<CN57<+%R zNUJdDnEyMVD>09^KlHLl!-uU;Cm7FVJISQgnATvq8vhBQYT$8TXbqODF at 1=@lU)_i zYWxZkjg-mnscMx~T19E?l&dJ6%M1@%jqR*vl$nmPid`%&PRKT|S_WpMm#Hyb_n{WT zboN(cx=;ETbszj^9SQGCdZb4Bn9o^i*txA5)BS>vQPN-jK++f2NZ;>sR?=^)#&pwo zDE}zwr#_H$IxQITbJsqfvyx8x*APwj2_K`RpZP%2Y2O&)+_lH&tfX(L#&kbZ!3>Mf z2{@He!3=uC<@`>Z%cx*<WWJ>}gv at HFiPhO?)QVJz-q~oR&WXiZI;RrdS$$A3-?bYk zVLPWe9tK6zxe at 3&X_V)Gg?4pj&ZdvFz3bq+)2v#q$DPyK6^5GedS7$-448!@Dp!r^ zOjcvM at Aomvt2Agdz*v#gzYJ)U5JH5hjs(4Gt@<yYkMhQ7HKwzt8q at t)1*79RS;6Rd z4p^Zyq{mR9;cRhOt at CU&)mF?#qv9Frs5qQEo`)+mbI0 at 5XQTPm+tqp9+4NB(=)F75 zs<$dM^t2KNy>s|6&^6BvZa$+o5QpG at KgNj1SAmI&QI5^Je<qqIK at -z7l^v1ng;?eE z>_t)QLrpx-Htz2wHmaWsW?9EbD*bDuvl6RhVXeR)0+oChnv<YuMsJWQi%ex0WwN*k z+0}}V!5n$SjlB%4|4h9?l8S$H$zq?vfQ{lq-*)sG1wQKdoZMZ+6iu0WMdd%kB!fQ? zSuDW$F<{7I`uCWmIVv*}r7%CJ!O)#tgDlb-FV}f3Jwk2(=!jwLVqn7l`5e)NG~5o% z7?89=O3rCu^cp2Gze~N4e2*O<i~>pXPzWQxKRbfLxAZR+jgL7B46Pr&^dCx^s891# z!i04GIWS?nE{4%I$VeBd&t<^0fsP`J#$6tAlslrBqUi$7HnbyCm}{u0K=Qev29pNH z=S;*!VD#=n_L`txDEd}B0F2(jN}8_$Lu8T$5tYy22#^Lz^DGGTIxjK*1dQBSkrj9v z%+XOz`Mjg;`Uz<Km?w^BND!Rp>odQOFcKu^OC%=X`OASJ=li|7f!PO)KVCf*J~5W% z7ox3pF5g_C(S9BTW`BrJ5g6*}%eq(f at -cs`FuwFBYG}S!gE<LIGdPna($aZgpx0-K zSxzh!80<>a;u&|KJmjQ`sr(Sm^{eV=d4Tqpm3lTmSkP^$fq|mCOV at JQysOKD_<v`m zLc`?*4=&)-d*FNnp78N;NFLpAW<77AH4BLgDsooQa~PuSg!m2XD(BHq!vn2TRDW{7 z>PdzuY{sp at kGk28)!h#M!0Kg3T=avnDSYFhE}4Qelq(FRa!!W6`h-#9LlASa`K*^s z<+69-M2I$?j+iK|dN=i8hE%EJP+#U$Ya^tvxctJ at -PMIZHpYeExU7I>-}X)0)?eT2 zY}wkoy=Sx2*Sm4^I(-rk`r at CYPKgfhk<9Sd`1l=eYG)j-s`kaM`q%asD`@On(1 zmv&OHT6z^{qg<yjNL1;a4vs5~WTotI1I}~PnHizgNb2 at N(J7S&@S)LjN1R=5v6L<3 zrN(#>>Fmx0ggOF~odqM;9;f;sd9o9h<HjHCF}K&$@HkrCVK+4zG$T7Q3h&5s=Z+(4 z;Zy3#)r?dKoLeW1Bh?-aDj^IRRZAw`iDmO}L!lJ1AL27kz|Y{69Z3zj;wX&pP{~bu z<Sj(pP=3VCOK;C at AjN?Q3+1lR*-hyv-6C~PS2Wc1KtKf#ekyl}xvvhCI^sx9m2Sdm zYR#utfi(J6W^2EO{t+MsGI0Js9L`R7$btbT_4b0kUr$b4OQ!+RuM&CW8zEZVX=j at p zAaQ6KXeUW}`qP27MGjCfigDr&Q(GKYDv3eU!@AQg=G|OJ!bwqY5dgk6K at PI5mh;@> StOFUr<4dVbQ|%II#s2_!9zG}l literal 0 HcmV?d00001 diff --git a/images/lib-win64.dll b/images/lib-win64.dll new file mode 100755 index 0000000000000000000000000000000000000000..ca94485c04b7663aef4b64976ca34609a1b790f0 GIT binary patch literal 34777 zcmeHw4}28Wz3<F!mMjS&L5NZXSv6p+<R63xigiO0o!A8eB#1~m*(94}b+cJF6B4ZL z1w*X+*7QZIZEbyRYPnTgeUJ9}6#ukFpn$Dfq<xlNt;Jq!gP}fKEv0JB{r=9MnVp at 0 zHSP7?wwzCP&N;vHJHNl at -<+A8S-yTyaVv_Ff#2AeqU=CS!OyNIzidYF)H#n$RUVrB z>^VEsz_aJnw}-oYv3O@&JlNrD4o0J$hOa5)i+4wT;i#{A<r-f{XG^F!Cnu{wkglsy zl$M)MQ#ST at T&dJ4N~cRv-caWGvR$slN*<6-!_TWI!_yH{UU}eJy0SEINp1=r1sMvZ zs-jF%6yFAw>4g*n^SYE|M9j#9fOiFD8WrWBBue at 8FbEduu$25E6wXY^|E0-dBh+gE z`Hfs$^285%qz0c-*I3*VG=c!uQGpLXQu}oLQi5Np8!nD>L?6t-1SY&R!Td_2zqqNZ zi>k&laq&~i88$18!^I&^kJ*Tr6TLI-xPGP7UmWIm%!Z99Cmm)v at P>=4R at W1B9bIDh z5xsLMV+FtBA1*c`Og=OLMcIrW;mO8>Bn9w=zM)8Gv+&IzfP^=XO059AWhLc2UrNys zeuP(upDpCMO3IcnNDp1N<41TOrA%r7-oix;up}GNFn&|;n~$F at 0I&Qa2Kg1y*^eK! zvBeCOasggN8OxtZc!%&KyruZr0`M+c$RI=t9fr&2r%Y<_yGj-_k11C(Fd75VU6zVN zY0z83<r^b^<pGZjUQK1G0eEGlOzJ$MLye2%3#8&unw6#lPv!p$T42qi3Y at 6*9rcYo zKNX3 at E-mrYNCjGf*8ifG at VtxWgXmR6JAkMdleN7xU!coreY<_v>}qA9ICsugrd?%y z!&QOA-nDDA#E*z-|AFpLC-c8hq9|p<{RckN+V`4THk`=s2jDTH_lB1Ho&0-=N&m3% zQ7yS>&MHNDl1j>6%$?&`9vuO<u@|(&LBhQB(;TyVB<Z;c$-d*R+^t7|{OBB9M$Ui+ zOiCu&C-qNMZrIiLw#q==qaiJsF}D<WTC&|+Hca%2iUj8++L9mSZfzn{Bp2OXrzkaL zhexO6&QTcrO2CC6fy5zJ at hx<Fh}`|lvSUflACc)F&fWU&rX&M7fE?@2A~v7(>?P#n zq9HPH|1o2>Hjr}%(j))kp?XG6ZQ}T2)StA(&&OWq^RyK!ib^Ul!LQ+Z<j&a)43NnQ zgWAYe^gHl}zl;E2H3W+hEU`!Hd)=!od9&wqEjfv-`u_+pwjUtqv+*@B899bgO55wn zMlD8kuP09=_j=}u6c>F8a_ORI1NpCh0^ot1=Me4nyoE89JT`JKksZk2&I`YeXygun z_IeHggA_b6^4{3k_X+pN9;C>=eMhza1BrYC2GbH73JSHvjRlJnKhYAA0>73p3QD!a zj{}JxbYGqH)D>|vze~Kn0o&CkMiT#~CH^#WY%<!yJMP3D!`uI2Zhry at X4$oW9vdU) z>;VwQkC_F}qf%nes6J3N)^}XZy?F}|21h;)x_$4c-QQ@<ol^}y*}y^-)>w&E68Zk& z#GdZ+0WCW~pk9u`Gw-}RHfEMYiNzaxJ-5ROV+dN3G)$6KNvNqMNy)z5+Ac8T{b%G7 zLEqSG3VI(%63g8FPk_eg|13K;`Ynl1_Cpij>*<7XC>S|J at W?i1UcZv4CkqA&76%g5 z1%)HO1@%A at DJ=<Dk_riXBd`Zq5d9YN<*1lpMrOfnTHo<8jj9_PAEjww<i}Y6CUXug zK>8hc6Y1SZGn|pv2ry7zP#74fF7TnX5!g5K4OS;W4&F8L0;?3DV$YX}$`1fwv;o*e zfEx)taS+m#UV|a&=VSS;%L%fJASl4V!~6sN3rDUX)53=z8AfU0F0Ki`Vju!W-`g%D zpUOm!vh1x5%&xtL1YWd^q9tz{2eqV|x{V86rf(PZr0(C^s?vaGj(41X{{iE)zPH^* z&R{Agy8N?PGEkQvk^V}a-8ZWC&d{27Y02t6dBo`TvHgH;I;tf<>BXRHJfS6irzKt< zSp{E>{y1%XmE)?G%)g$|K48pBy84cvZ7kNB_w@~{2^YH25A({%6d0bh0ngRI+v{10 zD+TmVjVdNQWr)g#NB6NAVB{z8td`ihgEdp=Gpr>&xm1(-ElQSowM71V7qBXKS{8<N zQLqopyt`<;9ydSWx$`5SK{!<2x at F1o^+qNW5s>D}rJDNGmL+s6(EVE3aO;*$GqYW} zcaR3&^!bI+=QXNxA6Ydi_mRpOH4wKb_mN?3pjw?-_Vj3m);C;Oo%BzsNjz1%<oTY- z)o#Bxuw-XEtM4hbddc(gUkcWI{DC}|zBw{BwtPK|brcB$!?sXJ(VFw~kDzs_JGWfS z1U%fj<pzk?{Sw%(o>ZH7y7q#navxd7gxJT0aLp_`Fq$RX=Wt<Cn^KwBw|vP{aj#qR z)-HKEp53<-f*gpyGB|n%HG%)0^cN7vKkk2OWR9)<Lf_uyG|q1*Xr$q=JwP+`jRi3+ z at tl_US@#SYQW|MUX{RA21}eR9dVPVfatF<IWBISw!t~(Lf^J{kcRa)J^&R&cX9WfV z1sf`N_{q5#2QU_)JC5b=0Cp|<UE*!D!jbo|4v^KpK-F$z)v5v8kXq{|)H)JJ(;4|G zYNYlLZOhSHz at j?o`Bfn}K at E-6s3RTL(IDSg(?1+Yw2)$vf>;1$y at A9N1)EXHSV+og zq+A^-w~ofk#z2ygk%|RS&>Ki{WNpiCVg%juHQeW*Usod9>uCd93@%{3U%LR~$??q3 z+>dMaXEr8_<^ZGrx82#vOFu%XF=N%Bw&dS17ED5R<4xK?(Jy`t-w)hau+;3oAJ3 at V zfq546-qzG3N!9J9Q36BU(vdohqS}&|dtN+J4O4LcCl~EJgXSGLYGC%`NG7xUpYFaZ zS(Sms!|ll~Z{K at rZvQ9|?AtXZFt8{I9Bs)@a{Fk)2n@`<1`-4yLFwrA)W7=P^X6_n z0}55sfUNDUE+8)}wHN$(B#4=dJX5F*XpJz#{ikCYll$=SNF53SYNVjF at 4dX-txo_w z_p=5_fYxB{)>o0Y#xo`bRtkMvpiJ_*jN~QN$trJU?!#{c)ZYZuS3x3>EHT#S-c0W9 zd(W4<^)V3Wd(Y4H&Fyan9O4Ar9SXU$v~q_R2mxwPM at EV;8IOKt<Y8K=4CFtVPm$JG znRsL5+W;MzLbKK*HA*Wc?8H;320|KE2B0`l?SajqZsiUdkp#V8U}`*~fur<K?!z_8 z*5OUPydsH`Qjyw$sJM+P=At}VgXw(JVvV$5b2QbQyg#)Xxm#50plSz6N-<xPrs at b2 zZ1n$PJW0)e&YnNA4D4Vr<3U&}xBqrfX&pTB3q;m%I>_e}t?$wUbHOz^dp?*O>-*jr zGZtZLI16p_Oh7DuB at T|w*n{b#`xtsYJfD+9wQD|k<nVEl(T`O$s{96P=+R6zUnX`9 zRH=!bTHn$al<wb;ej7FJpFzV!PYrX)y~tp0XaINI2#n=x1WtGsA%A2e<frjB=_y7Q zLyCuul6yU8AxpNU?2(IsWyuG8tTjCU2NGyWHV)0kyqffEBfvnNS4;Y7V!4yD=n?;p zrNqw*DE+iCZ7ly=)kyC3>;i-Wsc0J=2Ql9s^~xo`7iH=B1}*XGS{f?{a>^hjtp;La z`Clfw$=PSjLp0DZQiJgxtK#jn*6AOvO+1ymbsMo8s5zu18%8i5mOV{fZ7~yq8X<}> zMzX%<Ve%sF8|fheNzX7Cp+aKOWk~Gx<U{(&8OrcpPcBl-P6^KpB!T)ps*$J}Mw0FT zklZ(xKcgC{ft=d_7|W+c=ve;!Rk&XwBFrgnz(%eGrPe_$Sp)ldmV*;yqU5hYnYl`? zkJ_~z3-0-4(Onl3{S8=fCTCyHco{Sn-$-L|q+lJ5!HwFIT}F}iN36bQUq~nzet}MS z7=AGZ6CQ@&MmVA!(>;?j0Bgu$Xe{3cK?$XFEdS5Tu=xFfi1#LbJC>h~LJjkdFR>>v zHkLnya2K{9drV{N4%&dMEjwCU_HJ$2Teaux#?4mkl9#kU?l)!z5_4~Z!qD$_L`Ry? z$T<HU&wRpnp!KKd=ua#ZT8<vDI at H+Qwcs*1I5u~xh(9LcNonx+ATHs(AYz$6Ti_iN z at b8QGbrDBJe6xr*ig=!gCyDswN>2Z5kuMhU$3(nGl*@WAi2TE8vBY~$z$KoDVHgV3 zQYrA9mFH0FnqGcrhS*;fC?j+1`OTF)?_0)W*|MG$Ua%;iO8q at pV0k!t#Z^UDRh0Wy zcSntIN61%JT<R-q3K>CPk*_cw+F0x>y}(zBP{jVyl!|qQx?4JRw)+}1!ktmt{x>?C zJ0rf0p?DVo=C=6oRG>S0U9__&>N7fh20bOfGXY{(oW%(?h+<C9mqM>8Z1}puH-tb3 zxE);^o8v}tOC+L1I-_mZcEr*IO3!ZQ?KDHgK0nWw#(12L{?C|a&t9N-A@;r06a!FR z{vzR~qMmTHqMVsN1?g1s at 7e<XMoau#TQDC773HNA*fW3~1?)tjzKNGKiFl)kZx!)9 zB7R83&x!bD5x*{CZ!@PeOT-l-zEZ^PB94i8tB8k0{9O^J%DGd(_KWys5g!%taS<!f zkwTV;XNY)~i06s8Sj3A(%xhWK|H`%?DL*WGyrWzm4}}8Zrg$*ENvTn<2pLt~@pvd| z)WtiSLwMkLxf52~qSU59>)Yd at U<-iCJp`qSl`SoCs;oRikTsjSj8I2CrjW|6%fpcn zrIc5wq(0nyT~#Nh7e!g&3Umfrgd|umea*G1I~3nk7mBxb#yf)1<`6>+#g+Z8)kdT$ z7&E%#fJNEU*q;$B(AjxickJ at +Xfw@jHBkd9DKAsW+Hl<H4n`WH7#AUDoqJ8lXo$84 zqb-q8OHFTcC`L6Pn*sV8+-oACP)uoY*N5UA;b_nZNn<F6`-Ih$Tit>Uu#HeNbo!ix zFjb(VqU)FrJENiAu%WC$F5KCqw?be==~47xM^~H9ij=n$Jsb at i5T`>qN7eDX^g1P~ z>Z0azs@@%Cuu at mBsWWaUpLDgx;^C;#s<gOT;Za5TlB**KR-pV<S4XI$IR;xGH2!UV zAFo-xq9(9#ft+GyfbIwRrK}Ag(5diOSs-ux^^v?k at aK<T{#WrlRr!<!PFdi?wSZ5& zZZzZ at DjixpMDGgaL4rd=BSUWt9Ur21b0|NPmwvdio#OVNZh`sW;9^{8mmWck`&k)0 zd+Pd+ZGlUn9{2wr&;Wi5uj_a-Pp at 53Tdx%2oxtiyWO*<g1#FEG#CkWTya>ElGc6>U zW$>^b1gLT~=&1PVdR6_()q0?IO}(xw=Q2oj3gjQ#pnqrD{SJ=f{`aa^tZ496`O1sS zu>-iEv~)@7g3=0KVW>A2isR-gY6K$}C at OZ}O7O!SM{%=K(%#t-Dv4i<TZpcbc&wwT zI~-{#S=LY+s4l at xPFqh=Pepl&fxW)#tb7rwTjNa1ezQx*9SGYcM7zoJxV at RQ#ph#} z?r2xIEgHgBBJS(l>ZIoOU|ex~Jr)KlaAkJ2<JJYcjj8Av9#)vav3WYvhLYjUbZ2mO zHn>~$nt8_3<DFD})ymb?iu;pU*ejcKRqcvpD^~^-w|*F&cV}d at MmmFrGAU5Ec4aNF zV)Q;T<Q3v at v0WZ6B}u}`Rg^0kgI at uKNxYuxR`wpVR=J`&P@}k>p<Jf-JGgpP#>kt| z(%Ib<2`TQp3}yq7&Ggc{HIvmWuj}!w40tyC@^DiqUQKTeyPn7zL}B(?zA>w~zL&KC zd1Z>eqF%4BU8XE{J)HF|)X6dLUIXDSLvcNl^&>!C=P5ZD1e&i~7VHWst{se+>pU+9 z2ErW}5nPW7XkN~m?k0JU-lVu56Y!Z+4}zuZJYP;_96P(TL(tF_ir00*7Pw7zJt^=C zbJm0+t%_?n>v_hyRLRwA)>YNi)z_|Ep|7sF0;9|7N|C7|hp3rel0DN)TIbc(F0Z_z zMz0U7(W@#0fn}9dA6Hz1)81qlf5LT|n(M~f<z$f4$O<f_Ow#MtUcOfG<nIRvnOe%6 z{%vHYPlly3JcD7>nn4YfM!;||f}QCW1~Kz!_lgP>695F4l27$Lw_kwjr>i<P%!4g$ zUDx+?#!)z$p>6>S_k$=rV`Xb=R|u9I%^<O6#wmR?gBk!#P+zl5QBPM_$PJbH5Nvzh z>FO_0(@mF;oOv5v&l<uNA=67V!LXLhOLzC7ma5K<STG)fkFi(L7BWrWm7x+B_XbP? zXH<u}4BDl at 4u<0D%3!dX-YQmu0A#l_h*Bty4G#&K8N&ku#bvN!FmD2>S%hkrz`?p# zu-;Cr>x1z&Qo5IOT^o#aqq+5RnzO+{Z)Ubt)Js at jkV}@zlv~!{fY8~rwoxyoBt#)^ z&rz+(ZPNAXWe}`RRQmL3{C+k7<gei!7T-BkS^FPAIf9fAKV-=x^cd1dPl8qLDkP_) zEuBN9Kk?uN_9}wkKxTZL;C0A8PH-klKZ)`?z|U(#Vl$x*ejcR-Uq^NZ<U8|rB$T<k zr*T>GgiQ1J4owJlR&OC17XepM&VLorcB1mBLfW at KYX#M&Eqi3RBx^{L^+21~N~1s+ z1nLR&4FX}zHqbQHhQp}zb3iV52$xY|khesv)^C70K5C3pgoZaa9sNRTc;|9K&LaT_ z!A`xZ2Q&)zBPoQOPZrRHo?#KIoy-z7DB_k-l-auOT!E<DnCmtR^X!<;&GjkNqa_P> z-8ORFLjd{6Ch9hFT^@|hUAK)~7eRI&`d2glCq+ at eNzGv&Kt*9)kA#970sGNIf;O7Y zIC9*@<QNt>Sz;<HfUXHsj=M;XPf&|ua@<97e4etb3Ef3<JdLbUtm`psa_T_?Lu@<w z<-)@NPj)NfiB*ZNQ-9nT(!2OdjAA3Cc<%Tin5pV48kw9(Y)8*?=j#k7)B6_UQVR>y zcn6kuG#quIr+dD5I at SZA^+&KSn+1aNkY7M#d&7EAQ47vu<vf3bqR!>{GU{EcOjKy0 zsPis2QJZz3o^R$`Hbr&(TL<gJdNVc at n=q*;>IJv63JZUR9s&lu(Km(K!cj#nqGqqE zCYbewVgY0;4Lul(>BgoQyjDtvQ`K^@N>vw=BI;!K%$V4-@`Hm*iQ at VfE_#ZKOZXoi zgS9m`Q-&g*TR;mTw(@BS$9W=k2~<&D1l%IFtfE?!Dw4}9f!@2gLI+-~xrphqaDgDL z96FneEaM-dxwz6-J+2cjlw9Mkhg@>`gg0u at CtQ4agorI9Xi?(Ia4e4iaxTPN>B}RR zxh`?ZrI5?MK=F8Qf)0~ZSLz}N64 at 3=Ot4Is*WHX6CKBrP at l};8&jg6&j>~64Y^xyJ z{?=m#78DoW2zK6AaG`sX$z_yKvh4RL>NmZ=Blu+Ze(|~k5K?bh)O#hup|tlQV8OrZ zpiWcgdZ%Z*y=Qr+si&!V7>Zm4SXgIge+>W8<StMs;YP>I;7P1uash(}PY2e;*_UM3 zPRI00FiLpymGh at iVlpN0NbL+YI~!OY6|n3aUd2NQQ>LrLMV94QWsC8ce`=0WJDn1_ z(@|$BDCG%$tn##c_53MB at -z?dFbQX<?x~DeHbG|;qS7q9H<*t~Q>Bon7ps>|VKRG2 zMjt~x!;>P@%<`1XN3zi*&h#i{Ab3_ei)Jli+-4U;bfQXR$ZGyc#Pw{{Hkr*anWbU* zz))bhVC-|U)dp7kT&p(0&zr55O>daAF8gXGW&z1T at VVLW*lCb#o{$x0C;0gmK4w88 zius&ige|FjGzEZ(?n2UvD$h at W!?i_O+zi>%z^6Ec5B!1upObFCYzq0Ml>S|$OjT>A zlMNP}gWSS-%uMB}s4mn+4;#0&$tH%@MqZ?bXK!uf;z_(gWu`VeuVg#<9B?c_y)3~K zt>m&PoG0-;6;5P<J#ev0xf{i*`VM-Xia;6s(QSH3cUQc`IXiW2>MDwNb{hPqz9bxN zj&!$#a1&cB(~4ql5`Y$-kVcK-c5tF(OQ at Bnn{Xp(bhYpdy8(;_BgkR8rnL|r_VOYO zCoZ|lcVD8O*RZ^A>%|8*-tJxgX5jG*m-{~NQVakGdx}}Q73rIMUqJfp%*T+vrS}1( zk7pVT{@8|JyQd#^fA3!ic=zP50{EMagGhhfdnMAp>UrQAWWM74Ju<KM+;k^0U+_}Z zU-dlZ&N2?Vv%U(@tql2i&sQIRbome6XB+OOE8S<Wb6@|$<Ck1o`s!_40`vR(yz7DZ zS|)M$N-tG<HIq1erFWgX!T9OW)!q_!<goiWW#5XTX79Rd-8sL%=Ev?$OBW4!R|MRx z-qZG9{ovJa7L}Af{j at u8-~1tWlj~gd>Y|d8r;AG5`8T;&KNh&;YYS^X=lw&i%LBg! z;5L_X`FNfjfBAw1Fk8*g`UO5}Yl;*#8=Y~oIW>V(;h(_*GoU2B1F9-&Z{Czl at 3cJb z`vR%FxDBin`O2wzwNp!{xzUqZkpG%2 at 1u)E!Lq4&l~ZR{PW4UmWK5gno;Jl*J+-is zYEGJ#;kjZe-5FDu&m%?N%q<p8uX<|T>S-SLG`A-(EdvxJzgYrb-gI3l^1v6VQ_%;p zKugbRe(R^}p>c07+i~Bkv3FXO)H|{W_F=GZw-Gn0bcd<4_d`<mZ$F3-r*QwjTR at KZ zE~UpS(`?BG$pFifX*mu6R+=uf?18IA0nw7_H5M#Srt2-(OqpJ1!F)2!&n{qc6v}j? zg;y%mpB96JTj|*^imgZr*CIfwvRWo-^+Q2b*2v_)atJ`HcZlSRCTNXJzG8w_%j7qN z at j&Z-k=$v4%7uhdQeX)ZW+dgj)}+1a1(BR>5?XbENYZ8=1yxy9DU#P%Aj$3$!4_Cu z4hiu8_Vyqpkmga9bu#&7fvGADGI_5FS|=^_3lr2JldqVdbu#&{rkoAZQl+Mx4N`QzQVoKH8Fh=4B|+V{1nB!BR{1$8W)&o!6l^W8NPSJLSwajsmyJW^CxS|eDY0z8CY85E z%5qWNLQ$*MRK3pW4~IC%1)*=6wbnYVv)1G*5>)~_X4a~gwIokfsqb|(2ZtVS34&6e zajX#(Jhqs;>TVawdn{18gqsELts<u3LZ)}%7J$OIU0GJ7$2}C#NoDfWq8=KkOn%k` zt(Hki9ax-#b#>BSC24n=gx1KUB#4eBlNN19*LKogCu!eg(q1c*k|4UDOj@)Z?*5*z zh1(=lPkXWydM(fwMe;5aRQIq*TC^Q4U|68+7BM+WrsaDg<2p)Ke92_DS|*QJATFhK zb=F!XYaKRgIYupKt#z{2>t-!Eqgc%T*;8G at 0CF%b6zxckecMI<EfDZe34A#xrQ0tZ zKb>AWK0D_KKuQ1o at YCg$ga7{)gzpsbkcg$c36W2a{?_zH1%tbU-Q<`n=P`O3L_v;zJZD|yVDA=qa`sp%@-s#36R}m3r~cad>GV$J|FJDl+=~C5fQskh_a6Rhw2ij?@Kg|c zLbh;&$f=4Cud~>S%*@S5(dvb8_;7KXD9b?12jP2=qIr<fVWp4YN`p7ACC|a5B4XoK zX@)7MtQq7PcmyCm<H;k>wIdwHU8Sot{7``KumE&AxY%iE2Spyc-N2z&-L6Q(P?W<0 zf at 7V4Lyzg4MtTEfGx5u0I3P0)j$CEYF at SD$Kdyvl51E4WG=SYIJF(4<fE+y{pnyGb z;8f!3l;>OlqI)~HT8gVveR^I-;WYf*>iFln(SvgedHA_idUj_IvW?MRkJ-l9gI%kY zNx$d8O+;>7pYo#x8S(e?JITWR&d?nf@;iB(`&}rIf+c0%2N;(bo28bx4D-X5`AUe% z?Sua16dC{PgMVAXOIX9qhSUe067GiN)JCoFL3-24tSWgO`am9Zwr<&TPsWR+Uk3|t zUMH{y-dSkDiwGKUS&zeusRX%!jZqvzblO43kEdbQh|~*6DN0!TArz$#knIA8_mM%W zg%XbA)O{_=X}qw4v at _|&TQBJjw3Hxq_W{Nzt3Epd;POOFszwytssn}L6s%vro at ks9 z2k-RaIETtY;8-IPGAV&h=>*PtKVT=sVJD3i)E@#4jqz at kC=zEY2s%|{Rf~>YZh=$1 z_<eDzD>WOA#fMUyPWAe_li`TdR{ePRNm86_wDF;w`wNM*ApPYB5$>-v1Z259wUy*| zOLse-z*+BmU!1B+s(ErcRqM&;C&HonLy(v2K7QXJobLdqj at bt|1W<MY(r7|to40I8 z-UUiZkZs-v*k5i#lHMNVX|@FAZH!(!cZP#tACnT=MKO_&0=`}1FzCC433J(3Ae;`h zjRKVO)r%zZLG-Fa?Gv>PqDOZ?LxTHw?T~Oj3Y<omg-b|~8bD0S<~Yykkj(Vz-5G>v zhKb2+ at 5e+;`ofPi_eCdx9iagd4r2MiWF`xz1-*SaJIf&^?L*@;y^N-mV&JqiZ3i71 zqnQmEjc&4riKEAgE6NrvDfgia1&~R$OwOIGK`Wi<tggH`twF8ME~f0=jgq at ct2cX) z*4Pd(w}zb$Varz-ho#JRHjJQ at nd6Ym_F0;cq|DUMn5N^=5$8E?Hf3hy9hX}`VE<nr z56Ah>m*<O+=g>*yAqBn-93OsGOQ2mZQ&XlRy)EuX3K48*A4v#C;Rq5M;*;S_fiq1z zvs&i at atO;s`zXO>CSJ#2 at v|AGyg2=pC%8%s_|)OA7}go~Alt?vGzoI~c%y{m<wrT! z%T9xGl9z(fhL1?nA{MS(_Z|WxbKQ%#7U?Ac8UEJt<eBnF4)&PV>h!WEU#rU<8#~TH zWa-WfO$hd>2DaVzgnbx4x-;YVXmtc~1iEjk1eD)5RUidGTA=$Ky2~MNx>e$64-Wg7 zJ=YIJ<{i@)rtS(qIlbVb-Ea-2CmP4tS?UFgmZFLcQa&FN*dP_fRxPo%8Ii5!199JG z(GlEfcC_&-KMLt=kcyYlHv~j*e`7-2haKE$|IEg#oMvMiq+*^`OK?9vA at 28CbcF61 z4({|c#LoSwLw5x??+}taDDGJO$i1K6>3<(=lo!o#aL;h)P90g)61saQ#Qgz_j?jII zgZsM<-H$tT&zlhUyB*wVm1eU>`AZJ&J009-PKZ1Gmw=7eB6<R7gOpE6m#2dErR<jX zO^EwGi;l27jb3){<qqzPty;qGg%jew!=fX&(@wmd`wR#78CEU9y>vp{hb%gR`&;R} z$`3pIzTe^Z#S`NGgoFEhhwih|<*Aru)@qLiapnxpOEM*FHQMnXj5smLswM2>mlC2R zJvc^*@o>aC!JIF~!{IhuFhk0tQVPaO335(3EG0}^BN3{=DW^G=wS;l at PURf;A?j7W z^!;UC6p$V~v0fKFBR#0nEN>4Ey*|(w-YY3f8!mcC$}Az}_kp3Ue^s<Q+OsBG%Ln3q zi-Y at 59o+XhxPRBdy>3F>>5Bw5y%s&=;6Ci&KIGuOZbIA}9o)A%xc54^zbspedC%B5 zA at 21K?hyy~MhEwM9NgO{#J$?VJ>cN(cW|$FaF0!hd%J`C9S-idIJkQqe(#+Scf-N` z0SEUX2lp!-+&52%`(_9C-45<M9Nf1$xZg4%?wW&py at R{v;NIl$`{0DQ-{|1}goFEb z2ltpm_b*L|`#J}A!@<4X!TlkJ?n4ve9&m8q;NVX8m$vb+VxxomeG}qd=iuJr;J(hm z{Z<F}?Gxg@!NL7T2ltqR`*RNNJ0`@v#lihn2lvem?yozz4^N1D#KHY;2lqh-_gRiM zzi&d^V-D`y9NfR;;9g;Jm+Mu(i6hsmDf5L`ukM!;f<t=vTd!A%K3`{^c)eOJH9hgV zu6(IU2Zl-ua$WZ!>Q%nql*gMUjk(5N^wRt5b<wTT?<(zp*@N7#dku8VXY2Uy=#=d` zb8Yis=uXnne%&kRaeTjSoCbvQi_t25C_=<`Mik|0B;{y~$_P<Fr0yK at -v}LnavVZ$ zG9D6b)y1Ch(*LRFp&Xlvz~TRxfbWd49U-5nbsuWU-4#yf5kUBuAaQ;yc#-co4()Q4 zioHq>`Gdfr*2^LEd|uu`b9o|qGuuh#@&Hkp4V*^kPOX&JDxoBVrgPdkgywcwC<Q`i zY0%cNh4UFe3IVYw4+0|BQJl_$fLPWbnok1qF1TAVKX0Q$Pst;AO71r))4z4lKY7e# zcJ>JgUqP(`;2;u^w<(EWLA(&y?&S+f1)HW-fXKUAE^{3q@*b8$!hmR~XleQ>8$=iX z>Oa%OVP~S^7$FLl#geFHhYSJokj)wo0wUKEocl9?$Pto5e#z)OaIHo8bwK23%yA}> zfo+=30^~-M7ulH(N}#~?(#4UgKAW9OQH#$P((=myv0JqfkgX<VqG$j@!D_vm0co+} zd>IfwSX=)3E+BQNMH<M~8%$|qylu27i&1X*;z`t!V++^)SwOa%y%NaEi-7oSyj}w& zW`i69M6O^tom`ZY-?=<Qrw9<MJ?r9t+Ql}DT?!l at a4o%R0g2dj*8!nG5$AP1lF!(1 zJ`2c~Y+4KfV%PM40pdq3i`SEYth3d677)H8?GwBX0&>*GYZMT<@5kl&6Ci|cwXrF1 zrreq2ICT2PTQ)jHfXL?s9On{1>TL3S91xP%qD;@08*Ml-Kz5iA9Ed`P1uI?#AuV|8 zy at 9naAt)#&1Z6}F2NRL#g8&HKKaawn+GM^LkUWzzVLk-N6E>V at 0FgV=;4Y3K=1;^( z9tuAPjx`q$<TrrGJw1+d43N#HUWAi}gPGcGklBD_03FRyP%Z|9+MQ*wD*({|vvj|j z;iQfUt$@%3!E5RKP-Ugirl|oO*><>u1Ay$d>HZ)f{ArHV^ie<tZ8HA|5DG+t(>V-? zX5z^6R1_0J*uMu33?fDe@@W_&zYh>guQA{ZLk)-|DCgsa!THEZx!H*UO1aHqOMpYc zve+sIqzMp`)x!A<Ah*~gyv<STen9Rp?W6N!wH3du)=uD*GKf#e{2U;K;AP4DYe4Qc z>5!}$*bej~CYk7mHz)vkz=m@%AotmLtpH?$4JQnU4-oP_r;`MPMlFl-Hb8E*)!GHf zA>dfGo&&_*#$E>G8K_{j%;SK>OnI{LFtWHM)YRRk2XQV}Tc}HBW8F=(TW#jU(bi5` z7Hn#wW4lDfNH`jj=~jHl+st&~I2DP5Bfv#cu)*O)=DA!rTtyxsi6&(~)d&FRK}zF* zq!u>OQibMXviH+!D=VcmHi0o_NqD;YY1XmZiWJrPp+fv$UTL&TJ+vq_--3UcS9H4S z5jrdns753nYD<Ib?Ktoag)JdEZAy=c^X}-sZqopQGmb#h at hUbBNrIzv9jBnt?tZAY zBiI&NMhEce`sFxEp{`~PPKBpa+H}3PYei?YCmuF}I2f=tD$d+zHBhQkNr=`MojAfC zehGya;@Bba9Txco7gDAt$j at dfu2@jEcrjJQ7hc*TolQZkW$A<fevZ66{LWTRYNH%J zW=G|-!{vxVJQTyZjCxyFYcL$a8T*QU1y1JU2kozhO>hhzLCk{(1&rNl7U+6csJR>B zZ_=A_9DkUaBn~um!ck1;1<_%Zc5>p7J4lv7iw@|M1OZ>&u%f<pd5vDTrlz5KCC(TO ztgMo!nCkehfc+Z=wd75_6I at YF*Xu&@XehF9fgXgzsL#M=kdPnMg((o^Q_mB^;eZ`6 zz-03}!FL9LLFZ(#^S(Hdw13fNv$D?G)_AgjE#t#y9=)~M;ICW-aIEH)_;L<xf#VDH z&Q at Z9f8vJqaEK%0WG at i^>&;3!g4d$0cXc=65D<KUK^LF-;qp<7#odD`@yR}k0PPrh z*g_X(vA$Vg;qaw|=p5v^2u=>cHxYDv$)TC-jR#~YgihkknibVH711+esj3UF&=F(l zrsZE4z at lBs6-#Bww27fd)1n9OvW25CRA-mXLd+k0&JxZ+%aZ40+P-BWic>$OK_GO0 zy$SuFv0&63pQ2z*oW=wlgGO7FdV_ at xcGd?n^l|E*v>R{-**>a~(ng^)lgR2U=4U)$ zu(Y<zPp=dGMA|I%<Y4M^DWb~W!cT<b{+89!xZ+zG>@y=^nl^CQ1_;sqnoW=KL+M&V zy(x+iE&1gU>GkFmuQS$Z-{>I8PvBGA*~p?bn<v-lX@;d{&c4<m><VK=aLgHd$zOoP zEu*f}|M86HZ~0LVlZ5$o5J`c5(L+zy0c&jP==Syt#cT#S(dSfnqu^aA)k6H6C9tDI zk^1z{qDX<o7&p%FDZfslpYZc3dV24nK{v&!a+G63K<XgJM<yf1&wA?2YmI(vXcsMe zV{>x^laxG6Q7CX?;ZnZMqK~7#>@YA@>KTpFQKl)W)ryXQY1e*Qx4&$GT*`<sv#Yz) z95R__#K|4p+kAXU9nx`}aZ4z!w?=|(T`9wwWq}lAtKVBakdJ~+x{No5pDOz|cgR2T z^EGLMJx-03W4)|A-p6 at BA+6KP-h9%@$dWx}%wl}35}_5F`cFJe%K62%WVFt?6wTt~ cJ*T at 12dh96Hl-NSz1AErCnCApa2oPI0GHmX2><{9 literal 0 HcmV?d00001 diff --git a/images/lib-x86_64.so b/images/lib-x86_64.so new file mode 100755 index 0000000000000000000000000000000000000000..8cee4d202fc167f5cb2809048577b7c130dd0567 GIT binary patch literal 5467 zcmdT|U5pe(5U#ytVO3-i0TD4wKoih7ZV>P^LHAe=2DAJKcLsxInA_ds*6fe&%#p(w zB{@hGa)}y$9(>UFqS2V}pb3%~fA9}|xkOF;&ly5;iiz@|;tOk4Pk+Zu?_M+}KG>U` z>iVjxtGc_or>7t3Eo|&cBnTx*w~^vzgh);cK2Ae}C`a9t;^$(zLg}V1h}vpPv=EfY zQaa*eCjTuhw^AVvI;lfCrzz~ZwB2 at Xw_V$T9?<%r2wS=%|6N*c(rZ{I1yppU+<7`E zNu2+*ME%WYqa^<~ZSAN0 at sr2it{p0#uRTy$_{`z&zj<x^Pia%+(iI6y{5<-Om7p29 ziv*j+|BLv4{M3^V<$J&Q`O61(EqQb7?3^>7{W6E)X-kr=K9+_fMcTI_JgV1EgD+ux z8I&UQ9<I-&v#mw5tO!c9S>tH~-#!gKm+^TW;#{ck*_77v%WPO&cW<pxcm2R?2ChqP zrCtfh9b`hTTO9GE>QyTbmdU+ipSz>Hx8euoX1?nAe%YsLWuR#L4SOxQ<&qb8Y%}2d zVQUQ4OSGx5d41kpWv{Z=z$H-^&kKGbD%|Z{mH4F$FRt(ub&(gc<fJTBLmq%1pBdsZ z$CAS+Uq<lglubl%<f5|C<14ul#huZg(~~zcIQfY at e&dHT`hNOEYt6+;i(1#t=4WPU zj%&gXv6z0GXti2m=Nw6W&}ETx=$)XeHLlDaN9jMXZh~dxJa)RLZ|CrUGrI0&;e*-E z*t%H>izZ)@R>o3iIK2vE*M7^yIkMml)+wx<aNa$abjEhIoLj#3t<2I564ZMM=dlG( zv%IG@|8rJ7%vF{*Pk)%&$JNB{o_kK77|bj^$RQH-v%_a4b2)%uapB0-%UNg3p>KjY z?EeuKoa||x$}FXmC&GyPS#PKAR8C?UJ=Y4ZbjGf}i5b>&M$e?Vk4KUs7(OeV-7U6i z{4#1lc+`|@^<YF5ASMqS^PJFt<cO5nA(>i_muepQ{oDCgL!blN5NZFiP7=u%DaW+@ z;*h19rk7~CNYkXIlRAHNGX%NpNm3+#q+AgaI;stUZ`VBXc#qbT{YVPhJKqZ9&uV=h zAJrd>!>^iOsO5he^02l4{)zX4>FIYJ7j4StZ?#tNR=v_%ZLhYo)~amwmh77BT5H9Q za>;VMAjEH2y^?qI|Dm$&@2>^k0NH-f4CxSR^+r&(_tuB)f#FKEbVH>?iW~C$A+k&R z>ued)pczW`m79L0QI9b$%bMk?CkDE9e>EUmZPa#99^ty$uI=)WJJ|GUWwMJwqv><g zA-S)}O~~#n?bywR^6AwoMfTHRYkt_ON#45Iwo$8<>w!6;|B}Co?IicHUZy)Ap!w+D zE11py-#NEokM#`NtqqZGSXUb66BUuHW!PiAgZ`=&#johV9_uj2n6wRh>>r at mFIYtt ztWWR`S7hzN9_tkp`v&5N9%w(?%U%E;`vIt>9ZCG+8}VzHN?bwT1jGIVx<^1R at DF?R zzs|C#{ZXw53O#{k4>j#a7?ZfL-{SlP3VT*jMSMkz&rH;QLi-1`qRL!{J<bsi8}?HQ zS}|=*80^sOLBk&J7f|!S2>-A at tnD#>i}Z^K)YLcmr?frh$4XhMX`JuPcrpG;i677L zU%CkUthUeUIR4K5MZ-R)?Q`1R^k?!f8TNReJO9xBb+(t>LHu~%;5+4jo<EEm{G(rQ z8UArz9M=hH<{#`q-!ts-{-4zL7R#drcA%fKQ0j;u=lHZf5Fk#p0Xy*HTrpBqiD3T& z6g4$<FJm0OqpCk@|6fHxuABD4BX^^!PA24z>VdzK+3Wa^_%W_>uIc3e+~uKt(Qs(6 zq0%(ZBu9()NmM1t5hE|+cyj8z7sqE1_VYNNBJ9&~d?sZ(bSlYjI_#@){q)p1Fpjr> zPl`OrJLyEn_W4bQM2|F-<kK+rqX^9HTuRty;`kiCAF!g3swXK!*dL<8B!87*-N*6E zroPMK_&mZojpLUS)?XZ-PgqxRd;wv-#BuqWjh8S_+s8-pe+GY7$F+&%J3K+{;~+Vl z=r9i53U42WUdFrlgkc%;vRmn2h#z@<pT_6Tvbc6(y^L^O+IhifXS(<gvcAN>!kEVz6y84X&nvt={#Ui%al`MsjCUHhkEEThvn_MJzEgO6KK!Kc40RiE{-N7x%M%_bi)CiX zOoK0Hd|rqAU&;6~vk~Td8JBw&Gq3K{xOx9_*EIU~GT!N)g^FIa8o5%TVl(iA;lV+> z$af?8zHK|)!seZQa?|2&h;eu1Bcf8n-CJ!8cvV-O;azWdg!o{7f3+NxOZM7T-D^k$ zZlyFL+|8s8{%&cwR@)Chy<0aZHyd~KZ0U8ui5t`}cu^k=$_wA<NT{0%+t&9K+-(~- z?(FSz`+C+FdL`tN-*AV#da26SL1Fy5tqpf??b)(9&uIKQsl%O7r^}^WE_zSYc8P?` ICH2ko7w~UU;Q#;t literal 0 HcmV?d00001 diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index 4020c24..b3373de 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -300,6 +300,160 @@ sub resolve_windows_path return $path; } +=head2 file_architecture + + $arch = file_architecture ($g, $path) + +The C<file_architecture> function lets you get the architecture for a +particular binary or library in the guest. By "architecture" we mean +what processor it is compiled for (eg. C<i586> or C<x86_64>). + +The function works on at least the following types of files: + +=over 4 + +=item * + +many types of Un*x binary + +=item * + +many types of Un*x shared library + +=item * + +Windows Win32 and Win64 binaries + +=item * + +Windows Win32 and Win64 DLLs + +Win32 binaries and DLLs return C<i386>. + +Win64 binaries and DLLs return C<x86_64>. + +=item * + +Linux kernel modules + +=item * + +Linux new-style initrd images + +=item * + +some non-x86 Linux vmlinuz kernels + +=back + +What it can't do currently: + +=over 4 + +=item * + +static libraries (libfoo.a) + +=item * + +Linux old-style initrd as compressed ext2 filesystem (RHEL 3) + +=item * + +x86 Linux vmlinuz kernels + +x86 vmlinuz images (bzImage format) consist of a mix of 16-, 32- and +compressed code, and are horribly hard to unpack. If you want to find +the architecture of a kernel, use the architecture of the associated +initrd or kernel module(s) instead. + +=back + +=cut + +sub _canonical_arch +{ + local $_ = shift; + + if ($_ eq "Intel 80386") { + return "i386"; + } elsif ($_ eq "Intel 80486") { + return "i486"; # probably not in the wild + } elsif ($_ eq "x86-64") { + return "x86_64"; + } elsif (/SPARC32/) { + return "sparc"; + } elsif (/SPARC V9/) { + return "sparc64"; + } elsif ($_ eq "IA-64") { + return "ia64"; + } elsif (/64.*PowerPC/) { + return "ppc64"; + } elsif (/PowerPC/) { + return "ppc"; + } else { + warn __x("returning non-canonical architecture type '{arch}'", + arch => $_); + return $_; + } +} + +sub file_architecture +{ + local $_; + my $g = shift; + my $path = shift; + + # Our basic tool is 'file' ... + my $file = $g->file ($path); + + if ($file =~ /ELF.*(?:executable|shared object), (.+?),/) { + # ELF executable or shared object. We need to convert + # what file(1) prints into the canonical form. + return _canonical_arch ($1); + } elsif ($file =~ /PE32 executable/) { + return "i386"; # Win32 executable or DLL + } elsif ($file =~ /PE32\+ executable/) { + return "x86_64"; # Win64 executable or DLL + } + + elsif ($file =~ /cpio archive/) { + # Probably an initrd. + my $zcat = "cat"; + if ($file =~ /gzip/) { + $zcat = "zcat"; + } elsif ($file =~ /bzip2/) { + $zcat = "bzcat"; + } + + # Download and unpack it to find a binary file. + my $dir = tempdir (CLEANUP => 1); + $g->download ($path, "$dir/initrd"); + + my $cmd = "cd $dir && $zcat initrd | cpio -id bin/"; + my $r = system ($cmd); + die __x("cpio command failed: {error}", error => $?) + unless $r == 0; + + foreach ("nash", "modprobe", "sh", "bash") { + if (-f "$dir/bin/$_") { + open PIPE, "<file $dir/bin/$_"; + local $/ = undef; + $_ = <PIPE>; + if (/ELF.*executable, (.+?),/) { + return _canonical_arch ($1); + } + } + } + + die __x("file_architecture: no known binaries found in initrd image: {path}", + path => $path); + } + + die __x("file_architecture: unknown architecture: {path}", + path => $path); +} + =head1 OPERATING SYSTEM INSPECTION FUNCTIONS The functions in this section can be used to inspect the operating @@ -1093,8 +1247,8 @@ sub mount_operating_system $g->umount_all (); The C<inspect_in_detail> function inspects the mounted operating -system for installed applications, installed kernels, kernel modules -and more. +system for installed applications, installed kernels, kernel modules, +system architecture, and more. It adds extra keys to the existing C<%os> hash reflecting what it finds. These extra keys are: diff --git a/perl/t/500-lib-load.t b/perl/t/500-lib-load.t new file mode 100644 index 0000000..1407169 --- /dev/null +++ b/perl/t/500-lib-load.t @@ -0,0 +1,26 @@ +# libguestfs Perl bindings -*- perl -*- +# Copyright (C) 2009 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; +use warnings; +use Test::More tests => 1; + +use Sys::Guestfs; +use Sys::Guestfs::Lib; + +# Just check Lib can be loaded. +ok (1); diff --git a/perl/t/510-lib-file-arch.t b/perl/t/510-lib-file-arch.t new file mode 100644 index 0000000..a7cd746 --- /dev/null +++ b/perl/t/510-lib-file-arch.t @@ -0,0 +1,64 @@ +# libguestfs Perl bindings -*- perl -*- +# Copyright (C) 2009 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; +use warnings; +#use Test::More tests => 17; +use Test::More tests => 15; + +use Sys::Guestfs; +use Sys::Guestfs::Lib; + +my $h = Sys::Guestfs->new (); +ok ($h); + +$h->add_drive_ro ("../images/test.sqsh"); +ok (1); + +$h->launch (); +ok (1); +$h->wait_ready (); +ok (1); + +$h->mount_vfs ("ro", "squashfs", "/dev/sda", "/"); +ok (1); + +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-i586-dynamic"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-sparc-dynamic"), + "sparc"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-win32.exe"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-win64.exe"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-x86_64-dynamic"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-i586.so"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-sparc.so"), + "sparc"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-win32.dll"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-win64.dll"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-x86_64.so"), + "x86_64"); +# Says "no known binaries found in initrd image" - why? +#is (Sys::Guestfs::Lib::file_architecture ($h, "/initrd-x86_64.img"), +# "x86_64"); +#is (Sys::Guestfs::Lib::file_architecture ($h, "/initrd-x86_64.img.gz"), +# "x86_64"); -- 1.6.2.5
Richard W.M. Jones
2009-Jul-28 18:03 UTC
[Libguestfs] [PATCH] Lib.pm: Add file_architecture command.
On Tue, Jul 28, 2009 at 05:59:14PM +0100, Richard W.M. Jones wrote:> This patch does the same as the previous 'file-arch' command, except > written in Perl and running on the host.Attached is an updated and fixed version of this patch. Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html -------------- next part -------------->From ab715a8321f96f9b1115011d5a40e70ac52d672c Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at trick.home.annexia.org> Date: Tue, 28 Jul 2009 17:55:35 +0100 Subject: [PATCH] Lib.pm: Add file_architecture command. This command detects the architecture of some types of binaries, libraries, kernel modules and initrd images. --- .gitignore | 6 ++- images/Makefile.am | 44 +++++++++++- images/README-binfiles | 13 ++++ images/bin-i586-dynamic | Bin 0 -> 4616 bytes images/bin-sparc-dynamic | Bin 0 -> 5060 bytes images/bin-win32.exe | Bin 0 -> 21617 bytes images/bin-win64.exe | Bin 0 -> 44557 bytes images/bin-x86_64-dynamic | Bin 0 -> 6484 bytes images/lib-i586.so | Bin 0 -> 3834 bytes images/lib-sparc.so | Bin 0 -> 4536 bytes images/lib-win32.dll | Bin 0 -> 16402 bytes images/lib-win64.dll | Bin 0 -> 34777 bytes images/lib-x86_64.so | Bin 0 -> 5467 bytes perl/lib/Sys/Guestfs/Lib.pm | 161 ++++++++++++++++++++++++++++++++++++++++++- perl/t/500-lib-load.t | 26 +++++++ perl/t/510-lib-file-arch.t | 62 +++++++++++++++++ 16 files changed, 306 insertions(+), 6 deletions(-) create mode 100644 images/README-binfiles create mode 100755 images/bin-i586-dynamic create mode 100755 images/bin-sparc-dynamic create mode 100755 images/bin-win32.exe create mode 100755 images/bin-win64.exe create mode 100755 images/bin-x86_64-dynamic create mode 100755 images/lib-i586.so create mode 100755 images/lib-sparc.so create mode 100755 images/lib-win32.dll create mode 100755 images/lib-win64.dll create mode 100755 images/lib-x86_64.so create mode 100644 perl/t/500-lib-load.t create mode 100644 perl/t/510-lib-file-arch.t diff --git a/.gitignore b/.gitignore index d66ed99..f2064a3 100644 --- a/.gitignore +++ b/.gitignore @@ -81,6 +81,8 @@ images/100kallzeroes images/100krandom images/10klines images/initrd +images/initrd-x86_64.img +images/initrd-x86_64.img.gz images/test.sqsh initramfs initramfs.timestamp @@ -123,6 +125,7 @@ missing *.o ocaml/bindtests ocaml/bindtests.ml +ocaml/dllmlguestfs.so ocaml/examples/lvs ocaml/guestfs_c_actions.c ocaml/guestfs.ml @@ -156,9 +159,9 @@ python/guestfs.pyc ruby/bindtests.rb ruby/ext/guestfs/extconf.h ruby/ext/guestfs/_guestfs.c +ruby/ext/guestfs/_guestfs.so ruby/ext/guestfs/mkmf.log ruby/Rakefile -*.so src/guestfs-actions.c src/guestfs-actions.h src/guestfs-bindtests.c @@ -166,6 +169,7 @@ src/guestfs_protocol.c src/guestfs_protocol.h src/guestfs_protocol.x src/guestfs-structs.h +src/.libs/libguestfs.so src/.pod2text.data src/stamp-generator stamp-h1 diff --git a/images/Makefile.am b/images/Makefile.am index 56a22fd..0ff91f6 100644 --- a/images/Makefile.am +++ b/images/Makefile.am @@ -22,7 +22,18 @@ EXTRA_DIST = \ helloworld.tar \ helloworld.tar.gz \ mbr-ext2-empty.img.gz \ - empty known-1 known-2 known-3 + empty known-1 known-2 known-3 \ + bin-i586-dynamic \ + bin-sparc-dynamic \ + bin-win32.exe \ + bin-win64.exe \ + bin-x86_64-dynamic \ + lib-i586.so \ + lib-sparc.so \ + lib-win32.dll \ + lib-win64.dll \ + lib-x86_64.so + noinst_DATA = test.sqsh @@ -37,7 +48,17 @@ squash_files_src = \ $(srcdir)/empty \ $(srcdir)/known-1 \ $(srcdir)/known-2 \ - $(srcdir)/known-3 + $(srcdir)/known-3 \ + $(srcdir)/bin-i586-dynamic \ + $(srcdir)/bin-sparc-dynamic \ + $(srcdir)/bin-win32.exe \ + $(srcdir)/bin-win64.exe \ + $(srcdir)/bin-x86_64-dynamic \ + $(srcdir)/lib-i586.so \ + $(srcdir)/lib-sparc.so \ + $(srcdir)/lib-win32.dll \ + $(srcdir)/lib-win64.dll \ + $(srcdir)/lib-x86_64.so squash_files_build = \ $(builddir)/100kallzeroes \ @@ -45,7 +66,9 @@ squash_files_build = \ $(builddir)/100kallspaces \ $(builddir)/100krandom \ $(builddir)/10klines \ - $(builddir)/initrd + $(builddir)/initrd \ + $(builddir)/initrd-x86_64.img \ + $(builddir)/initrd-x86_64.img.gz squash_files = $(squash_files_src) $(squash_files_build) @@ -86,3 +109,18 @@ $(builddir)/initrd: empty known-1 known-2 known-3 rm -f $@ $@-t for f in $^; do echo $$f; done | cpio -o -H newc | gzip --best > $@-t mv $@-t $@ + +# Create a dummy initrd with a single file called 'bin/nash' which +# is used to test the file-arch command. +$(builddir)/initrd-x86_64.img: bin-x86_64-dynamic + rm -rf bin $@ $@-t + mkdir bin + cp $< bin/nash + echo bin/nash | cpio -o -H newc > $@-t + mv $@-t $@ + rm -rf bin $@-t + +$(builddir)/initrd-x86_64.img.gz: initrd-x86_64.img + rm -f $@ $@-t + gzip --best -c $< > $@-t + mv $@-t $@ diff --git a/images/README-binfiles b/images/README-binfiles new file mode 100644 index 0000000..f99fc84 --- /dev/null +++ b/images/README-binfiles @@ -0,0 +1,13 @@ +The bin-* and lib-* files are used for testing the +Sys::Guestfs::Lib::file_architecture API. + +The bin-* files are generated from empty source files (ie. +"main(){}") on the respective architectures. + +The lib-* files are generated from a (really) empty source file called +lib.c which is linked into a library using gcc -shared on the +respective architectures. + +If you are concerned that these binary files "lack source" then you +can just remove them, but you may need to patch out tests in the perl/ +directory. diff --git a/images/bin-i586-dynamic b/images/bin-i586-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..4f770633b47386ce8ab5a99eb6e35d1ae57b9de1 GIT binary patch literal 4616 zcmcIoU2I%O6`oyh8VAzWcGF<Mz?JG0r_{G=Ym;ms2s`#VcDv1wy(x~O<m!6&+IwMt z%<kRPeyHNG&4Xo(0tK}^pc3dqP=(+Dp&}}j$W_uxMT+{`2g*;SjR at 5uTI7eQm+zao z<6f^DA%r;6*_m(7H)qb=duHy;o=>I6B9VyD5*2NNXzAOr_5{jDw<}9R7-GBV6FuV7 z;vO{7mRJG@`VQ*UZO|CB4Y~_Xc3p_IQy&1P(njA at Dd;PpqcBj}UvwzDZ2JLh&~>(> z6UU`Jieei4Y1pW*15;_|7}P%S`!F`u0H$i&iFdsm;1<#SA1k;sj}>zL1-DdNFso&A zQ1!*oGWH`!Ps+ZGgMD^DS?9btH#rYO4k_Dy at x))QqIr{$r^P^JZvb9|p$qlTK$FkL z+8J}FxK9Ynnk$w|R at JjBo@EJym}O}Dg*9;utvR=3)v8VoJemSt(RNGXNP6P%h&5=& z)eun`V+6mP50%p4y7zJxUr|sPKa92CgIMAyx1&t3#3WBHzgxfE-f%%{H2L!~jBl(7 ze_tOM{+>tiOBeng_RO<->m47mhaU2 at -MR@#17+avXP5s}|7-JjW->ot2V)68C!We@ zP&96U`2M9!7;~zAJJulo^o2DK&u8ViJFs1R%iGrYJ}T3v-&ngOCEzZ7b%=q~zV^y- zBuIZ6KiAfytJD7FLufy^cJ2$SzkZnh>Q^H_W0Sw at B1wVy>BjYKbP%b(7CU`rZPj~N ztiJk1^40t=XTZI9)$4kNZK&+H5$k1}e-nYMrh8+UlK-tcV4pa3X4SqEL?`Fc>hJ4M zO*PKK&4slebt0hKJ&or-^!?Skfr%}rnyRul)x7phGrDrJiAjHHz+b+;`WueDlIp16 zh%Arxwy&giqKK`e+LvR!{_gtq*uiI-wLjKh>p6YaI<vOY)5{?Ee16A8g$H_Bmg~N^ zv;Mc3e{-d+zV6rFS5pq2qkiVdLDBdL!a9W~t at 4~1uLN<*_o+*^A}eHW?L-;JUV`Kj z-N@$;KJ?4uSd&~MS5R{O<WYVCWeWO9D0A{bD1~G7;!SWgw(o)>7V#;l0l%zwqvV=l za&ezwiBQYy at QawrjHQY4Jz!M-YvCTFJDtT?C8)$lMn=AD^kF;LYb4A8bI=%!#}5n) z3?_`eNhfEF+n#FgPYhyx|L^Q%{6KuG at 5Ehv|3BGxpQTw{EPD2gFsoigm3durOP*7i z7iOvKIp*-;iGI(X6Xsm0X6Ef`UYNPX5<08Wt0>Dkr&4vxrA@$st>P5OSC#pKCrr2G z;@5K)@H-0tQ#ogQwlJN%HCwTZjxe)cxl+Xds`y40j^M;Dx>*cRMo0XZ(wpizQw2L) zE*71Vr!(L`m!AcNImeup-#`H7r54&K4?+2PC6C`JezOeJwQ%pJ3_$;d{3VZTXFT9( zJ4-6}Zmu8lxTf;p4WZ7phN|Rn4UIs#uE at Ir-W3?R_Oy^oc>>DyLmt=8doVEZ^|)-O zPD8ogSm&Bs2hTt~JT9P^gYJNm$2HrHO4uL$63;_5k89ijk8#t^`DxxF>Wr0p2=|yc zc-$AX=s5Z6G;bWdaq!}rgpxe!d8p>`{Idk!3v394F;Ff-HII8*H#+x7i~7;yt^_=| z5ee`TFmONAqIu7uf&R!F0&fTgZ6jCLe~dbLe0SWsc}7wj5gH(x_Y&%w$B$b2F1(jR zJbt_~;AtOWf4>6YGv>JR%mvcxsPp|&*oSfa7OKbP`N068)gSTiLp<*7z2I?Q*Fp~U z22}e?f|vXlf9&%ID92}f{FWaA at 8h1!Td>og7V>yb)uOBXrqGv`<Cy&08lcoXmV9Sg zzJuh9BXF*N<`?I{oMA49{k?j>5b01y?GLmq!u^Ad>Qt`w35Asd?gt915xDLZ=ICmD zD~!oP^f$0gzEQPam7P10T9*o|C&=}uFlV9GnZo>HV?Wxkb7cy7Z(!LLWIES}!aM<} zb)YcLv=HXI!gweU=C#6VwK0Dc=35bhd8#nK_$nV2Ry!>7PGOZ%%rAx2iGq2g at NO0| zUlb1S9E`tPzUP;M`9(1w6 at l!Acl!^YYhK68)AS?2I^GD_Nnjms1gH8GF!PgdCW4)6 z3Z*<{26zVL&CqxYz;T>|Q6SH at j{hv$$Ajm=@xKSGpJzneFJ1%=kI(hq4EehTtcCMz6F|>LL_5TvTkt=D_4ABG9~3)~xMBY1T5!At54Ye9us&Nwq7R5O!210dVz=P;i+2KM zZWrdi0L*<EP~!8zS`1Xa+k$@z%zc;7n|G+61M7V368DN<27G<zdJ{Mq;=fHC<Vy$Q zX#gJz^0hO1pZEZn*9*qb8SNBNEJ<EpTwuoA1<dzNdk3EH=YdB<_ at Ng2Bfz(U_tO>K zDTaZ04`L?M-xx5zbM)6Gu>P`kp%A(jifqNJdbQbEGmC5BNaon2m7bW&;I?R4qnps< zBO4~3g)BF>VD39`FfMS`nJ+k=lLJg9(JxoF<_hH*yI{#flV#Tyggi`HxmvNfsK-ei z9hJk3O%6YqvNYl_y8e+Pc?gq^X53Q0yDzz4#yekec!aa;O2uAO_g8r5NiJw|O1Rw~ zNgq2roVJdQjZLL8R%ZBcI>qU2?kt(%uJYClT4(^p2{i<q(Njl<pPU#GJOFM)A+OZg zYEAkS8_k<;<ksWotVw6it>Tb7Qn0I4rz))3c`N at k3XFr{TW;n<Lmyqux7^}4ji0NQ zt-M{z6&!exuTnqOjmS6?7;$3N;mH{~@*s<u at 5f`Fb3AK4YkB!v>6_-vf{=d?$cG~S E4Rlo`%K!iX literal 0 HcmV?d00001 diff --git a/images/bin-sparc-dynamic b/images/bin-sparc-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..138839af7840cc549a02937310df21c799984b7c GIT binary patch literal 5060 zcmds5Z){W76+idcP7DMvAscCE$4g;rkifV!MXY1$Gf4=PG+}8vwHw;AV>^jA$42%G z3)LzTK>MevLlc^+im6sbt9 at wEK24KW2`jAxAJ7(c{kUl<?X-UA2d1fAD at Ay}-+k{o zPR1nqbyqs?oZmg?o_p at Of8KrX?7+|wWhrSCOWGkTQPvW8ugE$LA=wg at 9(h2zP|>1w z3biCWe3A%+Fen5JT|gpRQAeV#VZ0(mY9b`G_d~%G*a}G0Av8M*eQTh%pnnf~pG0mz zM`B#;0|a{&kVrr3NLrWm{(b`OPl^gi<bLQ#M*l6ycPrZezCwO{Um?4<kT1^6#w(@x zer?LOF_0P at e%iD}oH{1vl===(i27}dKW}|Dl0W}^&&^vqUVJEj`RoIO(9xd6EJSQ8 z1*UQ6({B#%t9@|%O;)Tae#TH~`-<ISwR}X8ouYJMoMYhOEh3x5btk7wMYrOm%bx2B zhLYhB4v2ef1hv_G(VeN}vaq8nu$xZji!wNL>~NpEKc3KD85euTO2L!kCdtNpo}6R& z1~Fo(!ieLh{1?by3S`7+X?gzbrRddAZQHLuxK`aKk~~|lFJFx;MME$=7fXc~A~iKv zO^G!pVRq(7a=p(b8StNw&tG4P&g+ru9`xfaM00s(we#Ij^_fed>Ph4vxeat5=wiEV z|Ehf{_0m?`c{wJ^5$E6Z(_9!+H(W2YJ-Eym+8yb72pGF!{`HRcZ~S;m_st7-ZR<|p z*A7;#g>Xi$gs;`-s!sc3j%+#?v(>8|8965 at wXn;P^F1lp)YL0AM<;F}><DewkJLY> z4eb~9Jh(jnr==)kVgE)>Oi6 at w%|t!MG{0bVFX|jQvhHGg_hJZk$Q^tmZ;t4^nLdrb zd-2b?q22!~MsMa2G3vfdjKQ2bnA6X$MsD?j>$&1V5yaSbAy$pv!W at 4XsaaQc&22e< zsJdf*E+to%t6|HL4b_+}%+tk~bpA3X_g#uf7spZ!+iLEL=-j;;PKC|55JRZB|8C@` z+R^>aLilma;n_NTMyrs0ACE6DU}v(veWbq3cE%6od&xh>^h4dwtUrHeh}s_F9_R#F z_4=I;!4vg*o##M5NbeW*+^B?qv{`L$+k`4z*9qG<AV*n&!uESm_j_<pk{iFWw{P9% z9n_$}U%i>@N`Hyae;dy67r-~-3~);IJD=c8B*r<bZiBag{}y~bXaKYU#CHB3<rG;h zjD`D|ad02Eg0{hLLCeZYfiu=!AigZxN(dHu^rvG};J1MfK=;K8&vzCpQq%OsT629R z64&bg;@m(!1o<{)k}iXNeUI5aIF5JQz46|7!rq at qd_B>-{}H=qG?%rHraixY at 58%A z{_l<Bl{3>`dR*cauk7<FBjt-;u6#=3#gdncCl4Rn>!l|HG+CU9kI&@sI?QJ!PBfLS zOi4U at rU-vN_sYKJbgo><mx`-^3tc%^NV7p8oho<|&lmG}dbwFVCjg);Wz$|-;<+hz zqMV-2xl>uRHAvzauT-v}L!W&=10{T>r}G(fSb`hB`FI6JnbP!huIQPCa8G<YthjWr zyK%4K{l>r3n8s#V?L-Cl2<?u-4kR|n6z+ePhe5_}3U(m9hp1yQcKz5tp90e#_O9N) z+-p2SS!hQZ266w=4trYfYX`Um#Mo%Vz5Q(vwu8324HZc5eK1|jIKCI`U-;wR)%!OJ z3)3&p1kw*+cSp<0a!>`*<8AI2Rq`B&G0<NM421J(#UFLV7eK}iXN*2)c=oX0F9$l> zy$DhuoM9H)kmLl&6#8Jf1TuC at up^~VXNnyNFM|hm5eMCY^mzxSi}6<lq8-M;dzHRh zF)yYVyWgO~*qwwONZ&En+WoG{ZWeYRIcki+jlUXX`oozVflO+=BOo^Hu0u9<H(&?4 ztKA=)>=t1MYWRTIkpB#sbIE?+gB_ at G*M_L=qTsmOnSNU?qY21=$APnO9HgIt7+<UZ zZqe_TAz)L?c;81wFpieb;1AS at iMG_S`~$@P`L0 at q9Z0VuFkOtlkAX}Zh_qAsrR$qD zbhu8zSEEGvZv3PHSA5VH*MCqp{uJTG0PY7RK<t;8 at 5Cm5TV6u5J*YFKDJD}DaDC3` z#=ea{Pc-)XRr<`JbKk%JZYS`^?7!QI{XOfy^NBg17>WN*25t?oLk`S*QlBCN<`{?z zWWdY`@dYwqo;$=#WWa6YymOENZzK=CLx}yn^ZN at 0cr!WlT>He#8`2c1kpXi~h;NVq z`=2(JUbDpfwxphGlemK%>)|pPu=(bABfvaIsOOrZ9-jm#di`kJsd4at9-j-1^?~Hp z{|Ve?;=|-HzAh6VFyre1UIb at D#`mbGkWGxqV}6bY{VC|#-*?2))4=;P at f7T<;Ku$u zaIFddLX<zvfj>0!OAucb{lCK+C>Y<H$nRSLW`6&$Ccf+Nw?uv5 at 2{}8o3PFmap3=s z$*;1QUwq>Q^92X!PknU_J_viAf7m1cY7}}sU%;3z^<C(7ALtbGp(YTIgYKe8Ci10D z2kYx#fS-p>7h6B|d$Ac;5x>I<*kk>v*Wv%80E4Nwp&x_be;12-*YuC%u>Ze7{|xQ7 zSX{5_W5jziz;LNPM|>$@&yUAihxW_V$MpKZx2 at Hx_fdecK33_w(cXr6Fh1*R7~czQ z4}TjZQ}!y}%)~@IgHQ3kv5`@C=-5+Z_+oe6{#EFSz9v<+<W3e!<LQE{uR(5lW>#?5 zIaSDcxorH=1CJaOD%^Z_7N|ENnRKDxy6)ZD`IoHh%=Gjb->kVJh-qNBUx##LH2LI! zYY;;+@``7DKl3A6+v$pGJYVF92Zu%uCx_gTBS)SZ7<0#xhld6 at a$XAEbh(^9<K~L| zN6}QF|7eJNVsxZ$p#SO70px4=cye%{(YpWH;pCIY`h?d&|Gx$t=${;!%8aY;n2qXH z|47^?PP?PI$$SNu;J!k-Qpr^$uwVO=#Bo;slKj^Xl~o;QD<yX-UCb78W=2iM8X at T` Wu<PQ&YU0v^&gpxs{w1TwFaH5_!3g~T literal 0 HcmV?d00001 diff --git a/images/bin-win32.exe b/images/bin-win32.exe new file mode 100755 index 0000000000000000000000000000000000000000..db6d5758da020fec5272d4ec737f4d7d946da3fd GIT binary patch literal 21617 zcmeHP4Rlo1oxk_Jm&t at oAbe?5kU at gb-7+K)0=A+9Nsu6rK!SpbkI7^bMkh0IW`baC z4TdObq#L_-?Y8tRRCd>P*<E%^TUI^WD0D?vyKGO7+pX=^wz3V?y8T*fPg}FU|NVIH z%}juT)b4J%C-2>RfA{}&|M&B~c{gir8Db`5%)&J~%GeRa6vE<u=36g{$Ip0TJUd+S z;>;s_^@}rGx5hKU?sTd%9q9^2Bgtec8*GaO(>=*xJQ=KSY6*6w+GC-zvT>D4baMk^ ztNC~~slRI#Tfo={Ib*M|VqVIPCCmq+04{^Es)>lpaRqUab(989c7sL4h#32k%zSn? z6ZH}dL`w`Jb|L~9YX%Dmc$Y&c8{3|R&Lc&*kzG_*s*ERWVa;1Y?U8H*m at qwv1nSJj z;qrtqs~QfaC86+Z6$*)teCG+E3y0b=8G`ER7N%Qa=w;#IP+ZCrzJZT~yz#lTq<4Oe z#DWxU!9{w7v51{eZp^Q~M&$O=y&D(NO`?o9fNtR;0W^{Ay|_r{6kIt0bTx|w@;u2I z!bQHjN<f|)=xVD){x7JF_u(S?t8wK7&@Emlkb`tTgp26rQpOvqjQLAy1t6+8j3m+h zfq*<W$h$_`S4rh3aFKoQ^^k}p=&GxhP_lw<uizs3DqK0CoY3D&*f3Z&+#F^DCpV9N zXHWKOhWwG7{J_bUzSk?CwJMt at hS|tGbl1Mut&ypiGe)RRdm4WBY{SpUw1N7{^8G9r zX3y4FT2>gbRml(m5A11p3z2{1AHlKT53ql at XVu6sa)VPXund%s9EHTbSAR6}0e~Z4 zpc3Nr?<Yw}So?)6t8(NX1G<imd=exB(<(<EBhu-IVe?}`5=aN@$_GHW2_- at qu@BZ& z5!R54H4|11>{M!WbX3%T;AG$HewYp|Y;@{D$Q^m>?a|SpJ%>fF*`Uj*KdJJs=a$1? zQwAISgQ&sMhZ!5b`~6GzAWGl(B=L}U5RrHMh-AIr;uCh6DD5Af(EnMW)x&+qrrf&u z8H+7_1gzOjOaFwTE0+E-qMq-(_W7k~hhefe+pu&xVJ~{*lKhc7$)9iWY^HxWdkD%1 z+_R01o;ZS<j=uJ1sy@{(pSlBi4|geX&r{qjuxMA32&_sf7*hPFZUaX8RW%gcF?6a< zNfULIYDc~eX9~5aX6Kd)T~9lu#kr-zKaZib|7F2FVb_1c(<1{AEv5Y%IX*YY_Sqi@ zQXk8{59VRgV<Y{LGVly~ZvR)s3YVQsH7-NZz?9076iU(RU?>3t at s6H&?&y%}51WsA zRP0$@X`!2r-t{YJT1P|Sd6;v{rp<dIzal!IEqnLgGH_z&PiW~`|EayVe5(4yXDB^k z*O%bI>fs5WCZ~Q5=_6oe6F&XsKk;mFUs)g=X1t^St2<QM`1v!8^)g*#QI<KBevvhF zY5C6YqSVsa;G0i7l;Pf!!R)x5LVhoZ$N{|*KE0HpZS%<n<OW6Y!13M}xR4ZnjLgZF z_r7Qjh$7WrZq4zAsPD_)^I-o_37>A*`3s5$PG&9{TxSjPzNh{Ce#XK~;^`l_4642S z!7zpk8sO5=6N6JJw`aNam_V0Xm at G~`cXZDeU@!yyO&DP1gNyb}4YR(tN3-+#-^@<l zGwt(~?-&}L-1nN*_Xh8I6D`?01x<hXFGolFj+Nhf`{twQ|J7f8%@}xQ&vHH(=qHZ; z=X!oL at X~8f>hZn5JPi8>PQnyx^U;o>&CeDQLJjp=AKG_x_P*vYqxdNmKd$0qDn6j% zLn?km#k*Dfkcx*y3{{&?-SBG+CTD)xeCk2uRiDF%8103f6evBU(gL^uH<HQ1Sn at 8g z+zVjZMG^0U2NLnN&gdO>Ce)rtFniTDdwr}kp2^12b%{tO6U)2{CR|kUJM=)f*;RgU z9b>zZ-{`?!1-8$Vcd2FS1(baQ*Be9wS{<%LI)v*wT&r>2j%zEfZd~`^dH~lDE*&m} zoV~1Jdpz5mPDNvQ$XUm4h-KHL+IteQm62q7BDRdN1Ytz5ti3%=MC^M;ODww~xm8fK zH*Al_y0h_Aaz#9WF~H_9+wP2IyCU&qB;A=|*CO9-+p*-fcsi9t?PR`#o@(h)(zY|P ztR3m at wzE6Bf$U&*GzOcn!DMzk)doLsJCzjBE>6UfbD9ys^B~a;8JT!zGLjH}A)k7# z8ynWIZCJf<ff%bOnu4<5<m$?7i>9-hOM6_#(-0XVDR!lJb_+AwkX;PFA09xLRPDdJ z1TP_q8B;y+dL(sM{Vvis$CGO?4C>amwqzseY)?1yVSi2|!vh@#WMia6*>RQHCfv9{ zXdw;HqHjHf%eL!Uo7UT_8(Ug!n|($g^&aH+!~4JcTJA!d!1)LkzhUi$U|p~#v at o=Q zam*Oip(vZ*))P;(x5v{mF at O1n#?|%nyW+{tyVKcu3q#e5Le=v`b|D&>CXY#BA<nRh zdy+Jl#oF=iFUt(0II}gC&IWT)t4I`DMTu0hQxKY}*V$QSeS#k#%Pe{(F5>s$Zuljo zLvC<ibZaEdd^ErIbg-a#{}$}li|y`gnwfo+HfA9kg$?E|A!3$QY_~-+F=qD5Vt=vS zk%)9M^8r~NKt7&8`GYcF4tD4u@#by`O at WA>j!gU>W)4WCqS(%Mb$28qU10pM6g&;K zKMkw>D;iffFmv!Zs)11?9U&`TENYVDloG2LwNkzll{2{Cp^$)I@)a`s>u+vaU(bq8 z-iMm|mv3rqU`21x+b_eiIufZ!mie1+YHF-!zMH7w$62NJiq%caS{v8iV7Dy0sli^h zzF`^b_AM*^A&LWasbn^tO5B`Ew=>`J;(wLy3}6n(_GBblr%)@<8tIf!y at LFKhIBfW zZtCd3QpbD^3JyrPC6<UqvnjOQ3RO at ZsK@J0O at 4zyrwG)gUa9bkfZnVwOUEM2*C<Rj zW=#v!rK{F<Zzm&T%(qIBCs^5k!2DmMTH_x<qKTPf)ZBMtu>pz+c3soj)`pF(>;=QO zy7(2Wj=~psYr6tnCBuAclvoz1PggPDT9vhst!BO^mGvXLfcctLHh}Cx=3A$-sBgNK z`PQo}Dw<x*d at U+l5m-SD))Lu<TC^6E;Z(VnSmzDUzd=x$vmWAvtN?P8LWTs=0OV$c zJR*>KAR86(aUN)Bk2BvUmEVhe2Kif5ejoB}+nMiHl|MlA$ls>&k0T#NezVFSL_UK2 z?J9qW__0RVDt{RHIPzOm{)n)s4i-fe@)RhPYugkw3 at 8JpsLCG`Of6t)SIBWtY|qA$ z?Xh;<7f>1#?Pbn-fy*ZUF<P&jntYTqQ at 5+HqqqWZxy)t<SXnZuh-MoiFSQ#s)-^P@ zHa4xb*EiJBkZSfdmV5;S(5QBab+qmCtt!!@!YNSoxKWi at 6EW_YZ?#}IW?@ul33?yu zTT}8=F|-1KwLM*Jv2=3;KcU312Ss((Dlz3QUt_W(mF|krRuz4%<ZCd?m^B5qS0GhJ z_PmOO=;q^5#e%x{nuRUiS~fQ|qQkFmVSeAbl6w3cA&p*NLXt3r>h8Zj78R30O9>YR z7BgM(ju2mK$=fKltQaIs;&<UbndV70#WJpX2)W{9>~697HD<~A6SI|_kz0#6YR8O9 zVw!5J#l?;%<5}C;i5v6T_fdRFdrw!_4rfDdED)d&0|t^(L&{(WO~{w#3X|J*zKpX9 zu68}Vf{SH_R<Zyt3X8G(xeOCK<CpSlkTxD>>~d~dgjYD*c^>5aqo6Ja*EC%8uKzBF zbA~7*&MRzbgzecj at h5l?EP;t(wh?T!-I|tMj~SCcNxs>IYx+J^BMhQ6F8-C5Kyszd z&iE3_jEB2td`-l7b_o8EDviKjVl#Q+)(t<e at p5RJi|bL4UB&Y at a{Sl43S}#C9Yy&p zyEEBi$8 at i?<>OMC at vZy;6gPv6*8TrN`fsrDt8^*FuSmR;&@0da(^83cmpg95%=Z%< ziHfew?;vqQgy8WEk5V1oJ&fN;P7pstSr&E7*>a0%loQU2O!{R&VB456kvae{`q`kY z1A at K}%~!KI;_1u$#5a-Sd=5F^?o8l;%$OmB08+i7M(2q{VM`@8S9FbQv16J{{eZp4 zj(6c{P<Ne6cngX+dd7PZ&lN2mC*qHSRuk(jHJ{FRD(X#$*- at I@SqS&MeOM?oU;c?V zHBriRMx*m(Zo!#%XbTt21MNJqqa!Yr5?i|Y@!BP|^SYyY^QI)SD!d4!YX*F0=-t_G zw3SmEF;j2E`27*cu*61;_fZ<Nh$S{+eAmZNXJeLS$&DEAm&JZdZp8QlvOIu1ZN&J4 zGG7jMwGrdHB{T&h<VK7SNTkAYH)8z5Qt&iZWIY3wKCuzwgU^%tf~}-y7kc(xTJbyC zr8%21!*51YUEPV;_MqII8Gfrh)zgMb8|6-sMgo at D@ab%YL*Rvd9X-jY at VfDbx1vK8 zSrOd*yrdINkVJAERyTSX!9Nj2j`NZm5z#|g;O{|!H8c0&%>1nXUZN{9>4iB8z0Yap zU+KbwD7+Z{uX%t^<g@*gOHKb3{)v1NFURa at RI<|2>i}VMbO|&4?<;+OQR8Hc<O#qj zQ8bm!2~ff}nVbI7QV^7KWQ)rrHHemsLyuF;f~Q0ZMdu?a*k3uUMZ_9VtWZR(Wt=xo zCVc!%);M`S=qCvJBC>_>a)D!mF%gX8rG>;eX)2!+AcDz7V8m`?GI#Bp8iKiGY*3hc zNsVJJwgw at UnG*;?T}6mrACOh2s*-EMK9YM`k>e2q`YtC|U}@8m=LB5RX|8+&Zk;}z zR|`QKOE(GqSC+#0lQ80D)UfKwBrP}{i48s?U~FcHxh6=dSg0MaRI9 at 3>}vO#TB%Hh z|4ILB*PQDEr0wdN=&W<R=(VWIT=JlF{(Dpz8s+)`m9ew*7N<=`{jA*XP^7z$&)YAG zb-(aSPnPJGA4k at e=35ug{h`cj8`b7wI4=*-rp#bF!OQtC$Cu&GfnX6}e11<RU9d~Y z?8wYZr&3w at 3TS>j8BO%iyKnWn2&}YE$F>9^lWmWuLR(1~lGw4x^xbhhu5~!+WL73I zuNbuLHXk+k%vjZoF1ne2dS8cGl0CJ_GR&WTXrsB~+7DRVn0uLd#gO?+cKo*bEyk>h zTg;a~biditVU}(j at rTXNasLxrpEr}oar^#<j_)w9@~<+>H~N=8+HaPG%qQ-<- at Md# z5BD#%*O<5ahqfcpZ-)F?(*|9a|G4>H|8f7)=Zpz(MjxtSun*$?j@&c$CN9TAoo$JE z^fDv^Z(y}`_jkzr7DG8?({I3>@q7IN%i4{`nxgfgHE7f?8}IKoR+bfMoE~w!xcGJn zbo31Kx~5-VR#e|-I<n|#gXn}TlxbP?l;Op-EPAB43$|!_l65g$cn>&lBGhC3h1YOV z;{SFJV3=Xb$yyZCvnbMjifN1+tOxr*8ECGcmqJ8K at ntgYr&#`u=+Xv(&6MR9#j|AE zPjLW>ymF5K`!X)hT5uPk93&G38B`&jEYp69=ZdtestWmPS#D9hP^SG9uM}yQwi)?# zvfQG$MW+1})6bq>vxqh(${!YSemPB*AIHU6^DBscB9m7_$^u+KuSL`-lN%7lWio^4 zL799Q(Vxqtt~d$&q?Gh?M8A;9#ULVS5V{r-NkfvJ<wzQm^z=s3kUWU!i!%8XBC;B& zmVXxn?iE5?=rwn-C~YCxQfLcFkvvXgXx at wQ|343;QKj9uX#CN*ycmAJJP;D^*W_IN z_9$bW`iEbS8}u7af;bB at V~l=cs~4NJMhF_ge-G|Kg~<KeN06h*-KE(Ngr;y8`8yyq z`4VC>eNqA-5WJJ%G(F9xtP}Jp2?9_E8mGuf=#viw;0GSiI18IYLy3P at Ia&ctPH$uj z!@nztB$%AOYp5(BI;jwPHZ?iDPAxR*$BG7z`=B|9JFU67;cb;ILu_*KU3xA7awSSM zy_Gh32kwQsE>jR*1%M`qdtudRX{A7iE=;cX;sSDRwTgx;H956+ZqPld3b5)?J38q{ zoOyUgY{S=uN%?fR407ZS19F6jCLkwZl;{acORj9WAO}G%dyDQHl8fxw00#1c8_uO~ zP<zV0;qvR0K4C+7ve)D at b&(T??ugQa>ZzCZ27L!3z0sx};BbjwwUDbSsFy at Y7e4aO zYtsu>FLe^BS!gF+j$uxsP#1YAH|X(oMjxJoF4AzevFz#^!=CffHHI8 at Vv71Im5${f z@&uh+lRg}KhSYu4_4D_ at MI+x0+Rs$4v(??Tr_g4S_)*vsM$zd;6MkD0zp*(q&P*#2 zs%h>>BB|$MA<YeE@)+$yo6lgO<1s-)_RLih$r2eZq&;7RJ-uhJ$L_}GPS-49PU{F0 z=={ea&4usU<Y+E0(sL9MeG4>>Hyl4pT~x2X22Jie%))v>Mg9z+dZr_Jtl3zNf+}Ip z*u7Wla%N*#n;-P(4x)f8F?r$Yq361(;Foiq`xZ;f(`|a8?5T9@(He4NTFq$<m#eur zeV9vt9IfWGhEuzmoW4+`H8MBQYEEmoT+JWMEmS#Lg=y`Tt8gt+xsEKTyEB>`&ok|3 zr(R5+#H?KWO$b9H(vC=+&8%EBj9d;<vppZFeZb|)?+NFm{cElqrJbJIbG3KpBemTw z*E`aF!j+ at 6AI{fRlgLMEx4K;KNc&T+9Ho6<zOI^$`AF at RE|=221nvSzEhrDydiM!x zEEl%>*IhYE`&0S4YO?uA?L97+(jGo9?Z;d>O8evax at xxMBemDLTuS@O^V0r`D at SQR zmanVk-h8BX$mLSno6k%8uq#JtKaj7h=C*vKHso?C?HkWaJ3d~^9bbzM<?E{1nvc}p z?r?1tU!vkPheOkm-P)79ld*jcqGzNn+Cp&Whl0L37EONd9g9Z#Z~?vfhdRu(l%k!q z8}!UZ^R%R~+(MO7G&QYfqEViI7wc8idnS8S|2ckkn#Hf`7Ua2mL$EqK2d7@=G?P58 zB|9s~BibH~)U3`&YH7+6ZQ*F&s(Z^hX{X(ulB2w_J6~5#I3KBf!9`S?cAuB_eFfSd zawSW9YU=Zm+Hbgs(!Tw?v>zzYKIBSP+E?ZywQo3x9?M||(PP=;LuFyFwh%h=!-XEp zBww`Y8OHK1hvxKS`Pwtly!-X4X+D!Zs`q~U>@<rH>UQV!_9i#z-7>8g1 at B4lMYDWM z!q^W`9ssL&9uy+zhXL8jLCm7LQgto>@*&X^K;w*Dw{OVbZZtK;7p!mOzXRcg?N0h; z!NLPhUnQEts#JmI&>3j-`bF|6oZHUoI24NBt7pGO2O%Q|scFwgYF9g4wmRG=*LOVi zlL>4oqDsWHvPtANL{A|{k|mOmk;uv92M`@pHI>MR6%GAY9+`X+k=}Jng#P<USa50W zF9F$-gZ#H770)y>X~8tT%1DGhgr^5oS68)In1deVMj+HmE={MPkxxrf&W-|PumJfa zkOMj1_*)={bC4&2$a!AZ>tB={vOwzk7LZ&&3-fYnQ33Mi9B*6=M9;la&UHZKtgdy@ zI|&N(6ewxh3Xn9AV<?Ak(AYMPPvaaL1=l~lipxbl24omCl8dP6-<Qxn$VKRXpP*Ge za=uJRPQ6|RQVEcpA}#y{kjIhJ_J~7x$jdg9G^Hq%YqzfH<v<`<$dEL1fK=g<?^lVx z7P)-_(Yor9qu|!76-Yf07 at _Rh0>qz#BovqH)q8Ugd`O+{#A{NL;mY|4Xk6{K`XXDG zOPfDMa*%ZGp*e$SBti#v+g0nh+P at 4My$3)Gs$;kEIVGrS at omuLj>;dBF8IvV<s*>@ zuH*`Vcw2Bb5Na!zYoX#|47&IPloif?D?zglC8Sc;bhF~3NFsM2srLX9xeo}f7urXR z{Sgqo(~~rZfsj7eo)>^naFK5*gg7ME2#_T(#_bzFQ8ccF#d!H~2pldlRlP)XC07?9 zjX?C=D|OjGDj~=1;X8>&&ApQ5Q6-0rFxX!r7iy2S^>m^mMUtKP-vuh$-P1<TLQY;B z4AG=*ZRyxHO__)%V>;bI2XJ&IgTsW1Baw>gq*6og{OCZW_eh6bc<4gB81$U_z|r!t z4poF}wD?GlZC<NSYp2J!{95NZCD%n%KU8B?opU4?Ih+`<)9T+r*wP&eZI2b=(e56* zBZgyvc&jW9>p-A-#f(&UEWU6_t&RT#myLJDAQqNJ=<FXPwx`5dj7Y+6rw`zAA at NNd z4$tGO!gwSRzbDpC<z#5X+IkG?JPU1cpwP}YP)KGW`GH;SqDA;GV<Dj|Br_1Xe#6?< z#x)Igb4$a9`X(IuTHREq&nMgRq=$20A2#EhqCBodHspR2AG$jhxibVK3;vr1z_Gn5 z4wC4zAt1uB5_$H-ZaMwGCqPdDX*QAZ7=kyh^0>bpfzPN1<9`ysYj&!GsG at h;IBw8| zlT>7NZUOxoklq#(C0&s_QfWKW(}wRov#~CF8xEr3teLDUe#f)7Cp=1RfyBo^<ixAp z=l$Oa8l!^<cK&~A5H-U)1+T=@w~y)wPIb1%BHi9<j-fX9-#~<y2opU27=jRN at 2H~P zULzEeQ!TY}h)DoWOJ#Dr<vk)~+c2%&_OubS#JeJ$F>wq=wh4~JlBdzvJCj|pq-?3v zSDxBY_8w2C@%$eQ;Y!h4wb42M(IWS#2kK0xuAF~hVcXOQn$bNGrF|21%A~KNUSD|+ z_ at g`H98X at QWG5TTUt{(M at 39lN?~2Cuc3o*n)@w;4xp+C9_y(WTr^$1LL)3Mr_aA?# zai%>X9G>rF+dBhlF=rdT(g(5+cn28{{$dUjr=c>UUpOb$L=%aVlWupqGnP)q5(^jD s5v^A}n&?jH*4nECs}?$Jp>oxq^18z5`=B0x=-93$&h(=jL^|((0C$N3NB{r; literal 0 HcmV?d00001 diff --git a/images/bin-win64.exe b/images/bin-win64.exe new file mode 100755 index 0000000000000000000000000000000000000000..98bddc028a5f0f95d155a970813d489265a624a3 GIT binary patch literal 44557 zcmeHw4}4rjwg23^yUA|a{3&gqNDB)M5Rj%xo0b+^*fg7VQ_^NhQYfXc+3aqb&`q*# zHf>sYSV*hHB^Z#uico#1yeDe)Arvf{QnbZCSn(hJKwnkB)S^~J<cCOp-!pS&?{032 zkI3`){%}9d&YUx6&N*}D%%3|mox6Jduy6<=ocJ3X6JifSdVKQt&40Edx#+Y<i^PMT z at 0`BJX!y?QEghY`-bAuzV=~<3jfA_qds5!Em^azi?d|OL`Wu_QT|LoQMPXq<8M6-7 z2@(B3i7<C|tr8tVybH=46K9Jlrny+m08t74+(PWqajhBQO{F)nauGm}&k!O{h>t#C z$Z`qcm1xOF#wa5m4#q`=Xcgj4<e%(w*eAryNo1}_#rjjoxBCSAkZx4oae8<~u(cu@ zPKA+_z at MnZ9~Jvu1Xzzx1V<{8iqH#l2p|54ZWjKs9-nCSRkZc?66#Pseu7zvS<&sH zb)=$G at sqY`MI!1%oSH?1s83XmRMa-L5EfOblq9)l5nw$&;Tx$)#id+gBevs@=*sbz z^$@>#)e1pH6~p)=x^oH0eoD-FRZAq|U+H%j{)p~8{N+5LTd+`K{&YHm-S|5Le-#py z^#i)<^CkQwHIBphqXuHL59k(EAwh at _ki28~BRXjTgqa6)=P!_utPg=oA^LS00*?61 zd5agx_yv?+0y^Tio|7{H_$^WTJwiT0Ov#W}We7L|x~j^>1RMs5sAReAoSX?tNZLEk z|3V7{23}g6cAe!D!k;djhoE7|B at hILN`HS51%<yrFz9++0<J$%Fz7Gyj-E1&&_5-3 z;EBcii%;7jtp|SP?bj{)=iiNutzLh?^;e{m=N)kUITItk3ilTXqF8Ec)kwP3s3DFY zM(WO|Q<ptLE;;&G3HTq_H-=}l23=IT^eFNK23-%XkilaVq+P$h1X)W)i_r+uu5(TU zhmpQQ=-%zZs8;#_QmaOwX8Hc%M at ZgiJJ=rmOz~+x5r~v7gsy=h*B^dMfz!NhF^x&Z zJ3Aq>_~GEpz))aj`*p8PF;WXCFpGCKB4uC?mA9z)1Iq!VZ+I2J&L at j+8!3Kh<VY3e zWP1#3-2kH5z*LP4JaPzR0#rweB#B>$nzdCUj}!u1)3WxmOPd4Ny>usl^xT(WhQLru znRn-J0)s#PW8kyJJHG^r!~$vOnU$ajq}REtMveuFzc~9zs2kWhl3Ey8vcGu8jVNFs zy(}0+nO`~Tk+^=~9vMYXHumGd;4zu$R+Xvm-_x$U5UqN4;8mk|M+Agv*9}1I94X!r zgunx?A1zarly)V6mt<=}w)5G(0#e|Eu6kmXp8fc2Qsddw4A}i4#79p at eSyu+BT#oV zg{ldl62=b30)x&off7|u!pR;WtxC^rMCwpsBLt3>4gp9n`{RYkJyyJ9iY$-o7?8-2 zE-8M<T<U#)*NzdGamSM>=Z=xSt9Oi~rUV8aH)PtizkkJFw!wI$03!NY;m#-j2F}w0 zIfJefP?q$<^YFX#mEs+ at P-$nswp13zHF|jw75;Ys1J^x4wQ$8%p(|@P)LglL at LL0a zG?t!G?Ee-?IkGjYev2P&C~G}>SG%t7x~h>!$#bio9Q*!}JP at W`OHj>UfhcLaogaTzZ0r$us2Ke{sy*#G1*v4zou5Sl4D!AW(iBkyqrU^i0oR{u)o5{K5ESXTO;E7v*{WBD zRvUrHlYxCdcZ at y^y86K<sz%@}>19hmaIL at iwCxarikW)az&DK18$se9>M&MEe$y~` zWOS#@;hYsn&p2)M;AmiQUtnOrdvr6<OaAo!Zw4Y?59~Ya2&7A2eh*k5a5 at z)SIrvq z5QAs_2-tMtLHq^=OB&Lyrzn;#{ThPNU!$mluKN)^ax)ca at OxvW+g1be{dH_?7$tn< z3R%LBA~@ihiNcX>Mja4+<W7*J3**G*FH_M{PDAJNQuzVbFHj_UMz2JzQbRuS#Ou_? ze4PF`(j}K=I{iLQZw3QzAZ?_ at vYUk%*|K2S5Q5|?Ss_(VKSIOi=pB$1ke+=EAlg## z&ifFNeTMgn{mX7emeks1w^QI<_7MbqzhwI!eQ24B&?}e0<wx3w`@RXLWUbNV%ry00 zYMlQjk?q4{hxWiJ#*Ti9^H)84WHaE5{~-4i%I(y-SCKk9-U}L;!1<4~0YT-L1z;q> zN9vLADA_`3u@~G14vrm}pFvCZpJMbW8MHLSO+Zt_mO37J1JyTr)Pt__cNzU)PB$vR zedM2!I6OQ|^)tGKt-fEv=$D8B03LK{pcr_~OqEi-?IF#sxN5(}Z)o;UE{DyB7CueE zl0T-N38WolF>~w?`6N(%zsbqkj;BJmH^m<V#t8$jIZ}nt#}X1qFC4<GFtGEL)TpLU zpE_{V=${dY><^^<-zXtLza2XS+}4)@>8sq-f$a?p{ys4Hv(Z76>gab#T9&-#z#uvS za;Z|9aRwlHR at xkR_0-hjK;+=Sh%sme1~+`OMEec~mXkquz*UT2de8velyT7YdrZu# zMvfkQgj{#@kFaxK at NsE*;yQw1?Yp2jK)nf4mb(LkrC(K9Zj+{!KU5zL>DiC00u78_ zGxkd>jbfA at 7(7U67^8jEUhMFY>rZE^{QJ3lm4S3&7(>wLUN{Jv2AZ+ItUR?@wU-Z) zuIWM_5qyjY(uHL-UJ=dchX{d at tGr<d^Mt_QPt<(j3Yn*&tUNHdf0SH4kZz!4*K6qL zM`J)p-a!0>5Y^Hg&p_|WEB1rQSm~)$#KHZ92 at F1S1-THqPL!v7bS1Gv`#qT)4}*Nx zL*>o(M}ph0Te5n6DxcATNX^oKvG2MiH0<~Nx at x5Tx~(%Y%->4P-22DXzqFsq;V*vp zlDy)FYi87;y5<%?JQ5i48#Ak(Jn9S#jFkJ+zNvMC`|6i`Z;Qw8 at VOh7Jf18V*k|~c zd at uR$EL!z%&}Uiii!@(?v&0ceVPKWADLqnp8&Cn`@#`*-3O?U{-8QJ#_Z-AG<<$>9 zS%1#H;)j<@B at QYj%$ZeBA1%=K87WT(rq&D|T)kvp((MSi>z6#4oPuG at zvSuU&xeoR zN=@LyX<r#h{PUrGqo<9xU;pZzBk<|6*1%w at tfK){FnCQ_A~5(ACMJC|0%=M~BPEa~ z^uQDS`{l%?W)IC%#!6pYiCTh;Xxd-qA9&T7@(#S}OP$g%)KIpeW{;1YJKa*YSh~Yl z>26Th4?YtZd=0H|^hLbg=xn!Bwwq-(KX4neb8SPeBT0C{s54)P?DmQY)eR8gPrDw+ zixm|kK*b1B8P){`<7KUNJ4YG at qg1eXS)u`H{SAYA%eEs^Y5^54K!poZ;noGxpl?VM zF=B}ZB=k3=6*1-vBnV|MJ&5T|U}*L}1P5FzA(lG5z~G_4Iq>IK^RN9E{7$)cb9(N* zpxF7FzA5QtcTsFCb;)pG$^SuL_yK^MuMZ5(z4Cc#OxKhx&GcUvJ8SmP_(B#kj-(BT zgL+A{yrrW-8g7^TY|FDp{4j;8|MbG;#QGIf)X?nrAex at C^U1!u(zQ-Zk#9-&x(D9C z+~X)Q9N0g#VQAqL&;*uzzjy%4L1PU=XFmH&3a%-uJo;YhKL*}#7w<R;1 at cp44;=89 zQ7w!5bN)Jdvy1FZ*r7lx%y3Sb5OtUjk8VdogAp&Q9C)Loc*kCl7k at AX7T`5pyyFGH zR(~$FSn|i>f$LD1^d at KeJ^pm9yQcV|V-3cy8jKgfq9HvmwZ8ZRRNVt_c#C&D3I+pj z_*8j|cSeARIt`94%v2z>W)BT*4dhTqM(1LJar9%OFT#S*@S-^s1X^nbkBvSH)RCzW zTKsUGXvdg4xDVODD1eCxI1c$;usMobvxj<Q=J!)fGmZoxQP)rLLv>=u$ku+9kyOdb zNPfT>X?}8~80qOcOp>=Q4p1q`<fMDRb0|9-RX1nrqHNEQmi&G}B{fE+Vn=_7{vsQ` zDHlFMuPU%u>T|GG at y=VorG5CwPZ4DGmumxqFI-A(d#JDmOD{BfC&o&Dfms at +_-AA7 zBrvpg6q8(Z$)n|D#hoMdgZqki+y@;4Lv at D(>9wP1znH4SH85HMOGZNy+O+fy*Ac9Q zP~1EEI|pKE*C7Z(hQWo6h#YX8iFA)sj2v*Ch8WolgF+c)O1nOXx6Z&|-3X%ps-g$S zN;i;pLxt}JVytu{fU(je%Y}H9m|$i*R(dgTqrXPAwGRi<br}C#S3(kWqUayMS<b=q zc+wHrGyjwSKKHJ7lc)`4J`{YBl$D~s;~MHa;$`co&uGQlRcdbF&)*LW&ZhTa>MlS| zbm%V7XAm8_i&pfC9T<N7B(wq6(9LG7v;&F~N#$7SGDHWz&f$T<-;9+u149|SgWnh& z8!K%g+67U7uLR^gffj7*t6r+FdcD5t<@(c~Xc#<PzvQ{VpAV&GVv>Gc2^GL~Jp!IC zlKeg2zS8 at 2`w!q}dlzsik3MZV0F7_Y{!)%U5~=1_fq`Xb(0WsP_68IE;`)KVjHMQ0 zs&oqas#U;P?RW5*u^HdMbgJ(a at IX&cm`1iMt~%24s+zA>J&P<SA<NNxX^+AEL$$`> z<AH&tKN5X^IQm)SIN3`z7^<PNm!1Rwh4_^0yit|qgdTM51S~6!^i8|21&ATWCG|ew z+5}Mg4TiKM7r^T+{Xkz1=UH0}HfcF7&Bi=4?eY_1DCiEPeQ=7>g#@C9{3WI~=aB53 zPo}1gm43*F=mFPsVCbPD=8TrZ!((S&2n{JL;_xgEHNJx3+d14kF4XiZ7~jsJhM)4~ z at _&Qj+d0&*4#(pcG2KI$v5}sqGW;Wkb^2M1f06M;4By1?D;$2B!)wQdw=;atIJ)ul zmvVZA3aJakBluB}1#A2};oD;YV;q~-6MZ?DOhqtue0_{uqUc+jRCxaxDir+ap7cB1 z>uCHt;eQPatnTbydD+~{7FBzj`npq{T`_M}MWwgAEtU#<=X%SNvCS3U%5%Jxc;?D~ z<J3;{#`>Z?p=2!H6A7m}d%9`+FVz$2iF-H4lD&jDGwQ{zU|;v9?w&2(-c*k_MZ1L9 z6C`mJc*&+`Ehj5}-YkA?ohff`=e8L5fVQi5b0nFnh{oe0-qXGD>aK*!f85{gKAGg? zur;V)UqXd4 at qh7;uhlBN7yCjFhJ|=33wI-M(Kd at _e5@>@Fv~d%av0 at s8;8Rjev-on zIed!4pK<tG4&713cNT|>I9$bH2Zsp`cW}6i!!L1|t?%QEJH+8(4qxK%H4Y16EStkh z4lm#^z+n at I8#wIXFu~zA4tH>PBZs$gcn^o4=5RNMk8=0~huLMI_<tvxlfM7m?d}mZ z(debINUA3pi`Ml=VhQT#0^#mxJeCxH5i63hSVL!9GMwBh>Wr1KRBc}}8S733lRc3b zw%1qKarIGApM`DdNXEiZAjKyMOBo?DNtwkXglSHNlc~N$eRq3Ljrg|2Z0$|Ox?0eM z*7UCEjK?S at eoiSZosmtoJ?LJASYtNygrlq*=8^ZBm-NMwTZ6G=drz_}+#QKYLX_fz*_4Xch7+m2ByipGG{TPw*U;0msV}jjuRB78uIo;rkm6^Qa%m at 23dh%WZ|UrY=0Qhu zEVZ_~Lz=}h6Ld>~{{}~MJQhocsG}v8?CR_er()VXBIP)4HgTha#eh16DiGo(jgdt` z8AT|B;h?8G*58>DmjK!rOLc`IBDt|wGy(4H?o7qHH;ZP9_q2uDQ5f1(4~629p6<;u zU5Hk|y|Gj%oJfRHTd57VDNJ84G!CaaV#y>OX$XZQUD0^A*n(JB at 5Yc6E3Oxzh>Cqf zgxcwpix4jh$r{D)5~mv>jF6i|w-I7ZpE5#y-4a)6hTD3QDbZjm4p*7&iDYMYs$E3Q zcK8-fq?lb{6cJkAV|K;5A_>&NBW7>s#_n)jh;Ny_sboCXO>GUucw7H2u4`IT*RWu| z9C5*V2KfJH{bh~qko3;;54AvvZ$fcF#*dsdak_qA7#a88Fd?&dkndRF9Si)IvcP%J z2CH#+Xq6lfxA$e(d3opgpKk$reOC4V#nXgvoPsxOOr3CulV_Y_9#EHccCXIG=A9}q zIf};G!+mi~w$$Y47?7CSZQK${L}<=M=QlElL_(s-qVuIplIMqL1An1VZA)WQsG+{O zB at _~8NQ^%VL%H60{xdA_In;uxf48x6&024*x4NPlD?sxrE0<KxuUzCUkM$>FNxWQi zr^4}bgn`wUdH9R<$0{OXUPn(?Y+mweOlf=PB@<n3eVy^>yya`_8~pR6C(PZlsCr%s zYdxDRcrLPA{Y=)p!3<$WELVx(1SKwqJD-+#yz-~7n`XN)EG6N+#$n_|I>JfeaJwuD znPBGkc3>)v)uwE6r%NU}6*a}3?k~fdPWSWpbvW~L$X)JypeB;)&d^EmPWN&wpXM2B z at S9JZz_0~zcc^Y%ZC$XXzHv>csjjxM$uI77o$G;_J(;)1T6#k;hx0pKu>YK_gcb2H zUR%tYImKD<IdC*@$tNM^9Jj?mzaW|)$$v#MDe<i7>uQT7gJGP$kKwHYY;I*XGp&5| z4oUAbc$*XEZTS~qQO%s=6;s?!_cW+DHB{TUrloFOi#X(Ty_?kY1giq5W??RM{fe~> z&R3XajB$H{3l!!;#*}!1)e3VFV`h4S3l+x47_TR|NMULiQ|{q+PqxBxm$FZ#XLWyV zZ&H}GjHvcB$2QiYfPNQkJDYPB6T%Nf9V0FvL>&+-7_pQPD}Y$Zhzkj^5{LjJe1vEQ zqMi}UJ$0<eDwgZ__>+~wyqNV30IU*b1A{?;^M$#Z!F2!^2y+dCtpFDZvys6LfaeP{ z$Y8?L6z&)1B at Fg^nj!$3B<Ps4-S9L;0XH*z1K>8mEesC>?o9}DEyH(GI^atg-bLx1 z!n};(`vFG*uVZ*O;KjncoWVT+mk4t`gChW|Q0yxhK1eXiy at BCF1f$?rGW-m|DEU<k zA11h3m?4Ho30^47R)&uO?u52shF>)be}(fuD7NWQ>n=^Pjh$HUfCp at IoeYmfQXVIf z$0U2=!h9d+-sSQ5V{LsKGYQvl!u=jkL%27!Jc)&mj+P!N@}D?ucXrx}WKWk&y_QqzsMJjB<;?Hr<dJd7nf%+C;Gjno`7fi6z;V at yXvjsE)vsCJ*w`Q(A?i1ZmS5gdCmi8- z%OpwG_LS_IobB<RFm+cu;pIgQK}Fc{X+Y=%xsOwQq3KdxA9Zg<Ya1HZtPBNPnuK%i z$4G*dzNlI_hb0)iw6WeV%p0jwDyj|CG@&b?9<hk>3G)s*5aM(@FbRavX0S0oeF_1A znl=80I$?gBG8PlD%HTF0Lylr8R$)8_339q)$W~&=e%9 at b_Vl&IW5QA5l-(<XPWOjE zG|f06w7P2k;u=w6p6=QUjHjVzi!je{twx;s$Ux`D4n$l_CF~Z(irg%7-3ZL|(7M&D zL(Mgp)`e=C>S`8XmSLJ_xmICbD|;3A$Ynjrs4&mw)-61k<D~j}6}FtQrl%#mQK8Op zk=4yPPES(|Ye1W0QTY71jC6VGlF6QAV<IAZ@^^FgJVv*-V=YOT=W)M*ew(P9V{y5R zD9pJ`KQ+S}?Wcl~MIJx?mro<}n8!RyB-Ub4$<#A4EYRet7<r=ZG3RscnF<kF9q!#E z%ms{{<yk=vrkfY~zG`VPj0m1}U0qrDg|79mq+<^CBy0_|=tZup71kkUP?Zr)>2$bp zzJe)L!o^|+8FQP4L!x+mb(!b8z6lm5?lR1n>&IySo&Xj_sm- at bkX)c4wlN&pD$I at 9 zTB2v_kPaiYgW9O3PDY?(0|K_ani1&BfPkeoF#??z5GYHW5$LUeK=;(e2y{<CpzH2t z1iB?4(0TVTVpt;3fhHKSOCr#PzLycZC4xH9Bx6Pt2D<h#=8(cb*%V_AD-5*lW6Uvy zfx4R+v)w_;P<Oh8F~eLL)Q3vr8{#Cig*Mr9&Rh{sHHSB2IFGofHUPr`6ecP$C*K0J zs=jm3)k+R0i{hZ37ns+%rl9rD_z~)Jl_n?>#kNV0d3!!hhl+#tlsohP2|1l^%AY-5 z3O3eb^3l|c>EE=2NK><)&*w)Fr~2pVK~pRuoAMX(NkdGFvZZHun7i`_knD8R at 4MXQ zR|-m}P=Px!NumZO%)JFPb((pp+Nl)gV+Azd5GRDzw1isfmy5;bLj_+!9&7g0fMH0O z4;MTKEGdL8B(iCFxEJ=^Bbm`0O(GjQyYLERKEl`%Pjg>eGcVe=3G-3L&n!G5i{SOt zB(c>=n+R*s*#vvgkCX3zjp at oUIf=ImbEM!GQgo#_C1;ws67Nn;HQ94c!|5j7oo*`i z38DJcH7n~v_&=DTKwXW$u1WaJTMHvN+~$dey22YfBNze-)ntlLk+wKS<l7lz5(e-c z3_A%<#*ybv#^gzgaIzx`rSD>-8%SF0muuJNM;Ti{*l<5%KgQUpz+%6{yqn=7f+6zb z43_|o^!9ZL^B%^W01QnV?qzs}q!8vVhED_>Zx2f~Kf$<}!1ZkI?h)oE8S^e+u+t*U zf0ouT=gcCKSXU>8iu;(Rj8T|63-eQqJWFLnbNzH-FYIW}DF+4uyJHx(K2umMhpDAv z1{swIWJ^NZBzQo>9#L$o8T0<aQPf#+aH5olkkjd=bX}(_>Kp2GrOq%NMR(vovUpa9 zBORUHa7$;Au2l7U(AeILF$lAN6xqdT81(Rlhc*#|>tajY%qvn8Z>NVHv8AVZYgb!O zyd_KnxS7xCZhq$gQ<)5&Zcdu&X~wR7V|%0AEepqWXYOH{C7xQm!-XU8a<r+=2(lJ% z(h1ro*(Ecl6zxUPb)o$=Ej1y3J>IXdPH?$!o6Cy+LgnV|qRiXTg{%&mD%26?MY?2K z#yCc%ujq^5qs27J*SMMnZQsMDzi2v+`oX at k$*j=UEw~LGhq<yyO&QFBmkA6o=qUIQ zf%RH;0iE_VS25@=I1SyTc`<`i3(hC7fx(gjyrSc!g25Rc>TMd^RR^|)u`>&{6Hz0B zvkK^c8<;@`y#;CFcnO1L1w8~dvFhaozaX%g!E*~{p?5c17(B1w5T&kVu%h5%0xxB- zvS1Ynx{Sg31qGCM9Sf>1m`<seGq|`QOnKKcxU>KrA6_aL^bv%23TEXmc#MdzWN<~n zAxgc9i30`Q1cn%FD7c@%RtAFwza%isU`xRp#Hx+Kbp>}37-4WjK`RkQWwn}fTEz_V zqdBN!p19~{IL;L?!8Bt<e$YAHGjUw-I39yJ_c3!zQ57tqeWstwB$Ur=&GngWxjyqg zR at 13`<{AdsXa0#n_L*xLWS at CIgEN$OY%fwX>6ywquH#hpj_Vm@?-*bu**kVH$lkG& zLH3RhFv#BVK?d17ZeWnTV~_>0cYKIJ_Kq}z>>W2U$lfu;tk^qlVvxP#!(2f2j$sCa z$~$gmaGmmwTNrFr-tiF@)S<lNRtDqBJ8om|Na$W;oHL-7&D)Ds!5NO at Es7usFTkV+ zWYc*(#zaF6$IYN{8|LSVo+D3brmbDtix=kSSrg%*ZGPR0enIx~^lmb~f88y8&73nc zqe_kp^NU5VN-g^FtCh7VFu{--=#-X*=1^@-L&Nf#+KaJXHLZFEmEZ#W<{3f!%C#rC z$RuN8mO;Z_E2aFB8nio5zoxmRW=(A!*7Tf?eIG!|?7nX7sYiulAH5c07KOG0nx>Yu z!TL2T8f!#H-VJ%vPlOpFZ6a?lPYp%F6Hn+j50Uqwywm0I>IT*y>)n*<Nr=2OBTIm6 z=}cju%Da(KGd<BQ>qOoVGxGwxT;$!vU>T*#@geWSj4CGzg&Jnmc|;`-Owh>HEAnpU zgi4~#PPl~=s*!+Ni`S%5$<DUE6cqXhCoQHVxz?9=E2EZrwlsJ2Y{6=K6feGcx8<pU z+Xpk~g3lLuw=;TqmOX&JBkuuBE6h0oPe*eqTHl at MONqQY^D3m3f)d%-my+1K7`skl z<%_Av`zRw at MR87D<b5oU>MR>6@*a}a<8=QS^;Z-MUb^B^kzcw4q5#wraAF9+sm}bJ zTTqR&F(HyCBJw|=E4(Pwt4_3Z(v&LygBw70T0XjEXa4ZF5ckqjFl`ughT|BvqY{&W zvBw|`kYo at bFvaPVKmV3AvKNP1<f4ZAOAcDqIKv2GiWiP<?0xSR`QC8UY0y%p<J6PT z)9d%_qfT<PvLwB?zvQF^4sm9rBNo|&$!d3aV=PKXLxgd<VNfZI8<Dpxf%!ByNn?(2 zH|8g0iC~?^lo at ZJk(DLZv?vUQ4C73Lh87ElW^bHjTmm{w=v(TR3*!u9jXput62qIq zrW1{?LY9Mm&N|zq-|}hr#p8677ARgly)4jSl3291rz;Uo#;{g}qc|I5nHPy(r$J?M zyk{oLj3$$!LpX8~xYsFhb^UN_<iHE5lU|GF5T_Ux%V1oEDNEoyDBezGGKANF)j33( ztAR~)Ka2h_iEhEU95Qjgl6q-4-UpHWis!k}zC^qeCrM+WL;|N;P}9A__?BT9$0%<& zLI9b6PIxm#30oH492drSjHRgfvQA+<B?-#9h4Ed9JF5)IKafbW7?Hgj1;P7FLLL1v zwi|leGr-%QWZd&45tBq^etjC^ebanIA!wG>cd`(3$&u(W+AAs%lwSyV-X-{XFQ9o5 zL}<oWzD1Fp7YfM}N?F@%#;2r!?acV&Gkl=OVhCLNukXUm9q~l(Hq-|^5y!bOtv5bH z=mSWu!jxT~4HL%w<tU!x=0n$3c6R&aYTG4!I5;JYf7y(B`YY%wTEVxHd?h3g7a3n5 zw^)F`%657)#(R&kn^4yf3L87A7%*QXqtgup^QjVd0Wdtq)li}0Fyiy}1Nj%E&igJR zeg}&B6GSS!kXQaZVt5vO1cm<smv0Y;#_mVKqxuCXJw6G3zi>Qm9{K$?u*b9L3B+3z!1&S+NsnD5Yp#@a{t5)kPVh;(l^h!1UA!IWk0bZl?^P-}-9LihCC0cdPvc{<E_QJp z?B($L$hpL@?}Zw}l6-{8p5t(eQ-}*f8 at u~(LX3|LhScG>q%i6Y<0!N{%(Q2psC2DG zo>6SLzUN#df{5ZD25xCjJZfdW*jS3PK0|oCK2Z}k8YH_eRPj>0%i<JUd!kPmtEFNl zx?=b}EvH-%qStY3&~A?P3*!z$4%U?{d>MyVf&RQ%T8TTP61NkNDzscQz`ExV_c+`^ zA3}viTU<r$%Ht@}SRA-RXL+&0&eT|Np#IfZqj-2Vo at ziQG^zxrl_0xb+4BZfTA5Dk z2=|5}bShIAm#8G6ljP_k#}=cBh9HlloRgN}d|<q%O)fr!<M3`;0>;83F))l}q0X*E zD8wiD3V!`p#$rIm&SoTx^<!hcCd~|MVU1ClWtTw*4)Z&yf3mpp$-(??vI?O?)CF(G zI)`e)6r!!>-+K3KN<W82LOYQ>Gnjwdh@^44zk%>V(i=lms15Iim}nVuXnnyF96`@P z%hX1tE|5B+Xv|ZZUu4_MH&#gBF+2`Y>4Ool-q#3i7GjIvM>_R)hQh*FaxP$55Ww4n zae;zoEC*?8hBQK??^&B6jS%V53>@9s9l~u;(rTdyDy9ufYQnhi6EZ{1Ow2wYP at S4z!#)t)-S?PG!v?IfkV=eUq%vw$(lX`enZuk$tt#nqh35kbMk^Hxh4dy=Av4K*T)_yF z1Q58HpjPFlnMXX;8^xj25VlhzFzqSIV8%EK6pjgIO-Rt&*P{t$+X*m+W3Lu%^;Ay7 zsvTx|VlDcj|KNswMa4YzFW%X<F%ltw0tL;dO?<g)AMH%4NcQ&qqUyPzohy$7P%eti z)kg!Eynpec5a<$-xzaQX<}+&%JYCsThl at z_@jLeBaX0zR3HS0%z4c!KZY3^LZS5nF z8%nhIWscj<ce?X|vTx^`#<=Z#GqXQsI(gsC%-yJRxvxjZn`fBWdu`AtXCF=~mT$Tp zXmp8qtlz7)@XV47g15a)Zw8aS8<tPUlS7FVmQmk*4aB*BjvqQC<Ef&ED9Al5V|?2E zd%}Ah!)GXagCP6tjPV&wu!{*q)?-XF&U8<o;&7kh#s-{Gf_~mC!@-IvQ!c~`qoYhv z#DNU~XECDn({a<D!od!u#@SO1VDepp65P`b%6Gw(_e>$Irx0uaxay}b#?Vs$u*d?Z z5IdYUka=7>PhlZA5p~gtDzlVW%m6r{&P&DFQz<fyB6xMoNOh6a=^2I+oM9OC(+OXC zIyldR#1p3*Q%IgnKIx<^V5X(85GRu+*fjtFl}J*bG95}Sh0Ix0a>aKxXM&=n_o?8X zvA}6g!%<{`-g0E0g?{;Tl!r_q3wK6^anV#|DB|grwwvS1*bZ~r>MY>Q3K*FbvWU;3 zE0WH330h(*ua?0%3#InwTEvR)yDJo{DQ8cm+V;^%&on^QPgh8?*WB4g)%3M_>!w@| zn^jCP)`Apw at l{Qy*+eC4gaQzVt$nEzfv~~+Ojc>N1q2df;zg{hvk;iDESv%#JOM>m zl*uQ_&d(x)4vVRPByCBBV1s3;jH!)P*6eb;2bN^Fqs&V!TN1d;()^;SRI?W at MBBK? zBD!cQmB at EGur+5%n=a4JLW#B6)Widgal%HWTM`--xdpW^r*2Cw-MaFWSLbK at zgs)8 zM>}yrwoFoD($9Q3oIFWN8-FP(#IJ#>KsO`kq?ef2*PEPY at 8Ns5_RdZA^rY0Gu6do^ zk$7J;hF94N9Ty^VNDRF2KSa7y71+F&Q5+joahk1Q5LEzX$q9>wk`!L<gJBB^5C**z zjfg5CLjOxcMSD|GjAts2p2yU$bB^tXaq%YiXEwPz92*WgzG<v-Y#YA!-g`gcIHAJv z>1!)u8!!IE-sm&8UvckKj;`w+2aP|tPycHD#qRQNI<~s++2#24weEHE6Hi6gpV#3u z9sAtvXwmz(3?u&a{8flQ*8jj207mlv0AQql)olR2lAn?(k2(t0IX1UD3My`WZr87o z at L8GVnf`m+zq-Ov at cawk{OMjtp?m4Y_18E`+y{Sh?-h>A-0ME=C~%+P2>!uwH3G`L z?iNSEJukZFIWBzO at ubnd(mkiX at 0P%Ym%HbEbWMw6 at 3jx0R4K<p*Iw`VmJCy|WsZB^ z?>^`_@%bO#>o_FtaeV0gKf3td_4SVAunfLz3}5Lu!(HJhS@)GseZ=9Za6J0{cE?F( zh4GcHD;!t3+h6%g*GC)`?p2Nu{<_ at lj`Q5 at FI?<6!9DCaaaFzPf{!%7MNF|`BCnZv zx*>!$-+(`CY>UsOiF+ at qjNI*==l_=lFu9huju^t|FPWO}o<?_$;=%i$dP;mU3^3>~ zQm{_fD<X7si5`Cut$(1SmA^vh1&!HgyYwtCDyc7;SySY#DJriis;ntmyt3$!G0l-b z&6zjN<(ih~oHo at lt<co`^-H*hHGd83w{8vV^fDzb^M<{W^{Xi=0m(E6dLsGgeEKCA z!?S$+MI{{jpB>;(0y=a2PeM^kOP$TwUsv0<_4Ga|)Lx at JtZJ=dMCt4VZz9*ku~R{Z zgT?C3ZX9sZ?DUZe+NSh(CgrK8t<1Wa&P>o^7S2aVF(if4q^Q;5t9z1I=GqiXYCcLS zETif at 0IjCAMl5$k6`hp8YvxQySy`skG?#rS6r1o>T(Mi5y%a6Q at b+?JyZjH4a*b6; zt!)O#D2|g%y^5xhR#mb5x=|em(M6=~9m|}0v%YC_xTZTwTzUl-R at MJK<?}E8c)WJp z9=a@>G^%DRF~<=}|2s66RND|(*jg~3GpR*cS)d$V*$1@$XSa+0ZKZQ^flaZ+t>e1S zcZe+`HhTma(~^}@$KS`DEtsj%AS?F=IX=jtA%ZmdrzglEQ0q7vw@`}4`qhl?VU!`7 ze#g;2S*Wv^0i9Z)2UME3))FX{X8mqwYI at zLhpeLGX$x1P<8<jR)6LZJAq(f#@tZ7M zxsHF>!d2?{?G|paj(?o11+_sZGIF0U at _6<VhlaT1OdfGpatKsz9w9!@)IZDQYSOtD zXL8w$^Hr99j6+n{A32(zVH6BAgN+$R+G8?W?B!gv*+7pWnsu&tCRejcvwk)88Y`Ek z-fiXTVQbyOA$VIXRO}DT;IvGxwLj))IFoCwW}wY)h_%OK^lC<<mPc)jblb>emRF$y z(&mI2Gie;Th#7`5jDs6F8n;m6bM0c~@8gi1SI75SI9tmc;j||#8n=!=XW?x54s+Vi zEgH9uzhL1?bo^|*c+)dc at 1S`(u`oan+U6{dUT&eba`X-hrO2({LQXn0LlSJ`XwpLM z;^>zw)LxDruuwnb=<^opC64~ZLeXJ)dQRYQg8J0ToMGkK!cko$<a(G<S`(nY%_yx2 zP`_f7)&!_G7^O7<iVp45<2}Aof8{E|nv;CcQm*Id2Q8FV#?qi!i_!HtK at +QFvDF-s zE9$uZAEv;SD9P5Z&ZlW6=%Ov+cVd5s1$4Khhhwxj`RKuMJnOeg{{`k(%pGEay-jzg zdc4s+?s$0*alYA{ZvlrFa9GCSc^tmo`46-F=Q%87IVW)VE5_rl$q64l#?ekaJ$lf5 zo#E#=Jj|h at vVQ;G{1&H)V- at Xq>p)Tk{@xhF$_y?0ssG%WlVKY}hVbHl9_1uS0Pj!O z at 5Nbq{E;afxE&?AaWi7nxGhWs5Oxz7gNV2Rf8`kr<)V#XZw7;i_z3=j_><BJA at 0Rr z8U7S!!h9Bg+o737^HoCQVd=cbOpuj}Rz7zDq+Du9{RuE5IhdD#Im{SU-A>4%K1#{b z-|hh!Fetl0{niEoGmrjm4<Sg-L^jml;vpKTp>ZBXZO=3kf(Hx8;6q<Fus?L7m>yai zb{O=3t#?Q``$w<YOqDdWJ;#}{i0CM?7ch0;4ufjWPE!LErMwx9o`2K&io at _C2M*be zd-TK{hiO40zicy(0;|d_-Xm#J__gcP%P7*xVN~LmCrgOwN6+TTI~~ShI}_lC8B3Zv z4BFSreRSJd40NXL$Q^3zs`8_K!zaCk_~;ZXd at H^|rBS|N<<E|hZ;(eQ->?hQI=_ZY zO6RuDZcAOs3g_Lh$u5M_nc9WD6l9ZJ?r&!)J_go7X)#F86(cp&`Y0N*DwQ|)vFk&2 z%YAf<do!zQS*`zp8YFM}TdmuYHGw|-6|lEUmJj+UZ?VfFOMD8pRk9|wGfu+v<JhD8 zP?c=mxT%3K+e9mJD-7}ZGWd*eeZl$gd>xnsLMdHh=%uw1x3gP4?N5Q(o}sbZ`BJ1) z-()?yPAxmzdn8?_t;nXz?ggLRM}K{cuuuv9V<Umj$9v1xuU}6*j!T0Re7NGdhI#;L z4cS8i$a?6DXrNgi1n#&r@@s8nEr&rv_H!8J_$A5K!+dIeKv{fp^=2A>;BV6SYu4q^ z0LXe2AOHGR;4E2L1RVVh#E)>DPS~@tKPwt4*9piuPG`BCEQA*+s_o>Kn?&h4-HxoP zPA8y|cCN1_%UL?-$|7Dg^E#~k(4I^rq7aH4(=-xuDyar%Q{Jn6Rq>&6QLD~nrhS!C z{#KtrBaJE-M2vg%m;4B=d}IDN3fPD3Tp~3jeQYG+t?08WqmSLr#JL&;QnHTIZ{Qdk z-NrX!vzVpf6X26O2Y4$Q?#^g9K}p#fhu at MlCa^qz8}aRu<%6n!%M;#Imhx~qb)Dtm zx#d?aw|+f&oz)5^qN%MR?BAeSU-Bk2lz%x2r0hJgCuq;K>f-n#wGaIM9{Z3!4PbCg zd))-BfM{AlQ;7+rH4-I&*`C2 at ofRKyO=aMu#x=@MkM>m`;(xEsH-Ui{6Lr#OqLxeY z?g7nVrXhKB|06zN3B6>$k?8>xAJX{+D6Ec~OLF{7PG@@$pnD`Ac&Z+$M~lb_pM-`b zXyVe&$Ek~-f`;ltm4dSW4$w%ZT!e8zNGn1lpj^4_lyLN%0-6qlZ$@(=XndLmp_(a| z;B`ZJg06R^Gs$`ddf=pK)?>FJwGgd^BGjW*rW8hk7t*pAAxg{ECCGj}``{3_Jj|V; z$<(sKkcP)^O+nUcB9GD<`Y^^x%O9t9HbX=2n`zjwTHePU)O=`uDBm7NbS_!sLGTGzXb5#XFvl`9p+v=^s)b9cGdgEVs-#m%&w!58B{%(}>mrkDg7;H<NvZeDeY8LC1{!KX zR<0bP*1i#(M)gHBgw1`lKCM72Kg>-hNbA$8twAR{$36NTtqV!&9nCsCqe<UxeG(ac zw1nJ{-Ye<Qv3jrU%}r#8)*NW1L9IE^-EO&UmB?t#fmRySngi9G{fU5v-t5&o{vyPH z821bVMQ`LZgK!wRZwW+dvrne?YegzDqNa6SWXdkoSB}fhUx#6lnk;DKcaO^!K8P$i znChj_AP2Lk2_R#529oiXw<JAalYXmB`YfAt+9%1CzE1n<Taw;jlYX~NI*o at cOW9{p z<=Z5Eu}yl)CjE8POs at 39=)~TRveVu~4(Elm&z6I!e%U7dkWG5)q%7~ZNx#u1eTL2Q z1yC=y>>ZPm-eQyffK7U}O?tp4JuxZiw33r!=Y{v#q at QP#et}JT|D>efV3R%reO-<| z)py&ZKVg%;eNxh|u}Od3R`wk>>2wDeYskIL4U>|--6q{>D?6QO$g#$v-8SjNlaju{ zCVj81?0%c{4L0d_PD*;hCjEJv^tes>jW+4KCMBKz!*q^S7f!WV{#KjxM{UyYpOo}| zoAj4$WxvKI{T`e2-IJ2;vq|4!lRniZ{WV)pyJu3;qc-W^wn=ZXNvByn*B7_Akx5B! zwMl=%CcVKXy~8H`;H0Ei+N4Kq(qFQTagW<9e`r$DJ8aT_V3WSVR`zYSvOhB^>2aI% z=WNoWHt9QT(hpBcI^A2y{=>7%Yi!b;Ht8?fEI&Fa=_#A^mu%8gHtDx!%HGk9TV>%F zmT$DDI&fbvz7J&a;dXIMYY2YhpSSXsl$n`N#7Eh1{tO6^Ry8Pw4m9i0v-b^J!*Qzz zM9MVPqlha$F!;DfzfJrD%T;}!u8ZUAyl|EtFOE-hKHZI}$~D1S!T9=mOK%EOHD_(Z zh39EIYfSYXZB>m~)M4}ISGBjiCFzGyC|NGedEtZFVj5HJvq>-07R$UL3T#P`d*NMzcOqH=p&)PihUm7Hz06j2T2IK)aM3DT+1-<pK58rb^R}`lY|=kzD|^YLq|dUIy}?%Y zXKd2HWGnm3NlBk+lkT at kKV*}>%O>4BDe14<EI-vI{Z5;7I#SJ^z%8zPQqpJG%D&Vl z{h&?y4x9AKNlAakR`w at sUPmiBTvA>c2->`E at uZ}e*vejQEBlB|I-NJmwY+aq(&?CG zPPrDoWGj2WP5OhjvIiz5{W+WTZ`-7=vq_KIqz5M@{jg2?4{Xv~ZPMwQ7Pc7s{JKdzKW3BuvQ7GSoAjq_(px7b{Z*TEr_JkzZPI^hlio2Y>B8poGi=g#*`&|1`Fvth(w#Qx zvux7uw at F`Qlioim=`Y(X|GKT-Z?H-Kna%RsCncTEdgEW#3h;9_=^ZxdxOrLUVxPZZ zQqq55lfKs`Jz$f*JR at Dt)qNQnJy*|~Be90VT0=+}|JY_k6VdQ4`F~`tPW+`+-(;@- zfG+9r=d{&JGkoA|;~qU%{|A<<`Y?1*<#LbHCi8x=utm3><Cp7vuWoUM{(q<zJH0Ek z1$;864RPg7_TjyMWZ6kG+7&touT#51cIOE3M-e;Z4ByN9r2m2(UJxT-4Drw-BZ`OT zr$ocnP?-Nq<ah{D7 at Ae>V(&HO$uzo at XeQE;5j5(4Ga=Oan3r>%gj{!n0o9k{a~3c` zeg{#Q#lU<!hh`-(st?zELcq|2jWg!c4a_j_qbWW+nZ}Yu^U&uqoar=OJQNW=@K8D< zB0dKiy)&!$e2w^&(Errdvgr1&2Qz#q*Na3Wyje6<M3QXfqCKL;z*w>>h#+G_#KpzH zxN|VH+FFSe5}@>H2gb59<?09Kz8rl%1dJt1m2{gt#m%+DpTAV=NZP6&MXqR$tbYT> zmxCDrh8|0wr+~@zsNWM!j>S9>tNSQbiW7m+s|N}*4;U{pDh&}4bdq~r4yMtDp}Q{i z$}RaJzD9~WxahGg-$g8QFxLa4-<Os24+EoTl?wBDV06!~F#9AQUl!*>!02&V(ToD~ zJfdU*g?X8B<yfNteyZnDs_oD%UGxwsF#MU(8**CismQe>hx2 at 3)a*jnpdXmrx at ZID zb+mU&pUuF~LxIxpdPMcCQeo}}W*7dfT7D3a9={aLkAX=r4~2Oim~|PQmDh!Bei#)r zda9BlBL0Y6dc074sFT+7RfQ=AW;^ICeNF|YH6x4oQ~={eNI6ul#lRfO$>j$|zc(qG zD}m|A$@M;9toB9cKyV96yIS|tc20w)6}c>Z?f~Yw96Nsw7<#OdehnBu#9DRnLtuP4 z?ftjF<XYpegaKzuRv|X$^}J4%;uK(pGuF^o=<UkMbrxu%IntK^qxYK>pOwIn at vOG9 z9+)5G<mv?GnjFmgfO$O!GYHJgoO0a-OnHtq?gxg-WXXCA7(HVIJ3QY3rZvL{-wdYD z_zJc1Pjx{)MmO4_d1cx8MdpmEmoyltxle#8sd#vffhLusvw@=%dM!oKlmc at wV^zv^ z1~Ao`Tp_x93?BjBl|w at x^?Jgh;g1Jz&!Jffnq8T45$CnQyp+jBm?$viIW*S-b3+a$ z4b0x0Tz3OQ-Hm0{F9Va?iyn|P+5OlLfT1DY%JmCi^gb-?tUi(~)XG0uo}Oc%sYXbU z!gw$lS(>BIIl%0eW!E(41Cz+HMlCRlbIP?An0OAKtAVM^ku?BJNhX)Rq;OA;teZhY zb*?-C5pfSNdd*YmOyB7s8t!}HQFNUm$+BARw?IP=<xshP3QQc3)hho4%*#1C>!UH2 zRZr%_G8X1sU>?ZHwHO$^qNrpw0z)w?*Ct>pGi67TxE2_CESlSanVR8@>n-JHs{1pR z52=rWi(@$!`vP(u&d?CYuK;snh7V!B2TTV-Rd)Uex41JW*AdXn$jOzDX>}`dQAy|z z7rX&emP4})m|#x1E&)cbx2RlkU~<Q}n}DGnz~cNFV7BM<evblkYmTg^fpO+weh<uH z at S&EVWW5edZrhoPLr;2DU(uWej5nk65<nGE`UD#OHyz#R+^fMvUmNY>WMFwiswQn~ zquZSsiqj>-9B-%Z32Fd!sH5l!b(F<~a_&`D*P2QhDnZ?)tgq9iJ6+Lvj=u>R_uT4h zUFA_i9D2reE_B1O2-z>+#ci$=-mnYCU74G1CoExh*;Q%zcy*0Xhp2075L0H%u|QU_ z$J=w9xpR$AmZQ^=>SL);F#F<DvV?}Cbfs;GenWBk+z=Tlo{ViAhYxk&N^?xqwq}3E zo-T5wFOr24`~e}l*=8JqErVOQ at eQ98Dg{@tGmgJa9}3}OHu?WILm}J+Lo2y4>!zMi zXa%mQ57zM&K+vzgcTG?CmSks&z7A90UE7yT;z}TygS4j<eDWvO)sx%`I1%eyfJ;O1 zRnQc^I)j_pVbQQG^A=P+U9DQNXnxh=#gsJ}OW=E+p^d%m;m$aH4<WP?A0)sh|6=|4 zYMJ~B6k*2Sj3XB=%BUETJ_z3$iuCks>Le$|eMELVlIgBad5=*JJH9==msH8{A`LY| z%yZNsU80Eg at ZG{8dAXU8Wzjd-=cH3rN~TR~*R<5Ht_ua5>(=@k at ww23##;Ry+|bIH zz6d^;?1{vBd+Sl(@QJoX)%1(&k-B5?1 at l8;2%;tm4NyGQ>@eGa#O#YeabLc?+n8 at 5 zmL<a7$1(aCXh$qb&Z!8r6Evmb4KQ0 at Vg+s_rF*93Wk<x8uIt5J#i$r5W!%+Ca)uOz?m3aNT8<jeL+z22Iz-%nkG-zK$A at 5P+;$Y|X(ti5r5tsGo1&zo?8}+QlhILWe4|g& zb<qV<p<aC%6|TEZ_CkN9E%`j&x-<GW$5Ly%)y>?|j341LCi?sqRRQ-t^=KwFP)^_a z3^Pbhofao;;I7_{YDBVV)clWInf>-)@}0~L)1eTS)UvpSj_)LOYy7fM+G6Mu64?gh zYm at 0_<na~KB~NbSrH_^3E0MLziEIUAK@;dnXcEhA!V^!~&%)R}y*XBvHKj&(rYB4C z=g+!gHNAA(6 at 7F{vs;mj#Tq)>==*09m35mnGk`nt$DP)8<3dR)k(46;r;%))<f9>U zSL#MGOI3(&>7*;i(BtS_Xh)Hr?#;4^iqHhSk8kvh3F!JP)|osb(<-zKtNpfg(Dx@~ z^PTw4Z!Qb&6;mHPjajZ3z at 7hb@<r9UbtQy0#^lh6Zkl?M><?&@*Jc+u=kjb+FkKLz zxfvU7%$H0nztjAsZLJb;4+Ke8N2og0oX(RQMI_ at Z>SpgK?why#fOzQ-bZLK!WciyE z&2<gh6mE}GEpcN1$t}AY_O0TLt0ZcBXxUv_9auGv>zCPyq-0+DK-Uf*oyebf<;r5w z+0z!HYnwHOU${c!%b+JE>RaeE8K8bDx9Py-Irh1vFP7XIj3wn)o4X at 1>BZ6=$h4|u zOSNHNl#TA4XG^nm$pAQeL0e!4`U*(Qs$9j1d+-TH4_=B8q2qU%<6AP_r=Ml at oUSUn z(^lPSD$5T-*>eu7H_x;`exCq;9)UJTB5 at 4&^s$#-d=`Q2aC}vBJAqKx>bQ?<nsLoe zONJBC|9i<u9&dZDE9#Tpw2dq8P2k%kWHMQ6vG#CZ98H}EX+=S)xPaceJ)X-dKk1<z zt5bdxAbaq`w?1*<U#OivJY at Bcyh_h3;DF<XJcvBra5_;3p~&sRrEj69tqmvW(^fo- zqcV<fKjXWooHEliSzW2m3Lk%-l9{sc^p7+Atr4H+uUVb8RNYoq*`FVOoX~@FW at 1m3 tW_{rxYcgQ<z}%A2Lr*X>d-JY9ep3s^l!J9D(*b9ui+aG<lSO+?{6CJj<B0$O literal 0 HcmV?d00001 diff --git a/images/bin-x86_64-dynamic b/images/bin-x86_64-dynamic new file mode 100755 index 0000000000000000000000000000000000000000..033ac759b0b3667af0c5dd5bdb79516806bf4127 GIT binary patch literal 6484 zcmds5U2Ggz6+S!TpG_LaP8w4;F=Qn+l7s50V;r+74I2MuTsD7>QyDeN?0R=?Z&>eI zyR(&3f@*1#ip99yN=QiX&^+{^5>GsUkXnftBkVkY0tgyNRYHk{>5p&(jV#n=Ip at wj zyEEerg$G_Z_RP8GyXV|<?%g}*{yaYv9#(ulU{c^qKvGH71!TVg{M&^nu at Lw{htI%1 zXh5VMA6?WCw at b{g$)=h6rJjnsj>?Jz6x}XJ-fm04oFgPo{;H(QqRsbEKuF910zxJ` zs%n$<Z4D8DGruDpY)Z~{6dsxA(oUCl%u7<AIroqHMo+u!U%R5CM6yl{2F1I|#aJMA zYR!sMc}{k6u3i_K%!5J#V9s`@(N2aaHU2&0I3G_XCwhAxPsKY^$#j0Mb1u}|+1sP# zGFrEYzXhA2E*?8^Ry4 at tu^T1wy$2uqEvf$2_s*yPQvdZQUJ4%lU99Qt)9UKRBH8kT z#s8SdCQw6rFJk0-3z_EBOeSsStZ3FUO~7u&s29CpnpBn*Gtp!kj)h112h47*TRSY8 zp+5QWkNQdvQGRc78%@r~Y!PlWMns9mm||nvka!~k@~0M6M&W(``ZHKuf0tfAL>r^< zGyih=@P)bnln<ov-MnAN63NqK^Vi$ua{15)BgJ2xH;V5Vg*zLk#zt1I&DZH*tSprT zTe*a6eFYW&Q7VxSW1)T<Heg)2W+~+x!bQnRXN}_88B&}-+JbtJ|MHK!8X{mUv~DM} z&JGfmHdSMBylfo#L+(KH{&@<<DE!oC6kFF+40g|Nh1Nprn<$}D_MM;CFJsY1?w+~6 zJUKb3HSfPnW^mRh9Q~s&fDIJati64&6L$Q{Evxw_A at p>;ul(o9=KX^J*OyBr{4f2T ztR417F%`TSF2;kmjm6F!HWXewkRpcodbnr>H^RkB!A+xhE{MH-KNLQ=)>r&^q<GI* z`dA$)zPVnwUoIP0KCs#k-J<ag7ylV9-Wx3bt*^Z2Eu*mPGmgBMeb-nx7sR1U1zW-k z at nBmROM&o$73>HvTnct!w?Y&fQDyvapx1Fm8imcW_2}!AHbg&+!h3!k_XU+I@^|Hk z*uTyC^ArpH>NIDZvjgRQ>KB7JHX;w=bCk9-_?8}eD?MD%?T`JNjE-&~7t-;PE< z<r=~%H@<-`ob!?J9(-Oy-06{gh4HzHco8|A{#N}94dzaLxX}2L@}jy}M_`pO1VM~zWyaYze>Xd1#ki`AQWMKEk9~N*oFOQp==iSY@>NAAQRG_U^NNmd0A6-NLIQY5@;1p^ zC1*zCNp!O at A~=r$>+^Wh_e%7L%|Ms>tF&&Xa79NkI_HIGmzCeyNY+BxIk|+mJHI zdI|r}8Lv-XM=v<zI5sfwM4$sx_rXAq)}wU=y1TlLbRF*M4Rnkq;sGOS*?4EqLCo;~ z at 5);4;*1rY04--_Z9dJVWZFt(XF*G6tc2FrKhkMMr=&EM&TA9-Brc%IIA|nIM|0Dl z#V at 9@J)2uuyXM(MHkZt#U4n^q*+eQz2C_7pvOr6wllZn0bNHS_0qZjHs1*e*F>Ov} zqcaI}I*zt1fflne*&I5w*@YNZVw=&KWDFf<uo--5qHVjKi5zOjGBY!YwB?;9|Fygi zEojd3_XdiN5|RXXA7_KME|-aa79Zyt%KIeVKLtq1L7sF4hp^6R|D>V|?I)#w%70Gs z+7DvoJ^WTV{)nO at LU~HC%09H-7IFXUrV}VqZesg+MMsJ9m|$SoOyoBjC${H2 at -$+U zyV!nJ(NO|el|V>H)fctlr1L0H?qT~%zL5!$_ANvlKkG67D%MdhW0~`rU)l%A7>U|( z#xFp8J%<mCDcf`Y?2z`{PxkNa|7DN8uIh*Y=4HXaX-{j6*ZxJsC@$_NuRr4+d%HDx z_Fw at yt%*+iS?Pb)(|<PM`NQkpw>|bHX<w4|tJJuI*p8v^V!`Quyj~Yo<8r`uvZCbd zpW&-mAbTGFX=y(#?Y;hZ{Mi0Ak3F9^_#6^sMajMXf8?>hD*a!T{=FH->;Iaxm&1kU zv<M>A^V%oHzk<5df3~L`D^Z7>5T9iKOVoARhopT-+I!>m%D+K-Qf2?V{_4`6&xca1 z%wLY{EsuXbZ`^3a3M8*TmYM$vb)50@{^zE&4^SfxVmsz^N^#n6Hb#W at rnL9|-d=eF zwW%%cKlp9?kEA{KQ#2}dxlH^+e8|6-*nX#{(j&qyG_3e`G_qZ8*zP+pDthfn=5NQT z`VDFrX<g3aPh(lbhsTZc61l16e^zcV`F;V_1bO{4UW=;~t)g$KQZZs)C!LilM#Af# z8?USEyWMzwWxwsl8*u&6oscN2w9=}za6j<6;WScV8}NGI#<y4Y-ERCL;QZ~zcL3*Q zH{MjauX5u%f%B*vZwAhfZoCEWU34cT$|}w-&S%a_6>lOqPr31jG4Dj2kSMEoYU8}( ztW=>D at 0V)nf2wlt;MRYna=vlnZNT5H8-ElhY_0a`HpNZ$chCfHcz$2{4C>%+*{yA# zL47sG;d7|ygRSF0`xsx1aTr2efhM@^@k>`IKB&e|@ey6Xhj72_7k`g)h*LYK>U1ns z=|S;dMiq)b;2Hmy1-=Vf8uV%-Sb9a^TYtyzBTjw;p82zcc&%|0>y5JYcf5o8pzOx` z%LtV!MES86?#BV~DO=~yF2n=4Yx2&AcEopMobz&gIOjbkao)GE<IjtBSgP{=2jEYO zcD8<Z=LBB0=hD{@-v!n0k=K=PBHmIX{_l{!(hRenaeh_c4+C9pIq3(8Q-A6DjEMGm zL`$OmyXB7>BSPlaFC^aL`Cfkg0R7*~_UT at Z2t`3}3%o`ii$zl@$5kc7vR2N@;|*90 zZz>1IPL7)4kuzg>gK3(BF6pTOM^!vyPNgyv(Ud8UduB902Y8g5O(m>ET<h%)9R{i} zlkqu{z5w=#F`l29xyXKoP7De+!=ru2hfJ2p4VSB4#Mx4KnMkJTlGwycVvP7$_+)=y z*gQErd}e6O9P8^34^iZFcr~NhZ1kd;NXOlPxS<7e at GB?!j*kogoki`-SyU4 at wXs~@ z6er#a?7G=CpL*6DO-v<ocqAW4MRU1C4y3;KrdQXUSH0%QNo+BmOq=;!f`W3nj^{Gw kbTl1LC9p<}JdZ*pC~+h=O*}VqWTJBkahw)6%cA4(FRYdo0{{R3 literal 0 HcmV?d00001 diff --git a/images/lib-i586.so b/images/lib-i586.so new file mode 100755 index 0000000000000000000000000000000000000000..e82023a166c5a428ab399dbf7e9fc0d80cb15d3b GIT binary patch literal 3834 zcmc&%U2IfE6rODtsQi?Q@}o9!qtz6Zo23>gB*wN&TS^K at TNJ2px!v7%SNEsxy;~My z0?kztvTlOZcOQ7s2#L|gpd_Yb8<d2H1~K6Q6B2<eT2T_z#t_!;yR%boOG)&}vpIXt znRDixGc#vq?i_0AX!UqJLP5DG7nF{b2~iK4nJYE*!Y90<Ry-z_IeKMJdZ}FE912y! z(K~IApdC2Lb~trhK at Znr0(~Z+BaT8QQtt(Bzix#<?gOPqSI3TdGG;|ce9V5-R{+2I z@%Y<;mhUGnzqPaa%iQhCpTGOH63x?qeHHk?Jg)>$%GD)#Hw>Qw|2pu}qq4C|+%C3* zz2K5xnIU7CViN}nSc0sUfsQb7z!I at Q2wm@wClk7987WKGg&s{rEur^;Ko!gwWQ|z# zU|8sz2ldWyf7G<XsX)vy&9EtA(cYkDCbhLf4~GoPK%ZXIl-|&k2#L0i_U3?Ir>)jr zlu<eFo at u|Ap<tc_^U3H#v at oP73RoA;<w=ZjF6Q7<QjBMW6yq2Jorm^sNg?kzdflFzD7=I&g#!PchVpz~6hG(66i?6>p?G2;{v%{>UM&JnFoOuyH^(8uPnSL6r3=wBl&@YQ zM0WTN6z^WN<`ljLv$N-X{@4`2{?)F+DOeBXZ#^u8JyCV|%nJ5Szm~P{vg4>#nX~=i zj(Tef?}6s*TK*5$;D6=#*~zlpKrw4$AY%Qw!N=`U&rwGxeqhr=Y4+bZXVbCA9;@ov zyC<Lff>D at nK?5_CPdeef+2I$^3+XP+4o^yMLC$6y;ukO4W8R)U`D}HK9E8mO7ifp_ z8XV+oANbtB-E8Asd$MRPv~PKf<Jr03({~saBcCxxlbFH6oqNUNF3b#bf`g))lIMD2 zMFiKJE5O=Z1j?HH{a!IS0-k#*10(JuF2H<X9EfUl>IA0ZG^UAV%~j)!A!V@~*nmdz zD?qVk!Usf1r-qPPauR-#R+2gV26_X`UnLn${~360C>TV{BTT9-5ZK_WZQHtIrLP`^ zU+1gy``4{rU03g`?F@%}n+!{~ud1(GIlFa(f1Uq+>-zt}`oVc?=7G3n^a{<iQj$g# z*Plph5yOlKEp#9OGfAzK(5M*<r_5+FF-_2+ONC>!m&`!S5}I=uX;wG`-Z_%Aa76D* z8S${tf>ttR!m%W81mS=ukmDtlbRrt at Xb@47=#4+kaf#yzeUtHcIAN)U`xo>H*!+Py z;qtOZiS<Cr1fDL$XMn6zwzGDL$AGL^)*NkEv#Wq?qaACV$QoBbTf!P3>y>t_RU+$J z#U&*+16kkXS>r?>cz0ZgVmlBAtkZ{kgy<{DAWnW2pu2&}j(dv8yg{6Hj)QhVAVN8N zm3x`UeW-wTguOszw+}W%zoU_Vv?E4=%8qwGv4#yLU=D;NP}%Y9Aga5PdKEWavV$8j z4jZD<x$O>>?4WkO6)u6{_!Ou<N6^5yw7Y`6f8_yoIhWlv*j<C2@&VNpf81rqv$601 zyANT<^N?|!?-ekkB^ku=$9z8ms{D9oo<vZdvkI64 at f1+m@hm-!Mvy5`cD!8ZmvJw^ z-~tr0&C40+=}!UeZYTj%>3BBNmx9l5*pDdzRN0Yo%@pjzCE!Cx-h9sinICI`HR|?v zc##kXl at sV(ETri$QWE8trrfJ+DlbLmo|LkTz`ZABMwfd`%Dl1UUXn6bO70mc&vRt; z9adhNLGA&m=O|>YOPM#GtZ6CpM3J>CWx1mKrj;@V4PZSI%7y&QWZg-5u|rv3QkJ_& z-CgC*jVZseq at E{?ykn&-J97P{?5-5XTk6a+_bQ<bH#XN<ffwJY+?y(24{m&}p~}~T zd>bIEd_7{ZXo1XloM{g#vkP<_GM9jIFX*T%UIubwsSsw1{|@w*OXFw!_aXBvAb7At zxWC--KY at JM<?k#FOTh7b1D^Ya;3>OZ`~g(Wucxd^`~>-`idR-C{)D_=`74_*Dlrf> z|LniKR9i3;KH#%6<PDH{#u514-UwN(2j2l5klpWs?KAW{ArsU)!h)>ok?#T#G-5HzQ$Pe$mT9H?`m`Xv=>y%{I`xkBu5P{%^o`S`&4DQu?_xa~%4loWt at jIDvIDWO6%Ijc zXh6SEQtyu?dySaxT-v&k&Iso+*F))e{D6wnvUQ^qrnR$aON*`~hEe=Kj+~DG#}Qs4 zOtr0JTXR!~zOA*jtEF4-ZffpmVag#hsYi at ND28W@%wPG6u5DPW^@lBeAgEiBbmC2| pHzV|oyS6rMX%E17`s-+xCy;t8&3N}ry@%XysK!S3b4b3m{syTyoD%>5 literal 0 HcmV?d00001 diff --git a/images/lib-sparc.so b/images/lib-sparc.so new file mode 100755 index 0000000000000000000000000000000000000000..7feec75eb2222139e80c33095d8061bdedc6546b GIT binary patch literal 4536 zcmdT{U2IfE6rQ{7Z3`5vfPhNkN*YrlTo)(=i3ztXOKB-Bl#-w^xxMW!?VA0;-CJyl zk>y7pG{(gE<WJlfjq$;T2Tc48n~LItMiMdM0h98hA+d=Ng8 at Uje&5`g?QJ0j9(?d@ z&YttlIdf*_%+H-U80*+#gbY!kDls2A3aSc_%|g_jldxHYg(;fE{bG at C$A5*)vqF&J z;fKOMu%TEOI}l?J?6t}sg8d5YJ_}KTja&n+R(u9hb0c)Jw8gz&cS64%1?w+_Lse_% zZqfeYo96k!o;gDs)7cB(+>A9}o&1|NF#XwM^CJ<jQ<!r0^RHk0eB$R=bm^XF&(6F0 z>Sy!*`000)--fD|vJk;$NuyD7OktHrS&HOIdej#}V_BDF%Y4Jr!l;c<Z4l+F5N*Is z0lZ at dZa~Y-3nz{3V{Xin!gGY<45YIeC-1pA&vAs4%p^VG?1g}-f7qq!rjiE|!fD^{ zbSDOqc`uQRrrdl!kr%0CU%!>lTI+<9h`XMPI(_-P9}PvBxM=NY+Z1(HTdS-!Y_mck z<TUsbVk2zmD>|8cC=Y at 87cMc@zy$smNomv^SNgaxYCcu^W$0h}I&xvul$5>#`bl3m z&p|(}^a<!(H;j1+`gh0?*8<wA`5sG1>s+%+udRpAeZEia5|m5*(AVR2qgAEF?_4}l zd`t-YV7YvA)Vz3<3+He{?~*aIWE6_MB2*C72Fh$<U-6~brQ`_Zp;O~^hc3(LxBTfg zB7>razB8F^vpv=RHMC!iw(G~y_85B2_UGH;5!I)rN}p_Ds<JTp^}}iSD_s5Cl-_V* zN^ks at F{^EHG+bKn!TMt8{pu6tLeZYT!4`85H-wGDqSqK}w8fF8-q2We$#}P9%l@(s z{bqNSZ_tOnV=FN3AIIxB9*nJa=D0NG_yT^WF4uC#_&*snFL3;I9M2e5k<7m>W~s3) z4UAvTiSA>d4Ot$HAF$oh{@u^d`8fKwP|i>F#+!xW!E(qJbw%jx3*{J2F_zEoD&J&3 z{;mBx$q&}$b23g~os~fdEwrSrh_2j^T=P6T=JL$QmM5=4zYaFB3UTK1Y&0;7Vm3Gp zo&)9{uEIW|9oZMyD}sBd7Q7fHjEs7y0LgRoZ7|QJ`fRy8iSk}Z_RE000^AOH1DL*d zM*L>{M}##LiJU0^$pk at v0=nGK#G*AC-4JfV=VW=f*=n{T;nk7I<B{goYr;+4iFkOc z>-ps?S1td4I$QaXwCDB-EAQoeIjFTv)=O9enIWrhD4B|{OvZ&ogKmCMSn-hzYWmX4 z`Ih~OTt1o2Oal&VxkSok1*PpvdBTz(CCf_;LzkZ>D>3No&AI7>u=>4hE|1W at c%~mA z_$6W-E0>jRy6I#;+R36ezD}r;O{WtX?=F|fgYf4X=9)gEn0rGL*EPw)di at KMe%veM zW-yN*68*^Q!Q3zK;~tXx=$Nw6mp<G}Hkg=x*i&-faj$8TOAlbH+BfhEwfijZVY*$E z%RcRfANCpbP_NG-49xZzi;@%vQ>S0SXK at r*$D<ABgUEoDANRK0-`w-`TcB+88wN8z z&J5m%<eg{-uqMVJy#UsJ1^9tOwwR)@QjbC^KeNR137F at MCLQl(6wnXjFfniB${6XZ z{oa61Kb&2-llphn;F+WS-U|4Q!w)>|Y|?)31^n=3H^G&*pjPw`1AY_m16OQ8zvBSN zo$MdZH+jaDfOUJ6?C)1#H4ff0<y~_H$~4iB%sUqSaNp)xEzj!?U`;yi7z!8{dEq@% z-ZhCeX}?n_U_3?A at 4QBk+IBB=y at sIH@$5eh)};L?F=v|UPokO)#I?oou-yhQ>j&aB zpxj`tH0gL62PM}6D{G(Y3afVIo}^vHmwS&ujhXvQ8u2|Og?jl9JLd_+eIqf?4QjF; z>?(h9573`upuHgf{qHGMv!pQ336Na7^skptu2UHw-)E3vj#I!sj}rJY1 at JwTz!Ma} z%p36)3SiC&@U(XcG1i5&a~}iCIi>$XiPax4 at 4`BVNRE7$)FVFjku<P>4*-uV%>Ln? z?)MKB*}t`DsYpAL&-=tS)t&)6+j|OF&bz{cn1%w%wf_;|VgSE}d=Y9ps`;e)S48`A zd@!(oAM5-AGrwQV=pWX%X)}WA-!H&LK#k?vAy)Axbv}&{^I<GRJehwZ#QYl%17D&) zF!EtoI^W8FE9`Q96y8Z+Qds^Qy;9&WEEU5;e at ayG&ck{!4(R#v--*Ucz!BONer1OJ zb=pYF<i9bB`Dmmn-;Mn_FYgWQ-D~yZjTi0d>UKKXcJ=VZ=xm;b+M at weJnIakvVCsK zk>6*>9U2z+`tD05yhPkuyKc>TL4%Ww4+AwvM8BI#IgWF?dh&bk#D~)95#KFXp!yW+ z+$_7arMqQ&%+ZKl()v_nd2#T2G_%nu6CSu6acf7{rj`z;Ys;2hu^y+VWm89tBai2^ z&Y+u#r|>%V)1aE!(cKk|ZQk7-LzX(XwY0`6bv8fQ*|NPY3jgWv?%O=B^(%bFi at NgC P4!+K9JNVG{U-AC{m?pQ; literal 0 HcmV?d00001 diff --git a/images/lib-win32.dll b/images/lib-win32.dll new file mode 100755 index 0000000000000000000000000000000000000000..e1a2d2e6d30ec35ae4ada8fe0473ed603ca99e2f GIT binary patch literal 16402 zcmeHO4R9RQeSdFvWv$W4oGsfp;3nr-1RBsuI(^tAq&{pZV8_ at -wh3SE>U6h~4xjGS zyFFv5J5enQEQC9DholVc1UyUwZON2|wB;k25!e$$noM0!n{;S01F6XvOj}Q<!_bhR z{{HXdcK1#)AEBvf{GWUK-uu7*`+vRvd;50x-SxK|WF}+GLYkRj>?z~~NpU^<Wem*zKJm-~_Raa<U-1;*`27{zhO?#EXt6L<OpV0SseHcR#RlA1v7C=(^Rb at ITVo@Ij2mxk zyr5aJ-qOq1M!tY;ni$!@KE>E2oUxbLycG at HSS^%V078SY=_qnaF(fKc8F<ngT||zI zu`{wV_DL at 65*>(^I*43lTNvvmbU$O46N9;6RFKTo`hoFr&)w~z_jTla(u)kC6o7uV zr9YlYc`4v*!pD$cv#cOjkYsJs at uDOYer-bo(OsY^WDdGye4tdK+BUi*=~4 at 0EIA!_ zB|qUK_)74LglPr8tfUh@>{oO&W&x1;xw%4G`4T=A{K)PAfNpJTr$odk8$%*H79oWo zYP7arB`{^W9z-I##Z(Cb=sLOtV*fm34<nHymm-A#be*dN=DQRNPaqM$j|)`b0=n*Y zQ6DC{X(XbHA%y^Rt2zW`jIPI#i0+eA2|}CEx>|UcJxBarMj|>fh{!7tCG7tSY at d8} z{EcN(z4o!5W;>c>QREgwK4~?d`g at 3d@yLO{A;|~6bs1%6rGJR%$KT=~n?7>zz&A0Q z1^w3XH>{~8#B<_=*L|3T9JuM{SG{z{vID!=lsPf&*)zu_!T4$Gs+V at 1o?P5~Y8`kT ztD|1T=9ndXa;gj1 at uSwQJC6ALZ-jv8)Q-sb+uU0{)f=6>t=XD{H86^dcnO{ze<L#S zFO%OXFE}jJnD(4g>6w|C1MXXsXKwxN9nVKdz!>D5`WC1srXL|P at 7iO)F!l&(eCkPR z&7&0($VW6 at 0V$r6GClbn?~&7AYkxDq`&0pq?Qb4qG=EOtdoT#XpY~xZ2JcLJpCLQj zAZ-VFOg<0CO`H%bve!g18_`6*xmF0X(P2J1P~Vy3FT&;Cr)Ye390>?`x*2`8|Nehd zHu-94>C_F at 6d!-i=6j(_RN{-T`(2bi3_Pdc2=5{>G^ia|Yds>cYpsdt@@qOQKrj8@ z)z-wK<L}IPEfa5gO$V0$HPr_X&NN|6$N!y|--M>oMKJA|U(C#mAC1E8M=<{FCr%ra z&mUOJry>*7W8%f~naLlVepbiN;aC#-PreFOtQ|)N5AHZtM;JJOogRms+n=H$jK&y} z*)x~k*UzGqkEwjW%J->!kIHi at 9~C*62q6ExHuMf+qY}S6UV9XEVh%vm%tWCl5mPy) z%Ch%I at 0$FG>;KX7__?KVE;}%kzTGLsGr1gdHtcfx+ at WmAbBpV8sZz-mdxdjL<MY~l z*d7pjZ!o=li`+|V{#4fqanf=}Hs6sDfubqS=O1+sB>Q~}-a;97MLc!*xaBFvaL1ez z?nm2Wf%a!megWwO(vOf%B58Q9v^Vf;UGMrrrkr!HOXV{;_ZsL$xGlv(`kG9p=$5c9 zH8aP-qE*PdyR#m9fH`ilm at hEaW(*GI%B5k())<3D*JZ3|jHEz_rw>5COke2j+tj<! z59h_eSErHEu5{7+e;)AI$<VW4W80Fp&$acoW!s8v_qILMcBbv3_U86`+W)Zq>+MI{ zUui$p{<C(LxF~UHq9w5*aZ6$(abMza;>pB`#7l{vBwkPaXX0lGqocDU*#TxTCbqiR z$)1OE+yl#@pCNR#q^408Ezy?xJp5XC;Ipt&j{kEe-bSJ5s1<cL$|=01!s7ZGiaoj9 z^{H%rUEj8?UaIJoM}>P5qC0gx2Acb*yR&ZF=00cR`mNg>hy9tr^aL=!7GC}682N1s z9mWV?@oP72kFAS!#yjE(#&K)K&96P4W~~F|Y%Y_ at 7G<Gz?e_H>ds;`b`Jp?CUQ0*3 zy(`|{BB~t-2U<TC%I9OlsxRkD*`d6f!Rud-8Ag3+xKQ+BVXRdr8m&6q%ZCJ^sbbLa znE4=ol$5i+j%%HGYhl=uvO;d~dFkO)k<D|mg at N)Qiy3><Si<U^QLo61aVi at tQB9K$ z`}Ts7vC^t{22v%L856SEu6G7=sUc?EE!!igXLD%3N7ke04jIJW*e_9w!J<4^%HG9{ zNr_oj?|37lgZb15I^HW8FNf|&A=3W*`i;HJnED=xH|nG#q~Z0#l8{s8TlKI?`A!&T zaJxbw5w`4C+u82<;^w{{X1%%>mfK%kziI8}%^R8ZQ&Q5F<=0;!r&!itu8{KB1(v;W z%Z;1Y_prJf>kJTGcg?0AXj^wb)ePIp6v_i|hCS-Y6~P(IGk$Rrjh6L!TpM_V>ve<w z75_2>Q6Q{Dq9QFNjqnTOPf(L_2>S!B))szP3~C!lZ$i2f?T=Q-A8tXB$QOvco+DNx zzK8dN@@eV;>VE~vg};N!qexN5!E>v}_?HO156z?^aaqV~S1^7>4KCS^*gpg3OoJN* z@*jbNhe@(%7_^LkdI at +P0d7&|jy^Y4D!`~u|0C$@krw4f``nUS+~sC~tq0{cV50+l zE;PE5xITcyng+AQlBZnB_$8!joyn3c+Jw!l->_UZ(Cf#=S#<mc)L6onQj{~}!ADW! zoE<@DgT>KYHG$*tR{0Z;_-U#PrPHmlmN@&o?ntzNwnZ!j)Jv7bLeQG+Ufta?n$}ZZ zab(Bwa*xt0u+Y$R`aLZGYWkXb`trRgGDl2bK2Bv!UrS71zE1?uO3RYdmruxM+mh3l z-!0oCsMGZ2_sDt_-PQEv`z2~ISjg$iCnaW?<xgLJuVlQO)mhKOqIqKa@~Q8Vbu|l6 zVC{PMxn2Lu%<amYHEc6o7#YpEyJK<^`_t5jR+`krH6oT+CUkXKg&>HYH(1W6<)V4T ztrU}13Rj!YAHopiQM`aPh~VQ7rcvX3{uhwZO+WGtP;k~5zWJMfZto$wI+Nb)qA|D+ zF#kd~UVZ)*B!cSy2>3#Nsom6I+Lzc1`63?0XELLiH8lJdP>h*NnQ4Ef;j?w?n=m0S z1fB|YOW0)*D$Hx*rrpp0f(DLieWRoX(Q15pv{h%(XTD^L7$PpXV-ODnPMoia2oVj$ zl2k~}BVLVl6<!8-Er>%B$+;}z(_Gj9?H3{PqMbf53|Qzhy(ejh`7R3Z1!+^DC&Vn~ ze0>v%U$O$@vD9x|6S<l`-n@&q!tSub?x at r5n-}y;z4nVO9Wq~QZ~<x1P_02^1zX?L z3jZ~#7L3fA2zlrO!jI9<V0Yol`P&N`apiC*<}%~0<x;U`u`k_OYAF^9p4|VnX7lM> zIfHjB{&o?)OI{{hhz}DN6miFqWxPMkxPz5)-jhWHltH@%^9jy(+7FqxpWJCb{PA1N zZ3oK_kMGLuGk0BWMmCK9>9ginzVyQ0HRf;LWH#D+%~ITKjCVb7tGV{^XIpOW7`n|d z8*j3|eMP&uaD&+pH+vs9E`&Mb!oc7AWeuGDZW=OmXdu^;_6o%k%)+wg-)K=eXMy%- z^c{;czQ>MO)_#mx<uf`4WhL6LSzu2XYa8n{p7v^&2k^_3b+jwHIe_mOHyOQOAfWBk zlgKr%-f`=0Y+%mAIp6`B at CNh5Cv6%Nlx at ms><w0?6B7dHbsn95AX>^hWZ9;icH%+W ze$-O}=UJ4eW!a|uX;Jq1-ii9(B5}4AR{_(wK8Hl2C_f_0Hs$nsDky3ixc?CCheZAh zQ7+q*Zx^(OM4nOoD3?6&V4+|d`EewJ9kM7lK?8Ltvt_pk<&H#Crnp5kw<_h8LN?_} zp=dxMn-o(lqM8MSSA6|%=w}IOH{O73t0->SiHua|>_)VI7!ViRWX662%-+HIuc5$$ zzvl1gM>`-mi!lQl%myhSX+5DgiKZaPi>t=yCmxC;!AG?2!L?suWUu|GO)Cr at ZPZCA zAkd43hCHx at suj?uqzFN)Esa|>=#x)`7aH;y6>H$D3WJ+0_|St at Ej+GJbl){Oz5e=G z4Ussv0W9qsO#TY4wXEpH06`;?$;WW51OUns{z2t*s0y-bnE?MIMKfQ}tiiRG><vXj z5=<V$HGE&vk#HqiWF(~T9HQ4cEqD(!fUm-NJTn5`Mk4<SKNEt at hp;iEv&F_I(0*Lg zRK`^HB7L at lPrcx#FYjkeW9THuRQL9CeKL+P6kjG^;Ww&M{PuK_ioRXi8#K?PH)tCp z9H9EJiWM&lyNGk8sZ#i`tRRM~z+cLmeGclG;_GucdXY^&e3<(5K_5DqHrKd2qj)!X z)oLN!j}{lblDZdO7ds<(t;`;-V2FG-Xky64m{$BOWs#rhWng&ETWc5f1)Biq6(9zj z;LK^Ys)Y%3o7Vb-SqNh7XGuf)&>Rng)`#Q>+h^mW&SKJfDD?^RpqiF-T<CN57<+%R zNUJdDnEyMVD>09^KlHLl!-uU;Cm7FVJISQgnATvq8vhBQYT$8TXbqODF at 1=@lU)_i zYWxZkjg-mnscMx~T19E?l&dJ6%M1@%jqR*vl$nmPid`%&PRKT|S_WpMm#Hyb_n{WT zboN(cx=;ETbszj^9SQGCdZb4Bn9o^i*txA5)BS>vQPN-jK++f2NZ;>sR?=^)#&pwo zDE}zwr#_H$IxQITbJsqfvyx8x*APwj2_K`RpZP%2Y2O&)+_lH&tfX(L#&kbZ!3>Mf z2{@He!3=uC<@`>Z%cx*<WWJ>}gv at HFiPhO?)QVJz-q~oR&WXiZI;RrdS$$A3-?bYk zVLPWe9tK6zxe at 3&X_V)Gg?4pj&ZdvFz3bq+)2v#q$DPyK6^5GedS7$-448!@Dp!r^ zOjcvM at Aomvt2Agdz*v#gzYJ)U5JH5hjs(4Gt@<yYkMhQ7HKwzt8q at t)1*79RS;6Rd z4p^Zyq{mR9;cRhOt at CU&)mF?#qv9Frs5qQEo`)+mbI0 at 5XQTPm+tqp9+4NB(=)F75 zs<$dM^t2KNy>s|6&^6BvZa$+o5QpG at KgNj1SAmI&QI5^Je<qqIK at -z7l^v1ng;?eE z>_t)QLrpx-Htz2wHmaWsW?9EbD*bDuvl6RhVXeR)0+oChnv<YuMsJWQi%ex0WwN*k z+0}}V!5n$SjlB%4|4h9?l8S$H$zq?vfQ{lq-*)sG1wQKdoZMZ+6iu0WMdd%kB!fQ? zSuDW$F<{7I`uCWmIVv*}r7%CJ!O)#tgDlb-FV}f3Jwk2(=!jwLVqn7l`5e)NG~5o% z7?89=O3rCu^cp2Gze~N4e2*O<i~>pXPzWQxKRbfLxAZR+jgL7B46Pr&^dCx^s891# z!i04GIWS?nE{4%I$VeBd&t<^0fsP`J#$6tAlslrBqUi$7HnbyCm}{u0K=Qev29pNH z=S;*!VD#=n_L`txDEd}B0F2(jN}8_$Lu8T$5tYy22#^Lz^DGGTIxjK*1dQBSkrj9v z%+XOz`Mjg;`Uz<Km?w^BND!Rp>odQOFcKu^OC%=X`OASJ=li|7f!PO)KVCf*J~5W% z7ox3pF5g_C(S9BTW`BrJ5g6*}%eq(f at -cs`FuwFBYG}S!gE<LIGdPna($aZgpx0-K zSxzh!80<>a;u&|KJmjQ`sr(Sm^{eV=d4Tqpm3lTmSkP^$fq|mCOV at JQysOKD_<v`m zLc`?*4=&)-d*FNnp78N;NFLpAW<77AH4BLgDsooQa~PuSg!m2XD(BHq!vn2TRDW{7 z>PdzuY{sp at kGk28)!h#M!0Kg3T=avnDSYFhE}4Qelq(FRa!!W6`h-#9LlASa`K*^s z<+69-M2I$?j+iK|dN=i8hE%EJP+#U$Ya^tvxctJ at -PMIZHpYeExU7I>-}X)0)?eT2 zY}wkoy=Sx2*Sm4^I(-rk`r at CYPKgfhk<9Sd`1l=eYG)j-s`kaM`q%asD`@On(1 zmv&OHT6z^{qg<yjNL1;a4vs5~WTotI1I}~PnHizgNb2 at N(J7S&@S)LjN1R=5v6L<3 zrN(#>>Fmx0ggOF~odqM;9;f;sd9o9h<HjHCF}K&$@HkrCVK+4zG$T7Q3h&5s=Z+(4 z;Zy3#)r?dKoLeW1Bh?-aDj^IRRZAw`iDmO}L!lJ1AL27kz|Y{69Z3zj;wX&pP{~bu z<Sj(pP=3VCOK;C at AjN?Q3+1lR*-hyv-6C~PS2Wc1KtKf#ekyl}xvvhCI^sx9m2Sdm zYR#utfi(J6W^2EO{t+MsGI0Js9L`R7$btbT_4b0kUr$b4OQ!+RuM&CW8zEZVX=j at p zAaQ6KXeUW}`qP27MGjCfigDr&Q(GKYDv3eU!@AQg=G|OJ!bwqY5dgk6K at PI5mh;@> StOFUr<4dVbQ|%II#s2_!9zG}l literal 0 HcmV?d00001 diff --git a/images/lib-win64.dll b/images/lib-win64.dll new file mode 100755 index 0000000000000000000000000000000000000000..ca94485c04b7663aef4b64976ca34609a1b790f0 GIT binary patch literal 34777 zcmeHw4}28Wz3<F!mMjS&L5NZXSv6p+<R63xigiO0o!A8eB#1~m*(94}b+cJF6B4ZL z1w*X+*7QZIZEbyRYPnTgeUJ9}6#ukFpn$Dfq<xlNt;Jq!gP}fKEv0JB{r=9MnVp at 0 zHSP7?wwzCP&N;vHJHNl at -<+A8S-yTyaVv_Ff#2AeqU=CS!OyNIzidYF)H#n$RUVrB z>^VEsz_aJnw}-oYv3O@&JlNrD4o0J$hOa5)i+4wT;i#{A<r-f{XG^F!Cnu{wkglsy zl$M)MQ#ST at T&dJ4N~cRv-caWGvR$slN*<6-!_TWI!_yH{UU}eJy0SEINp1=r1sMvZ zs-jF%6yFAw>4g*n^SYE|M9j#9fOiFD8WrWBBue at 8FbEduu$25E6wXY^|E0-dBh+gE z`Hfs$^285%qz0c-*I3*VG=c!uQGpLXQu}oLQi5Np8!nD>L?6t-1SY&R!Td_2zqqNZ zi>k&laq&~i88$18!^I&^kJ*Tr6TLI-xPGP7UmWIm%!Z99Cmm)v at P>=4R at W1B9bIDh z5xsLMV+FtBA1*c`Og=OLMcIrW;mO8>Bn9w=zM)8Gv+&IzfP^=XO059AWhLc2UrNys zeuP(upDpCMO3IcnNDp1N<41TOrA%r7-oix;up}GNFn&|;n~$F at 0I&Qa2Kg1y*^eK! zvBeCOasggN8OxtZc!%&KyruZr0`M+c$RI=t9fr&2r%Y<_yGj-_k11C(Fd75VU6zVN zY0z83<r^b^<pGZjUQK1G0eEGlOzJ$MLye2%3#8&unw6#lPv!p$T42qi3Y at 6*9rcYo zKNX3 at E-mrYNCjGf*8ifG at VtxWgXmR6JAkMdleN7xU!coreY<_v>}qA9ICsugrd?%y z!&QOA-nDDA#E*z-|AFpLC-c8hq9|p<{RckN+V`4THk`=s2jDTH_lB1Ho&0-=N&m3% zQ7yS>&MHNDl1j>6%$?&`9vuO<u@|(&LBhQB(;TyVB<Z;c$-d*R+^t7|{OBB9M$Ui+ zOiCu&C-qNMZrIiLw#q==qaiJsF}D<WTC&|+Hca%2iUj8++L9mSZfzn{Bp2OXrzkaL zhexO6&QTcrO2CC6fy5zJ at hx<Fh}`|lvSUflACc)F&fWU&rX&M7fE?@2A~v7(>?P#n zq9HPH|1o2>Hjr}%(j))kp?XG6ZQ}T2)StA(&&OWq^RyK!ib^Ul!LQ+Z<j&a)43NnQ zgWAYe^gHl}zl;E2H3W+hEU`!Hd)=!od9&wqEjfv-`u_+pwjUtqv+*@B899bgO55wn zMlD8kuP09=_j=}u6c>F8a_ORI1NpCh0^ot1=Me4nyoE89JT`JKksZk2&I`YeXygun z_IeHggA_b6^4{3k_X+pN9;C>=eMhza1BrYC2GbH73JSHvjRlJnKhYAA0>73p3QD!a zj{}JxbYGqH)D>|vze~Kn0o&CkMiT#~CH^#WY%<!yJMP3D!`uI2Zhry at X4$oW9vdU) z>;VwQkC_F}qf%nes6J3N)^}XZy?F}|21h;)x_$4c-QQ@<ol^}y*}y^-)>w&E68Zk& z#GdZ+0WCW~pk9u`Gw-}RHfEMYiNzaxJ-5ROV+dN3G)$6KNvNqMNy)z5+Ac8T{b%G7 zLEqSG3VI(%63g8FPk_eg|13K;`Ynl1_Cpij>*<7XC>S|J at W?i1UcZv4CkqA&76%g5 z1%)HO1@%A at DJ=<Dk_riXBd`Zq5d9YN<*1lpMrOfnTHo<8jj9_PAEjww<i}Y6CUXug zK>8hc6Y1SZGn|pv2ry7zP#74fF7TnX5!g5K4OS;W4&F8L0;?3DV$YX}$`1fwv;o*e zfEx)taS+m#UV|a&=VSS;%L%fJASl4V!~6sN3rDUX)53=z8AfU0F0Ki`Vju!W-`g%D zpUOm!vh1x5%&xtL1YWd^q9tz{2eqV|x{V86rf(PZr0(C^s?vaGj(41X{{iE)zPH^* z&R{Agy8N?PGEkQvk^V}a-8ZWC&d{27Y02t6dBo`TvHgH;I;tf<>BXRHJfS6irzKt< zSp{E>{y1%XmE)?G%)g$|K48pBy84cvZ7kNB_w@~{2^YH25A({%6d0bh0ngRI+v{10 zD+TmVjVdNQWr)g#NB6NAVB{z8td`ihgEdp=Gpr>&xm1(-ElQSowM71V7qBXKS{8<N zQLqopyt`<;9ydSWx$`5SK{!<2x at F1o^+qNW5s>D}rJDNGmL+s6(EVE3aO;*$GqYW} zcaR3&^!bI+=QXNxA6Ydi_mRpOH4wKb_mN?3pjw?-_Vj3m);C;Oo%BzsNjz1%<oTY- z)o#Bxuw-XEtM4hbddc(gUkcWI{DC}|zBw{BwtPK|brcB$!?sXJ(VFw~kDzs_JGWfS z1U%fj<pzk?{Sw%(o>ZH7y7q#navxd7gxJT0aLp_`Fq$RX=Wt<Cn^KwBw|vP{aj#qR z)-HKEp53<-f*gpyGB|n%HG%)0^cN7vKkk2OWR9)<Lf_uyG|q1*Xr$q=JwP+`jRi3+ z at tl_US@#SYQW|MUX{RA21}eR9dVPVfatF<IWBISw!t~(Lf^J{kcRa)J^&R&cX9WfV z1sf`N_{q5#2QU_)JC5b=0Cp|<UE*!D!jbo|4v^KpK-F$z)v5v8kXq{|)H)JJ(;4|G zYNYlLZOhSHz at j?o`Bfn}K at E-6s3RTL(IDSg(?1+Yw2)$vf>;1$y at A9N1)EXHSV+og zq+A^-w~ofk#z2ygk%|RS&>Ki{WNpiCVg%juHQeW*Usod9>uCd93@%{3U%LR~$??q3 z+>dMaXEr8_<^ZGrx82#vOFu%XF=N%Bw&dS17ED5R<4xK?(Jy`t-w)hau+;3oAJ3 at V zfq546-qzG3N!9J9Q36BU(vdohqS}&|dtN+J4O4LcCl~EJgXSGLYGC%`NG7xUpYFaZ zS(Sms!|ll~Z{K at rZvQ9|?AtXZFt8{I9Bs)@a{Fk)2n@`<1`-4yLFwrA)W7=P^X6_n z0}55sfUNDUE+8)}wHN$(B#4=dJX5F*XpJz#{ikCYll$=SNF53SYNVjF at 4dX-txo_w z_p=5_fYxB{)>o0Y#xo`bRtkMvpiJ_*jN~QN$trJU?!#{c)ZYZuS3x3>EHT#S-c0W9 zd(W4<^)V3Wd(Y4H&Fyan9O4Ar9SXU$v~q_R2mxwPM at EV;8IOKt<Y8K=4CFtVPm$JG znRsL5+W;MzLbKK*HA*Wc?8H;320|KE2B0`l?SajqZsiUdkp#V8U}`*~fur<K?!z_8 z*5OUPydsH`Qjyw$sJM+P=At}VgXw(JVvV$5b2QbQyg#)Xxm#50plSz6N-<xPrs at b2 zZ1n$PJW0)e&YnNA4D4Vr<3U&}xBqrfX&pTB3q;m%I>_e}t?$wUbHOz^dp?*O>-*jr zGZtZLI16p_Oh7DuB at T|w*n{b#`xtsYJfD+9wQD|k<nVEl(T`O$s{96P=+R6zUnX`9 zRH=!bTHn$al<wb;ej7FJpFzV!PYrX)y~tp0XaINI2#n=x1WtGsA%A2e<frjB=_y7Q zLyCuul6yU8AxpNU?2(IsWyuG8tTjCU2NGyWHV)0kyqffEBfvnNS4;Y7V!4yD=n?;p zrNqw*DE+iCZ7ly=)kyC3>;i-Wsc0J=2Ql9s^~xo`7iH=B1}*XGS{f?{a>^hjtp;La z`Clfw$=PSjLp0DZQiJgxtK#jn*6AOvO+1ymbsMo8s5zu18%8i5mOV{fZ7~yq8X<}> zMzX%<Ve%sF8|fheNzX7Cp+aKOWk~Gx<U{(&8OrcpPcBl-P6^KpB!T)ps*$J}Mw0FT zklZ(xKcgC{ft=d_7|W+c=ve;!Rk&XwBFrgnz(%eGrPe_$Sp)ldmV*;yqU5hYnYl`? zkJ_~z3-0-4(Onl3{S8=fCTCyHco{Sn-$-L|q+lJ5!HwFIT}F}iN36bQUq~nzet}MS z7=AGZ6CQ@&MmVA!(>;?j0Bgu$Xe{3cK?$XFEdS5Tu=xFfi1#LbJC>h~LJjkdFR>>v zHkLnya2K{9drV{N4%&dMEjwCU_HJ$2Teaux#?4mkl9#kU?l)!z5_4~Z!qD$_L`Ry? z$T<HU&wRpnp!KKd=ua#ZT8<vDI at H+Qwcs*1I5u~xh(9LcNonx+ATHs(AYz$6Ti_iN z at b8QGbrDBJe6xr*ig=!gCyDswN>2Z5kuMhU$3(nGl*@WAi2TE8vBY~$z$KoDVHgV3 zQYrA9mFH0FnqGcrhS*;fC?j+1`OTF)?_0)W*|MG$Ua%;iO8q at pV0k!t#Z^UDRh0Wy zcSntIN61%JT<R-q3K>CPk*_cw+F0x>y}(zBP{jVyl!|qQx?4JRw)+}1!ktmt{x>?C zJ0rf0p?DVo=C=6oRG>S0U9__&>N7fh20bOfGXY{(oW%(?h+<C9mqM>8Z1}puH-tb3 zxE);^o8v}tOC+L1I-_mZcEr*IO3!ZQ?KDHgK0nWw#(12L{?C|a&t9N-A@;r06a!FR z{vzR~qMmTHqMVsN1?g1s at 7e<XMoau#TQDC773HNA*fW3~1?)tjzKNGKiFl)kZx!)9 zB7R83&x!bD5x*{CZ!@PeOT-l-zEZ^PB94i8tB8k0{9O^J%DGd(_KWys5g!%taS<!f zkwTV;XNY)~i06s8Sj3A(%xhWK|H`%?DL*WGyrWzm4}}8Zrg$*ENvTn<2pLt~@pvd| z)WtiSLwMkLxf52~qSU59>)Yd at U<-iCJp`qSl`SoCs;oRikTsjSj8I2CrjW|6%fpcn zrIc5wq(0nyT~#Nh7e!g&3Umfrgd|umea*G1I~3nk7mBxb#yf)1<`6>+#g+Z8)kdT$ z7&E%#fJNEU*q;$B(AjxickJ at +Xfw@jHBkd9DKAsW+Hl<H4n`WH7#AUDoqJ8lXo$84 zqb-q8OHFTcC`L6Pn*sV8+-oACP)uoY*N5UA;b_nZNn<F6`-Ih$Tit>Uu#HeNbo!ix zFjb(VqU)FrJENiAu%WC$F5KCqw?be==~47xM^~H9ij=n$Jsb at i5T`>qN7eDX^g1P~ z>Z0azs@@%Cuu at mBsWWaUpLDgx;^C;#s<gOT;Za5TlB**KR-pV<S4XI$IR;xGH2!UV zAFo-xq9(9#ft+GyfbIwRrK}Ag(5diOSs-ux^^v?k at aK<T{#WrlRr!<!PFdi?wSZ5& zZZzZ at DjixpMDGgaL4rd=BSUWt9Ur21b0|NPmwvdio#OVNZh`sW;9^{8mmWck`&k)0 zd+Pd+ZGlUn9{2wr&;Wi5uj_a-Pp at 53Tdx%2oxtiyWO*<g1#FEG#CkWTya>ElGc6>U zW$>^b1gLT~=&1PVdR6_()q0?IO}(xw=Q2oj3gjQ#pnqrD{SJ=f{`aa^tZ496`O1sS zu>-iEv~)@7g3=0KVW>A2isR-gY6K$}C at OZ}O7O!SM{%=K(%#t-Dv4i<TZpcbc&wwT zI~-{#S=LY+s4l at xPFqh=Pepl&fxW)#tb7rwTjNa1ezQx*9SGYcM7zoJxV at RQ#ph#} z?r2xIEgHgBBJS(l>ZIoOU|ex~Jr)KlaAkJ2<JJYcjj8Av9#)vav3WYvhLYjUbZ2mO zHn>~$nt8_3<DFD})ymb?iu;pU*ejcKRqcvpD^~^-w|*F&cV}d at MmmFrGAU5Ec4aNF zV)Q;T<Q3v at v0WZ6B}u}`Rg^0kgI at uKNxYuxR`wpVR=J`&P@}k>p<Jf-JGgpP#>kt| z(%Ib<2`TQp3}yq7&Ggc{HIvmWuj}!w40tyC@^DiqUQKTeyPn7zL}B(?zA>w~zL&KC zd1Z>eqF%4BU8XE{J)HF|)X6dLUIXDSLvcNl^&>!C=P5ZD1e&i~7VHWst{se+>pU+9 z2ErW}5nPW7XkN~m?k0JU-lVu56Y!Z+4}zuZJYP;_96P(TL(tF_ir00*7Pw7zJt^=C zbJm0+t%_?n>v_hyRLRwA)>YNi)z_|Ep|7sF0;9|7N|C7|hp3rel0DN)TIbc(F0Z_z zMz0U7(W@#0fn}9dA6Hz1)81qlf5LT|n(M~f<z$f4$O<f_Ow#MtUcOfG<nIRvnOe%6 z{%vHYPlly3JcD7>nn4YfM!;||f}QCW1~Kz!_lgP>695F4l27$Lw_kwjr>i<P%!4g$ zUDx+?#!)z$p>6>S_k$=rV`Xb=R|u9I%^<O6#wmR?gBk!#P+zl5QBPM_$PJbH5Nvzh z>FO_0(@mF;oOv5v&l<uNA=67V!LXLhOLzC7ma5K<STG)fkFi(L7BWrWm7x+B_XbP? zXH<u}4BDl at 4u<0D%3!dX-YQmu0A#l_h*Bty4G#&K8N&ku#bvN!FmD2>S%hkrz`?p# zu-;Cr>x1z&Qo5IOT^o#aqq+5RnzO+{Z)Ubt)Js at jkV}@zlv~!{fY8~rwoxyoBt#)^ z&rz+(ZPNAXWe}`RRQmL3{C+k7<gei!7T-BkS^FPAIf9fAKV-=x^cd1dPl8qLDkP_) zEuBN9Kk?uN_9}wkKxTZL;C0A8PH-klKZ)`?z|U(#Vl$x*ejcR-Uq^NZ<U8|rB$T<k zr*T>GgiQ1J4owJlR&OC17XepM&VLorcB1mBLfW at KYX#M&Eqi3RBx^{L^+21~N~1s+ z1nLR&4FX}zHqbQHhQp}zb3iV52$xY|khesv)^C70K5C3pgoZaa9sNRTc;|9K&LaT_ z!A`xZ2Q&)zBPoQOPZrRHo?#KIoy-z7DB_k-l-auOT!E<DnCmtR^X!<;&GjkNqa_P> z-8ORFLjd{6Ch9hFT^@|hUAK)~7eRI&`d2glCq+ at eNzGv&Kt*9)kA#970sGNIf;O7Y zIC9*@<QNt>Sz;<HfUXHsj=M;XPf&|ua@<97e4etb3Ef3<JdLbUtm`psa_T_?Lu@<w z<-)@NPj)NfiB*ZNQ-9nT(!2OdjAA3Cc<%Tin5pV48kw9(Y)8*?=j#k7)B6_UQVR>y zcn6kuG#quIr+dD5I at SZA^+&KSn+1aNkY7M#d&7EAQ47vu<vf3bqR!>{GU{EcOjKy0 zsPis2QJZz3o^R$`Hbr&(TL<gJdNVc at n=q*;>IJv63JZUR9s&lu(Km(K!cj#nqGqqE zCYbewVgY0;4Lul(>BgoQyjDtvQ`K^@N>vw=BI;!K%$V4-@`Hm*iQ at VfE_#ZKOZXoi zgS9m`Q-&g*TR;mTw(@BS$9W=k2~<&D1l%IFtfE?!Dw4}9f!@2gLI+-~xrphqaDgDL z96FneEaM-dxwz6-J+2cjlw9Mkhg@>`gg0u at CtQ4agorI9Xi?(Ia4e4iaxTPN>B}RR zxh`?ZrI5?MK=F8Qf)0~ZSLz}N64 at 3=Ot4Is*WHX6CKBrP at l};8&jg6&j>~64Y^xyJ z{?=m#78DoW2zK6AaG`sX$z_yKvh4RL>NmZ=Blu+Ze(|~k5K?bh)O#hup|tlQV8OrZ zpiWcgdZ%Z*y=Qr+si&!V7>Zm4SXgIge+>W8<StMs;YP>I;7P1uash(}PY2e;*_UM3 zPRI00FiLpymGh at iVlpN0NbL+YI~!OY6|n3aUd2NQQ>LrLMV94QWsC8ce`=0WJDn1_ z(@|$BDCG%$tn##c_53MB at -z?dFbQX<?x~DeHbG|;qS7q9H<*t~Q>Bon7ps>|VKRG2 zMjt~x!;>P@%<`1XN3zi*&h#i{Ab3_ei)Jli+-4U;bfQXR$ZGyc#Pw{{Hkr*anWbU* zz))bhVC-|U)dp7kT&p(0&zr55O>daAF8gXGW&z1T at VVLW*lCb#o{$x0C;0gmK4w88 zius&ige|FjGzEZ(?n2UvD$h at W!?i_O+zi>%z^6Ec5B!1upObFCYzq0Ml>S|$OjT>A zlMNP}gWSS-%uMB}s4mn+4;#0&$tH%@MqZ?bXK!uf;z_(gWu`VeuVg#<9B?c_y)3~K zt>m&PoG0-;6;5P<J#ev0xf{i*`VM-Xia;6s(QSH3cUQc`IXiW2>MDwNb{hPqz9bxN zj&!$#a1&cB(~4ql5`Y$-kVcK-c5tF(OQ at Bnn{Xp(bhYpdy8(;_BgkR8rnL|r_VOYO zCoZ|lcVD8O*RZ^A>%|8*-tJxgX5jG*m-{~NQVakGdx}}Q73rIMUqJfp%*T+vrS}1( zk7pVT{@8|JyQd#^fA3!ic=zP50{EMagGhhfdnMAp>UrQAWWM74Ju<KM+;k^0U+_}Z zU-dlZ&N2?Vv%U(@tql2i&sQIRbome6XB+OOE8S<Wb6@|$<Ck1o`s!_40`vR(yz7DZ zS|)M$N-tG<HIq1erFWgX!T9OW)!q_!<goiWW#5XTX79Rd-8sL%=Ev?$OBW4!R|MRx z-qZG9{ovJa7L}Af{j at u8-~1tWlj~gd>Y|d8r;AG5`8T;&KNh&;YYS^X=lw&i%LBg! z;5L_X`FNfjfBAw1Fk8*g`UO5}Yl;*#8=Y~oIW>V(;h(_*GoU2B1F9-&Z{Czl at 3cJb z`vR%FxDBin`O2wzwNp!{xzUqZkpG%2 at 1u)E!Lq4&l~ZR{PW4UmWK5gno;Jl*J+-is zYEGJ#;kjZe-5FDu&m%?N%q<p8uX<|T>S-SLG`A-(EdvxJzgYrb-gI3l^1v6VQ_%;p zKugbRe(R^}p>c07+i~Bkv3FXO)H|{W_F=GZw-Gn0bcd<4_d`<mZ$F3-r*QwjTR at KZ zE~UpS(`?BG$pFifX*mu6R+=uf?18IA0nw7_H5M#Srt2-(OqpJ1!F)2!&n{qc6v}j? zg;y%mpB96JTj|*^imgZr*CIfwvRWo-^+Q2b*2v_)atJ`HcZlSRCTNXJzG8w_%j7qN z at j&Z-k=$v4%7uhdQeX)ZW+dgj)}+1a1(BR>5?XbENYZ8=1yxy9DU#P%Aj$3$!4_Cu z4hiu8_Vyqpkmga9bu#&7fvGADGI_5FS|=^_3lr2JldqVdbu#&{rkoAZQl+Mx4N`QzQVoKH8Fh=4B|+V{1nB!BR{1$8W)&o!6l^W8NPSJLSwajsmyJW^CxS|eDY0z8CY85E z%5qWNLQ$*MRK3pW4~IC%1)*=6wbnYVv)1G*5>)~_X4a~gwIokfsqb|(2ZtVS34&6e zajX#(Jhqs;>TVawdn{18gqsELts<u3LZ)}%7J$OIU0GJ7$2}C#NoDfWq8=KkOn%k` zt(Hki9ax-#b#>BSC24n=gx1KUB#4eBlNN19*LKogCu!eg(q1c*k|4UDOj@)Z?*5*z zh1(=lPkXWydM(fwMe;5aRQIq*TC^Q4U|68+7BM+WrsaDg<2p)Ke92_DS|*QJATFhK zb=F!XYaKRgIYupKt#z{2>t-!Eqgc%T*;8G at 0CF%b6zxckecMI<EfDZe34A#xrQ0tZ zKb>AWK0D_KKuQ1o at YCg$ga7{)gzpsbkcg$c36W2a{?_zH1%tbU-Q<`n=P`O3L_v;zJZD|yVDA=qa`sp%@-s#36R}m3r~cad>GV$J|FJDl+=~C5fQskh_a6Rhw2ij?@Kg|c zLbh;&$f=4Cud~>S%*@S5(dvb8_;7KXD9b?12jP2=qIr<fVWp4YN`p7ACC|a5B4XoK zX@)7MtQq7PcmyCm<H;k>wIdwHU8Sot{7``KumE&AxY%iE2Spyc-N2z&-L6Q(P?W<0 zf at 7V4Lyzg4MtTEfGx5u0I3P0)j$CEYF at SD$Kdyvl51E4WG=SYIJF(4<fE+y{pnyGb z;8f!3l;>OlqI)~HT8gVveR^I-;WYf*>iFln(SvgedHA_idUj_IvW?MRkJ-l9gI%kY zNx$d8O+;>7pYo#x8S(e?JITWR&d?nf@;iB(`&}rIf+c0%2N;(bo28bx4D-X5`AUe% z?Sua16dC{PgMVAXOIX9qhSUe067GiN)JCoFL3-24tSWgO`am9Zwr<&TPsWR+Uk3|t zUMH{y-dSkDiwGKUS&zeusRX%!jZqvzblO43kEdbQh|~*6DN0!TArz$#knIA8_mM%W zg%XbA)O{_=X}qw4v at _|&TQBJjw3Hxq_W{Nzt3Epd;POOFszwytssn}L6s%vro at ks9 z2k-RaIETtY;8-IPGAV&h=>*PtKVT=sVJD3i)E@#4jqz at kC=zEY2s%|{Rf~>YZh=$1 z_<eDzD>WOA#fMUyPWAe_li`TdR{ePRNm86_wDF;w`wNM*ApPYB5$>-v1Z259wUy*| zOLse-z*+BmU!1B+s(ErcRqM&;C&HonLy(v2K7QXJobLdqj at bt|1W<MY(r7|to40I8 z-UUiZkZs-v*k5i#lHMNVX|@FAZH!(!cZP#tACnT=MKO_&0=`}1FzCC433J(3Ae;`h zjRKVO)r%zZLG-Fa?Gv>PqDOZ?LxTHw?T~Oj3Y<omg-b|~8bD0S<~Yykkj(Vz-5G>v zhKb2+ at 5e+;`ofPi_eCdx9iagd4r2MiWF`xz1-*SaJIf&^?L*@;y^N-mV&JqiZ3i71 zqnQmEjc&4riKEAgE6NrvDfgia1&~R$OwOIGK`Wi<tggH`twF8ME~f0=jgq at ct2cX) z*4Pd(w}zb$Varz-ho#JRHjJQ at nd6Ym_F0;cq|DUMn5N^=5$8E?Hf3hy9hX}`VE<nr z56Ah>m*<O+=g>*yAqBn-93OsGOQ2mZQ&XlRy)EuX3K48*A4v#C;Rq5M;*;S_fiq1z zvs&i at atO;s`zXO>CSJ#2 at v|AGyg2=pC%8%s_|)OA7}go~Alt?vGzoI~c%y{m<wrT! z%T9xGl9z(fhL1?nA{MS(_Z|WxbKQ%#7U?Ac8UEJt<eBnF4)&PV>h!WEU#rU<8#~TH zWa-WfO$hd>2DaVzgnbx4x-;YVXmtc~1iEjk1eD)5RUidGTA=$Ky2~MNx>e$64-Wg7 zJ=YIJ<{i@)rtS(qIlbVb-Ea-2CmP4tS?UFgmZFLcQa&FN*dP_fRxPo%8Ii5!199JG z(GlEfcC_&-KMLt=kcyYlHv~j*e`7-2haKE$|IEg#oMvMiq+*^`OK?9vA at 28CbcF61 z4({|c#LoSwLw5x??+}taDDGJO$i1K6>3<(=lo!o#aL;h)P90g)61saQ#Qgz_j?jII zgZsM<-H$tT&zlhUyB*wVm1eU>`AZJ&J009-PKZ1Gmw=7eB6<R7gOpE6m#2dErR<jX zO^EwGi;l27jb3){<qqzPty;qGg%jew!=fX&(@wmd`wR#78CEU9y>vp{hb%gR`&;R} z$`3pIzTe^Z#S`NGgoFEhhwih|<*Aru)@qLiapnxpOEM*FHQMnXj5smLswM2>mlC2R zJvc^*@o>aC!JIF~!{IhuFhk0tQVPaO335(3EG0}^BN3{=DW^G=wS;l at PURf;A?j7W z^!;UC6p$V~v0fKFBR#0nEN>4Ey*|(w-YY3f8!mcC$}Az}_kp3Ue^s<Q+OsBG%Ln3q zi-Y at 59o+XhxPRBdy>3F>>5Bw5y%s&=;6Ci&KIGuOZbIA}9o)A%xc54^zbspedC%B5 zA at 21K?hyy~MhEwM9NgO{#J$?VJ>cN(cW|$FaF0!hd%J`C9S-idIJkQqe(#+Scf-N` z0SEUX2lp!-+&52%`(_9C-45<M9Nf1$xZg4%?wW&py at R{v;NIl$`{0DQ-{|1}goFEb z2ltpm_b*L|`#J}A!@<4X!TlkJ?n4ve9&m8q;NVX8m$vb+VxxomeG}qd=iuJr;J(hm z{Z<F}?Gxg@!NL7T2ltqR`*RNNJ0`@v#lihn2lvem?yozz4^N1D#KHY;2lqh-_gRiM zzi&d^V-D`y9NfR;;9g;Jm+Mu(i6hsmDf5L`ukM!;f<t=vTd!A%K3`{^c)eOJH9hgV zu6(IU2Zl-ua$WZ!>Q%nql*gMUjk(5N^wRt5b<wTT?<(zp*@N7#dku8VXY2Uy=#=d` zb8Yis=uXnne%&kRaeTjSoCbvQi_t25C_=<`Mik|0B;{y~$_P<Fr0yK at -v}LnavVZ$ zG9D6b)y1Ch(*LRFp&Xlvz~TRxfbWd49U-5nbsuWU-4#yf5kUBuAaQ;yc#-co4()Q4 zioHq>`Gdfr*2^LEd|uu`b9o|qGuuh#@&Hkp4V*^kPOX&JDxoBVrgPdkgywcwC<Q`i zY0%cNh4UFe3IVYw4+0|BQJl_$fLPWbnok1qF1TAVKX0Q$Pst;AO71r))4z4lKY7e# zcJ>JgUqP(`;2;u^w<(EWLA(&y?&S+f1)HW-fXKUAE^{3q@*b8$!hmR~XleQ>8$=iX z>Oa%OVP~S^7$FLl#geFHhYSJokj)wo0wUKEocl9?$Pto5e#z)OaIHo8bwK23%yA}> zfo+=30^~-M7ulH(N}#~?(#4UgKAW9OQH#$P((=myv0JqfkgX<VqG$j@!D_vm0co+} zd>IfwSX=)3E+BQNMH<M~8%$|qylu27i&1X*;z`t!V++^)SwOa%y%NaEi-7oSyj}w& zW`i69M6O^tom`ZY-?=<Qrw9<MJ?r9t+Ql}DT?!l at a4o%R0g2dj*8!nG5$AP1lF!(1 zJ`2c~Y+4KfV%PM40pdq3i`SEYth3d677)H8?GwBX0&>*GYZMT<@5kl&6Ci|cwXrF1 zrreq2ICT2PTQ)jHfXL?s9On{1>TL3S91xP%qD;@08*Ml-Kz5iA9Ed`P1uI?#AuV|8 zy at 9naAt)#&1Z6}F2NRL#g8&HKKaawn+GM^LkUWzzVLk-N6E>V at 0FgV=;4Y3K=1;^( z9tuAPjx`q$<TrrGJw1+d43N#HUWAi}gPGcGklBD_03FRyP%Z|9+MQ*wD*({|vvj|j z;iQfUt$@%3!E5RKP-Ugirl|oO*><>u1Ay$d>HZ)f{ArHV^ie<tZ8HA|5DG+t(>V-? zX5z^6R1_0J*uMu33?fDe@@W_&zYh>guQA{ZLk)-|DCgsa!THEZx!H*UO1aHqOMpYc zve+sIqzMp`)x!A<Ah*~gyv<STen9Rp?W6N!wH3du)=uD*GKf#e{2U;K;AP4DYe4Qc z>5!}$*bej~CYk7mHz)vkz=m@%AotmLtpH?$4JQnU4-oP_r;`MPMlFl-Hb8E*)!GHf zA>dfGo&&_*#$E>G8K_{j%;SK>OnI{LFtWHM)YRRk2XQV}Tc}HBW8F=(TW#jU(bi5` z7Hn#wW4lDfNH`jj=~jHl+st&~I2DP5Bfv#cu)*O)=DA!rTtyxsi6&(~)d&FRK}zF* zq!u>OQibMXviH+!D=VcmHi0o_NqD;YY1XmZiWJrPp+fv$UTL&TJ+vq_--3UcS9H4S z5jrdns753nYD<Ib?Ktoag)JdEZAy=c^X}-sZqopQGmb#h at hUbBNrIzv9jBnt?tZAY zBiI&NMhEce`sFxEp{`~PPKBpa+H}3PYei?YCmuF}I2f=tD$d+zHBhQkNr=`MojAfC zehGya;@Bba9Txco7gDAt$j at dfu2@jEcrjJQ7hc*TolQZkW$A<fevZ66{LWTRYNH%J zW=G|-!{vxVJQTyZjCxyFYcL$a8T*QU1y1JU2kozhO>hhzLCk{(1&rNl7U+6csJR>B zZ_=A_9DkUaBn~um!ck1;1<_%Zc5>p7J4lv7iw@|M1OZ>&u%f<pd5vDTrlz5KCC(TO ztgMo!nCkehfc+Z=wd75_6I at YF*Xu&@XehF9fgXgzsL#M=kdPnMg((o^Q_mB^;eZ`6 zz-03}!FL9LLFZ(#^S(Hdw13fNv$D?G)_AgjE#t#y9=)~M;ICW-aIEH)_;L<xf#VDH z&Q at Z9f8vJqaEK%0WG at i^>&;3!g4d$0cXc=65D<KUK^LF-;qp<7#odD`@yR}k0PPrh z*g_X(vA$Vg;qaw|=p5v^2u=>cHxYDv$)TC-jR#~YgihkknibVH711+esj3UF&=F(l zrsZE4z at lBs6-#Bww27fd)1n9OvW25CRA-mXLd+k0&JxZ+%aZ40+P-BWic>$OK_GO0 zy$SuFv0&63pQ2z*oW=wlgGO7FdV_ at xcGd?n^l|E*v>R{-**>a~(ng^)lgR2U=4U)$ zu(Y<zPp=dGMA|I%<Y4M^DWb~W!cT<b{+89!xZ+zG>@y=^nl^CQ1_;sqnoW=KL+M&V zy(x+iE&1gU>GkFmuQS$Z-{>I8PvBGA*~p?bn<v-lX@;d{&c4<m><VK=aLgHd$zOoP zEu*f}|M86HZ~0LVlZ5$o5J`c5(L+zy0c&jP==Syt#cT#S(dSfnqu^aA)k6H6C9tDI zk^1z{qDX<o7&p%FDZfslpYZc3dV24nK{v&!a+G63K<XgJM<yf1&wA?2YmI(vXcsMe zV{>x^laxG6Q7CX?;ZnZMqK~7#>@YA@>KTpFQKl)W)ryXQY1e*Qx4&$GT*`<sv#Yz) z95R__#K|4p+kAXU9nx`}aZ4z!w?=|(T`9wwWq}lAtKVBakdJ~+x{No5pDOz|cgR2T z^EGLMJx-03W4)|A-p6 at BA+6KP-h9%@$dWx}%wl}35}_5F`cFJe%K62%WVFt?6wTt~ cJ*T at 12dh96Hl-NSz1AErCnCApa2oPI0GHmX2><{9 literal 0 HcmV?d00001 diff --git a/images/lib-x86_64.so b/images/lib-x86_64.so new file mode 100755 index 0000000000000000000000000000000000000000..8cee4d202fc167f5cb2809048577b7c130dd0567 GIT binary patch literal 5467 zcmdT|U5pe(5U#ytVO3-i0TD4wKoih7ZV>P^LHAe=2DAJKcLsxInA_ds*6fe&%#p(w zB{@hGa)}y$9(>UFqS2V}pb3%~fA9}|xkOF;&ly5;iiz@|;tOk4Pk+Zu?_M+}KG>U` z>iVjxtGc_or>7t3Eo|&cBnTx*w~^vzgh);cK2Ae}C`a9t;^$(zLg}V1h}vpPv=EfY zQaa*eCjTuhw^AVvI;lfCrzz~ZwB2 at Xw_V$T9?<%r2wS=%|6N*c(rZ{I1yppU+<7`E zNu2+*ME%WYqa^<~ZSAN0 at sr2it{p0#uRTy$_{`z&zj<x^Pia%+(iI6y{5<-Om7p29 ziv*j+|BLv4{M3^V<$J&Q`O61(EqQb7?3^>7{W6E)X-kr=K9+_fMcTI_JgV1EgD+ux z8I&UQ9<I-&v#mw5tO!c9S>tH~-#!gKm+^TW;#{ck*_77v%WPO&cW<pxcm2R?2ChqP zrCtfh9b`hTTO9GE>QyTbmdU+ipSz>Hx8euoX1?nAe%YsLWuR#L4SOxQ<&qb8Y%}2d zVQUQ4OSGx5d41kpWv{Z=z$H-^&kKGbD%|Z{mH4F$FRt(ub&(gc<fJTBLmq%1pBdsZ z$CAS+Uq<lglubl%<f5|C<14ul#huZg(~~zcIQfY at e&dHT`hNOEYt6+;i(1#t=4WPU zj%&gXv6z0GXti2m=Nw6W&}ETx=$)XeHLlDaN9jMXZh~dxJa)RLZ|CrUGrI0&;e*-E z*t%H>izZ)@R>o3iIK2vE*M7^yIkMml)+wx<aNa$abjEhIoLj#3t<2I564ZMM=dlG( zv%IG@|8rJ7%vF{*Pk)%&$JNB{o_kK77|bj^$RQH-v%_a4b2)%uapB0-%UNg3p>KjY z?EeuKoa||x$}FXmC&GyPS#PKAR8C?UJ=Y4ZbjGf}i5b>&M$e?Vk4KUs7(OeV-7U6i z{4#1lc+`|@^<YF5ASMqS^PJFt<cO5nA(>i_muepQ{oDCgL!blN5NZFiP7=u%DaW+@ z;*h19rk7~CNYkXIlRAHNGX%NpNm3+#q+AgaI;stUZ`VBXc#qbT{YVPhJKqZ9&uV=h zAJrd>!>^iOsO5he^02l4{)zX4>FIYJ7j4StZ?#tNR=v_%ZLhYo)~amwmh77BT5H9Q za>;VMAjEH2y^?qI|Dm$&@2>^k0NH-f4CxSR^+r&(_tuB)f#FKEbVH>?iW~C$A+k&R z>ued)pczW`m79L0QI9b$%bMk?CkDE9e>EUmZPa#99^ty$uI=)WJJ|GUWwMJwqv><g zA-S)}O~~#n?bywR^6AwoMfTHRYkt_ON#45Iwo$8<>w!6;|B}Co?IicHUZy)Ap!w+D zE11py-#NEokM#`NtqqZGSXUb66BUuHW!PiAgZ`=&#johV9_uj2n6wRh>>r at mFIYtt ztWWR`S7hzN9_tkp`v&5N9%w(?%U%E;`vIt>9ZCG+8}VzHN?bwT1jGIVx<^1R at DF?R zzs|C#{ZXw53O#{k4>j#a7?ZfL-{SlP3VT*jMSMkz&rH;QLi-1`qRL!{J<bsi8}?HQ zS}|=*80^sOLBk&J7f|!S2>-A at tnD#>i}Z^K)YLcmr?frh$4XhMX`JuPcrpG;i677L zU%CkUthUeUIR4K5MZ-R)?Q`1R^k?!f8TNReJO9xBb+(t>LHu~%;5+4jo<EEm{G(rQ z8UArz9M=hH<{#`q-!ts-{-4zL7R#drcA%fKQ0j;u=lHZf5Fk#p0Xy*HTrpBqiD3T& z6g4$<FJm0OqpCk@|6fHxuABD4BX^^!PA24z>VdzK+3Wa^_%W_>uIc3e+~uKt(Qs(6 zq0%(ZBu9()NmM1t5hE|+cyj8z7sqE1_VYNNBJ9&~d?sZ(bSlYjI_#@){q)p1Fpjr> zPl`OrJLyEn_W4bQM2|F-<kK+rqX^9HTuRty;`kiCAF!g3swXK!*dL<8B!87*-N*6E zroPMK_&mZojpLUS)?XZ-PgqxRd;wv-#BuqWjh8S_+s8-pe+GY7$F+&%J3K+{;~+Vl z=r9i53U42WUdFrlgkc%;vRmn2h#z@<pT_6Tvbc6(y^L^O+IhifXS(<gvcAN>!kEVz6y84X&nvt={#Ui%al`MsjCUHhkEEThvn_MJzEgO6KK!Kc40RiE{-N7x%M%_bi)CiX zOoK0Hd|rqAU&;6~vk~Td8JBw&Gq3K{xOx9_*EIU~GT!N)g^FIa8o5%TVl(iA;lV+> z$af?8zHK|)!seZQa?|2&h;eu1Bcf8n-CJ!8cvV-O;azWdg!o{7f3+NxOZM7T-D^k$ zZlyFL+|8s8{%&cwR@)Chy<0aZHyd~KZ0U8ui5t`}cu^k=$_wA<NT{0%+t&9K+-(~- z?(FSz`+C+FdL`tN-*AV#da26SL1Fy5tqpf??b)(9&uIKQsl%O7r^}^WE_zSYc8P?` ICH2ko7w~UU;Q#;t literal 0 HcmV?d00001 diff --git a/perl/lib/Sys/Guestfs/Lib.pm b/perl/lib/Sys/Guestfs/Lib.pm index 4020c24..3820758 100644 --- a/perl/lib/Sys/Guestfs/Lib.pm +++ b/perl/lib/Sys/Guestfs/Lib.pm @@ -300,6 +300,163 @@ sub resolve_windows_path return $path; } +=head2 file_architecture + + $arch = file_architecture ($g, $path) + +The C<file_architecture> function lets you get the architecture for a +particular binary or library in the guest. By "architecture" we mean +what processor it is compiled for (eg. C<i586> or C<x86_64>). + +The function works on at least the following types of files: + +=over 4 + +=item * + +many types of Un*x binary + +=item * + +many types of Un*x shared library + +=item * + +Windows Win32 and Win64 binaries + +=item * + +Windows Win32 and Win64 DLLs + +Win32 binaries and DLLs return C<i386>. + +Win64 binaries and DLLs return C<x86_64>. + +=item * + +Linux kernel modules + +=item * + +Linux new-style initrd images + +=item * + +some non-x86 Linux vmlinuz kernels + +=back + +What it can't do currently: + +=over 4 + +=item * + +static libraries (libfoo.a) + +=item * + +Linux old-style initrd as compressed ext2 filesystem (RHEL 3) + +=item * + +x86 Linux vmlinuz kernels + +x86 vmlinuz images (bzImage format) consist of a mix of 16-, 32- and +compressed code, and are horribly hard to unpack. If you want to find +the architecture of a kernel, use the architecture of the associated +initrd or kernel module(s) instead. + +=back + +=cut + +sub _elf_arch_to_canonical +{ + local $_ = shift; + + if ($_ eq "Intel 80386") { + return "i386"; + } elsif ($_ eq "Intel 80486") { + return "i486"; # probably not in the wild + } elsif ($_ eq "x86-64") { + return "x86_64"; + } elsif (/SPARC32/) { + return "sparc"; + } elsif (/SPARC V9/) { + return "sparc64"; + } elsif ($_ eq "IA-64") { + return "ia64"; + } elsif (/64.*PowerPC/) { + return "ppc64"; + } elsif (/PowerPC/) { + return "ppc"; + } else { + warn __x("returning non-canonical architecture type '{arch}'", + arch => $_); + return $_; + } +} + +my @_initrd_binaries = ("nash", "modprobe", "sh", "bash"); + +sub file_architecture +{ + local $_; + my $g = shift; + my $path = shift; + + # Our basic tool is 'file' ... + my $file = $g->file ($path); + + if ($file =~ /ELF.*(?:executable|shared object), (.+?),/) { + # ELF executable or shared object. We need to convert + # what file(1) prints into the canonical form. + return _elf_arch_to_canonical ($1); + } elsif ($file =~ /PE32 executable/) { + return "i386"; # Win32 executable or DLL + } elsif ($file =~ /PE32\+ executable/) { + return "x86_64"; # Win64 executable or DLL + } + + elsif ($file =~ /cpio archive/) { + # Probably an initrd. + my $zcat = "cat"; + if ($file =~ /gzip/) { + $zcat = "zcat"; + } elsif ($file =~ /bzip2/) { + $zcat = "bzcat"; + } + + # Download and unpack it to find a binary file. + my $dir = tempdir (CLEANUP => 1); + $g->download ($path, "$dir/initrd"); + + my $bins = join " ", map { "bin/$_" } @_initrd_binaries; + my $cmd = "cd $dir && $zcat initrd | cpio -id $bins"; + my $r = system ($cmd); + die __x("cpio command failed: {error}", error => $?) + unless $r == 0; + + foreach my $bin (@_initrd_binaries) { + if (-f "$dir/bin/$bin") { + open PIPE, "file $dir/bin/$bin |"; + local $/ = undef; + $_ = <PIPE>; + if (/ELF.*executable, (.+?),/) { + return _elf_arch_to_canonical ($1); + } + } + } + + die __x("file_architecture: no known binaries found in initrd image: {path}", + path => $path); + } + + die __x("file_architecture: unknown architecture: {path}", + path => $path); +} + =head1 OPERATING SYSTEM INSPECTION FUNCTIONS The functions in this section can be used to inspect the operating @@ -1093,8 +1250,8 @@ sub mount_operating_system $g->umount_all (); The C<inspect_in_detail> function inspects the mounted operating -system for installed applications, installed kernels, kernel modules -and more. +system for installed applications, installed kernels, kernel modules, +system architecture, and more. It adds extra keys to the existing C<%os> hash reflecting what it finds. These extra keys are: diff --git a/perl/t/500-lib-load.t b/perl/t/500-lib-load.t new file mode 100644 index 0000000..1407169 --- /dev/null +++ b/perl/t/500-lib-load.t @@ -0,0 +1,26 @@ +# libguestfs Perl bindings -*- perl -*- +# Copyright (C) 2009 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; +use warnings; +use Test::More tests => 1; + +use Sys::Guestfs; +use Sys::Guestfs::Lib; + +# Just check Lib can be loaded. +ok (1); diff --git a/perl/t/510-lib-file-arch.t b/perl/t/510-lib-file-arch.t new file mode 100644 index 0000000..14392e8 --- /dev/null +++ b/perl/t/510-lib-file-arch.t @@ -0,0 +1,62 @@ +# libguestfs Perl bindings -*- perl -*- +# Copyright (C) 2009 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +use strict; +use warnings; +use Test::More tests => 17; + +use Sys::Guestfs; +use Sys::Guestfs::Lib; + +my $h = Sys::Guestfs->new (); +ok ($h); + +$h->add_drive_ro ("../images/test.sqsh"); +ok (1); + +$h->launch (); +ok (1); +$h->wait_ready (); +ok (1); + +$h->mount_vfs ("ro", "squashfs", "/dev/sda", "/"); +ok (1); + +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-i586-dynamic"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-sparc-dynamic"), + "sparc"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-win32.exe"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-win64.exe"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/bin-x86_64-dynamic"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-i586.so"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-sparc.so"), + "sparc"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-win32.dll"), + "i386"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-win64.dll"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/lib-x86_64.so"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/initrd-x86_64.img"), + "x86_64"); +is (Sys::Guestfs::Lib::file_architecture ($h, "/initrd-x86_64.img.gz"), + "x86_64"); -- 1.6.2.5
Apparently Analagous Threads
- [PATCH / discussion only] Add kernel and userspace arch detection to virt-inspector
- [PATCH 0/2] Add RELAX NG schema and tests for virt-inspector --xml
- [PATCH 0/2] Add a 'virt-rescue' command
- [PATCH] Add waitpid along guestfs_close path (RHBZ#518747)
- [PATCH] Update incorrect comment in Lib.pm