From 6d2c0f9f29662a4eef27788b1bc0fd23bb04c76d Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Fri, 18 Feb 2022 17:01:29 +0100 Subject: [PATCH] d02 ex02 multiplications sans float et sans long pbm abandon --- d02/ex02/Fixed.cpp | 82 ++++++++++++++++++- d02/ex02/color.h | 25 ++++++ d02/ex02/main.cpp | 185 ++++++++++++++++++++++++------------------ d02/ex02/operators | Bin 0 -> 45088 bytes d03/ex01/ClapTrap.hpp | 5 +- d03/ex01/ScavTrap.cpp | 1 - d03/ex01/robots | Bin 29312 -> 29200 bytes 7 files changed, 214 insertions(+), 84 deletions(-) create mode 100644 d02/ex02/color.h create mode 100755 d02/ex02/operators diff --git a/d02/ex02/Fixed.cpp b/d02/ex02/Fixed.cpp index 21a4e1c..ec5b6e8 100644 --- a/d02/ex02/Fixed.cpp +++ b/d02/ex02/Fixed.cpp @@ -1,6 +1,5 @@ #include "Fixed.hpp" - /* * functions to print numbers in binary * for the float, found help from stackoverflow : @@ -125,15 +124,90 @@ bool Fixed::operator!=(Fixed const & rhs) const { return this->toFloat() != rhs.toFloat(); } Fixed Fixed::operator+ ( Fixed const & rhs ) const { - return Fixed( this->toFloat() + rhs.toFloat() ); + Fixed result(*this); + result._value += rhs._value; + return (result); } Fixed Fixed::operator- ( Fixed const & rhs ) const { - return Fixed( this->toFloat() - rhs.toFloat() ); + Fixed result(*this); + result._value -= rhs._value; + return (result); } Fixed Fixed::operator* ( Fixed const & rhs ) const { - return Fixed( this->toFloat() * rhs.toFloat() ); + Fixed result(*this); + int left = this->_value; + int right = rhs._value; + + result._value = 0; + // left:5 right:10 + while (right > 0) // 1 + { + result._value /= 10; // 0/10 = 0 0/10 = 0 + result._value += (left * (right % 10)); // 0+(5*0) = 0 0+(5*1) = 1 +std::cout << "intermediaire: " << result << " "; // + right /= 10; // 10/10 = 1 1/10 = 0 + } + result._value >>= _frac; + +// result._value *= rhs._value >> _frac; +// result._value += (this->_value * (rhs._value & ((1 << (_frac + 1)) - 1))) >> _frac; + +// result._value = ((long)result._value * (long)rhs._value) >> 8; + + return result; + +// +// 47 * 256 = 12 032 +// 5 * 10 -> 5*256 * 10*256 -> 5 * 10 * 256^2 +// 256^2 = 65 536 +// 256 : 1 00000000 +// 65 536 : 1 00000000 00000000 +// +// +// 5 * 10 = 50 +// 101 * 1010 = 110010 +// 101.00000000 * 1010.00000000 = 110010.00000000 +// 101 00000000 * 1010 00000000 = 110010 00000000 +// 110010 00000000 +// 128 * 2560 = 327680 +// +// +// 3 * 5 = 15 +// 11 * 101 = 1111 +// +// +// 3.5 * 5.25 = 18.375 +// 11.1 * 101.01 = 10010.011 +// 11 1 * 101 01 = 10010 011 +// 7 * 21 = 147 +// +// +// 3.5 * 5.25 +// 3.5 * (5 + 0.25) +// 3.5 * 5 +// + 3.5 * 0.25 +// +// 3.5 * 4.25 = 14.875 +// 3.5 * (0.05 + 0.20 + 4.00) +// 3.5 * 0.05 = 0.175 = 17.5 / 100 +// 3.5 * 0.20 = 0.7 = 7 / 10 +// 3.5 * 4.00 = 14 +// 14 + 0.7 + 0.175 = 14.875 +// +// 3.5 * 5 = 17.5 +// 3.5 * 2 = 7 +// 3.5 * 4 = 14 +// (((17.5 / 10) + 7) / 10) + 14 +// 17.5 / 10 +// 1.75 + 7 +// 8.75 / 10 +// 0.875 + 14 +// + } Fixed Fixed::operator/ ( Fixed const & rhs ) const { + std::cout << this->_value << " " << rhs._value << " " + << (( (this->_value << 8) / rhs._value )) << "\n"; return Fixed( this->toFloat() / rhs.toFloat() ); } Fixed Fixed::operator++() { diff --git a/d02/ex02/color.h b/d02/ex02/color.h new file mode 100644 index 0000000..f40596b --- /dev/null +++ b/d02/ex02/color.h @@ -0,0 +1,25 @@ +#ifndef COLOR_H +# define COLOR_H + +# define GRAY "\e[0;30m" +# define RED "\e[0;31m" +# define GREEN "\e[0;32m" +# define YELLOW "\e[0;33m" +# define BLUE "\e[0;34m" +# define PURPLE "\e[0;35m" +# define CYAN "\e[0;36m" +# define WHITE "\e[0;37m" + +# define B_GRAY "\e[1;30m" +# define B_RED "\e[1;31m" +# define B_GREEN "\e[1;32m" +# define B_YELLOW "\e[1;33m" +# define B_BLUE "\e[1;34m" +# define B_PURPLE "\e[1;35m" +# define B_CYAN "\e[1;36m" +# define B_WHITE "\e[1;37m" + +# define RESET "\e[0m" + +#endif + diff --git a/d02/ex02/main.cpp b/d02/ex02/main.cpp index 1c84836..2c16034 100644 --- a/d02/ex02/main.cpp +++ b/d02/ex02/main.cpp @@ -1,6 +1,9 @@ #include "Fixed.hpp" #include #include +#include "color.h" + +#define COLOR B_YELLOW int main( void ) { @@ -17,83 +20,111 @@ int main( void ) { std::cout << Fixed::max( a, b ) << std::endl; -// Fixed c(10); -// Fixed d(5); -// Fixed e; -// -// std::cout << "c: " << c << '\n'; -// std::cout << "d: " << d << "\n\n"; -// -// // ">" -// std::cout << "e = greater of (c, d) : e == " << (e = (c > d) ? c : d) << '\n'; -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e > c ? : " << (e > c) << '\n'; -// std::cout << "e > d ? : " << (e > d) << "\n\n"; -// // "<" -// std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n'; -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e < c ? : " << (e < c) << '\n'; -// std::cout << "e < d ? : " << (e < d) << "\n\n"; -// // "<=" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e <= c ? : " << (e <= c) << '\n'; -// std::cout << "e <= d ? : " << (e <= d) << "\n\n"; -// // ">=" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e >= c ? : " << (e >= c) << '\n'; -// std::cout << "e >= d ? : " << (e >= d) << "\n\n"; -// // "==" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e == c ? : " << (e == c) << '\n'; -// std::cout << "e == d ? : " << (e == d) << "\n\n"; -// // "!=" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e != c ? : " << (e != c) << '\n'; -// std::cout << "e != d ? : " << (e != d) << "\n\n"; -// // "+" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e = c + d : " << (e = c + d) << "\n"; -// std::cout << "e = e + c + d : " << (e = e + c + d) << "\n\n"; -// // "-" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e = d - e ? : " << (e = d - e) << "\n"; -// std::cout << "e = c - d - e ? : " << (e = c - d - e) << "\n\n"; -// // "*" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e = d * c ? : " << (e = d * c) << "\n"; -// std::cout << "e = d * c * c ? : " << (e = d * c * c) << "\n\n"; -// // "/" -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e = d / c ? : " << (e = d / c) << "\n"; -// std::cout << "e = d / c / e ? : " << (e = d / c / e) << "\n\n"; -// // "+ - * /" -// Fixed f; -// Fixed g; -// std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "f = e + d / c - d / e * c ? : " << (f = e + d / c - d / e * c) << '\n'; -// std::cout << "g = d / c ? : " << std::setw(5) << std::left << (g = d / c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; -// std::cout << "g = e + g ? : " << std::setw(5) << std::left << (g = e + g) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; -// std::cout << "f = d / e ? : " << std::setw(5) << std::left << (f = d / e) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; -// std::cout << "f = f * c ? : " << std::setw(5) << std::left << (f = f * c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; -// std::cout << "f = g - f ? : " << std::setw(5) << std::left << (f = g - f) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n\n"; -// // "/" -// c = Fixed(6); -// d = Fixed(10); -// std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; -// std::cout << "e = c / d ? : " << (e = c / d) << "\n\n"; -// // "++x" -// e = Fixed(2); -// std::cout << "e : " << e << '\n'; -// std::cout << "++e : " << ++e << " ; e : " << e << "\n\n"; -// // "--x" -// std::cout << "e : " << e << '\n'; -// std::cout << "--e : " << --e << " ; e : " << e << "\n\n"; -// // "x++" -// std::cout << "e : " << e << '\n'; -// std::cout << "e++ : " << e++ << " ; e : " << e << "\n\n"; -// // "x--" -// std::cout << "e : " << e << '\n'; -// std::cout << "e-- : " << e-- << " ; e : " << e << "\n\n"; + Fixed c(10); + Fixed d(5); + Fixed e; + + std::cout << "c: " << c << '\n'; + std::cout << "d: " << d << "\n\n"; + + // ">" + std::cout << "\n" COLOR "operator >"" RESET " RESET "\n"; + std::cout << "e = greater of (c, d) : e == " << (e = (c > d) ? c : d) << '\n'; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e > c ? : " << (e > c) << '\n'; + std::cout << "e > d ? : " << (e > d) << '\n'; + // "<" + std::cout << "\n" COLOR "operator <" RESET "\n"; + std::cout << "e = smaller of (c, d) : e == " << (e = (c < d) ? c : d) << '\n'; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e < c ? : " << (e < c) << '\n'; + std::cout << "e < d ? : " << (e < d) << '\n'; + // "<=" + std::cout << "\n" COLOR "operator <=" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e <= c ? : " << (e <= c) << '\n'; + std::cout << "e <= d ? : " << (e <= d) << '\n'; + // ">=" + std::cout << "\n" COLOR "operator >=" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e >= c ? : " << (e >= c) << '\n'; + std::cout << "e >= d ? : " << (e >= d) << '\n'; + // "==" + std::cout << "\n" COLOR "operator ==" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e == c ? : " << (e == c) << '\n'; + std::cout << "e == d ? : " << (e == d) << '\n'; + // "!=" + std::cout << "\n" COLOR "operator !=" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e != c ? : " << (e != c) << '\n'; + std::cout << "e != d ? : " << (e != d) << '\n'; + // "+" + std::cout << "\n" COLOR "operator +" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = c + d : " << (e = c + d) << "\n"; + std::cout << "e = e + c + d : " << (e = e + c + d) << '\n'; + // "-" + std::cout << "\n" COLOR "operator -" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = d - e ? : " << (e = d - e) << "\n"; + std::cout << "e = c - d - e ? : " << (e = c - d - e) << '\n'; + // "*" + Fixed f; + std::cout << "\n" COLOR "operator *" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = d * c ? : " << (e = d * c) << "\n"; + std::cout << "e = d * c * c ? : " << (e = d * c * c) << '\n'; + f = Fixed(3.5f); + e = Fixed(5.25f); + std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = f * e ? : " << (e = f * e) << "\n"; + f = Fixed(1000); + e = Fixed(50); + std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = f * e ? : " << (e = f * e) << "\n"; + f = Fixed(178481); // 8 388 607 / 47 = 178 481 + e = Fixed(47); + std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = f * e ? : " << (e = f * e) << "\n"; + // "/" + std::cout << "\n" COLOR "operator /" RESET "\n"; + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = d / c ? : " << (e = d / c) << "\n"; + std::cout << "e = d / c / e ? : " << (e = d / c / e) << '\n'; + // "+ - * /" + std::cout << "\n" COLOR "operator + - * /" RESET "\n"; + Fixed g; + std::cout << "f:" << f << " e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "f = e + d / c - d / e * c ? : " << (f = e + d / c - d / e * c) << '\n'; + std::cout << "g = d / c ? : " << std::setw(5) << std::left << (g = d / c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; + std::cout << "g = e + g ? : " << std::setw(5) << std::left << (g = e + g) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; + std::cout << "f = d / e ? : " << std::setw(5) << std::left << (f = d / e) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; + std::cout << "f = f * c ? : " << std::setw(5) << std::left << (f = f * c) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; + std::cout << "f = g - f ? : " << std::setw(5) << std::left << (f = g - f) << "[f:" << std::setw(5) << std::left << f << " g:" << std::setw(5) << std::left << g << " e:" << e << " c:" << c << " d:" << d << "]\n"; + // "/" + std::cout << "\n" COLOR "operator /" RESET "\n"; + c = Fixed(6); + d = Fixed(10); + std::cout << "e:" << e << " c:" << c << " d:" << d << '\n'; + std::cout << "e = c / d ? : " << (e = c / d) << '\n'; + // "++x" + std::cout << "\n" COLOR "operator ++o" RESET "\n"; + e = Fixed(2); + std::cout << "e : " << e << '\n'; + std::cout << "++e : " << ++e << " ; e : " << e << '\n'; + // "--x" + std::cout << "\n" COLOR "operator --o" RESET "\n"; + std::cout << "e : " << e << '\n'; + std::cout << "--e : " << --e << " ; e : " << e << '\n'; + // "x++" + std::cout << "\n" COLOR "operator o++" RESET "\n"; + std::cout << "e : " << e << '\n'; + std::cout << "e++ : " << e++ << " ; e : " << e << '\n'; + // "x--" + std::cout << "\n" COLOR "operator o--" RESET "\n"; + std::cout << "e : " << e << '\n'; + std::cout << "e-- : " << e-- << " ; e : " << e << '\n'; return 0; } diff --git a/d02/ex02/operators b/d02/ex02/operators new file mode 100755 index 0000000000000000000000000000000000000000..a700ad2616845320ecd0a519eb22e5d5d14cda32 GIT binary patch literal 45088 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⋙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 Sr#6o!-}GZ8A0ZGiW&azzCJ1`~ literal 0 HcmV?d00001 diff --git a/d03/ex01/ClapTrap.hpp b/d03/ex01/ClapTrap.hpp index 7d50041..d1d3259 100644 --- a/d03/ex01/ClapTrap.hpp +++ b/d03/ex01/ClapTrap.hpp @@ -10,7 +10,6 @@ class ClapTrap { public: - ClapTrap( void ); // default/parametric constructor ClapTrap( std::string name ); // default/parametric constructor ClapTrap( ClapTrap const & src ); // copy constructor ~ClapTrap( void ); // destructor @@ -28,7 +27,7 @@ public: protected: - std::string _name; + std::string const _name; std::string _class; int _hit; int _energy; @@ -40,6 +39,8 @@ protected: private: + ClapTrap( void ); // default/parametric constructor + static int _totalNumber; }; diff --git a/d03/ex01/ScavTrap.cpp b/d03/ex01/ScavTrap.cpp index 16bd39d..fb21426 100644 --- a/d03/ex01/ScavTrap.cpp +++ b/d03/ex01/ScavTrap.cpp @@ -2,7 +2,6 @@ ScavTrap::ScavTrap( std::string name ) : ClapTrap(name) { - _name = name; _class = "ScavTrap"; _hit = 100; _energy = 50; diff --git a/d03/ex01/robots b/d03/ex01/robots index 07859a42686a7168e371dbac8ccab7c4c25d2905..21a2f625c942b3ec19b4a3408b965b270481655b 100755 GIT binary patch delta 3364 zcmZ8j4Nz3q6~6Z^E9}CCU6yrs0o{cV7HGpR2u5R!kBIIP1(x5z--xxQG|_^EWOP(; zBsM!VcJAPKHdKf^IrPI}M_yf>WC;HLaLvgbuN5YZ7Qos;!yVbML!LnLRV_ zoOi$T^Ugi@-g95)=QKD)gSM1licA=(oRHv;kL16j^BXuw{6}uMbtO-zgAy>&7pX0@ zn{J?~Nq>3qed~f}^BSERhi>t*hljuZXDvjeY-$68CLMX6#zot}6laA_jR*W18-1FM z=rqS3XlyWmPj1{W&0@$=t&LviDi6MW$KSSSJ@hwlMC+h3oYh)sFmy#bEx}K=CWMrP zpHgVkFDbdAA;gIJIq~u5>`o*ko+QVq2~$GJojLmUv}PS4T4IGsy`%7Pv|^su`d`u# z5=V-}xGnE!0wEf*T#Q>EyeSbPk#Z{Y z+amLqc;qRt+~74>RR!mxP-w7*_LdAt=ZrlR222)9&?Iw}Z^*P&y!~z*J~1tuqe-2k z$xoT9$(WJ{;L~Pf_mjWZu{}9yuLV9UO5E1)q~iBn#peeXrvX!vhz5frNoeq=N??iTv#EijwT;WU~cN z#zJZTP4H*fo@=`qom^P>w2$Ky!jUzziqUAW(V-PAmr~S3q47uvP8O$Uyou2{7FA3~ zKHvdHB3EIo*p`!+M@VTydEl?5_2q$YO6y7kkLrDIJei7c?b^KWd!-nl1pav z5H@(u$pcbH+((MiMhPiHc?@M8%2N^{$C$*UcN*o#c#x)0-bZ;KWj5MnhZSWB$|;l| zqdYyPD34HX`!nj%Kl_@ZtVKD6vW>}cMfp9(>$;&RQz+X$QIw=O(m}dDMFkoZ<5X^< ztV8(-B`aD68XiMgj2}+@Oi`Y}aWTq`DCQtbCll4)!t! z?SrLd`SWEw+?w>H_=F%U0vfU>0d|+UXb>!PEu+v}haIN^2VjbjbgVSaJKN%M?6=bvNkj4+9w zeW3Gs^9v`-?xl=8+TIuuG=^S+eXVwSnX zglKr46m{Gwqzrc}99ie_LyRyVPORZGijMDSAir`U&4u#H7qCk2RyuH!S1MN^qN{SG zY4Ap2hE{Z%skUfz zWP(dQ$%V`s3slw=;o2RjvEmm`)O>}j&{}JOw`wn9Pi(4lqwYxEb?SlUdbc!ff|K=| zvE&cy-FT_xHMs3zG27@Tb8%u4!TT3l8?0y(XzsRdvOPd-gk1!4 zNk*KfwNS-PLb;yZ>V+P>U7hF^j`4aGy-Xw-e??R;JcOJMF)w-=W*Qf4Fc5ZwG5SKN z|INH48ySy@7KeJ4gEK?5|B`zVVi9=w`zn53l*R*-8f*EUsF%q6UEy_3htZ_RNG{%{ zbLlX%mkeZBETRZT-eJ*jHzKbnMv!OXQhob{Q8Ctm;n6=Z-a;^Vm9P)TRBt=Op;R)L z|4LXG7pM^v#aUo;;dOVa_>&lo(Pskp;H}MQzp&4OvGrE^3UaqSh(9r`jQ zY$wI;iDjZjVR*Q~MH?Vk=H0+&-|?hrjkuP`rqnDO#HVZ;8|7~!IE z8Wec!YF`z2ut?^1tYb4WLhmN4)~#plA9qXPv-rklVic<%J&lb5kM%#r{4?)xE&dk9 z%rg;}j79T=mTrDR3Z2<c9f@sxf-jIcqk-?7*f?c2Fxi{wJ@jt*>`nLFL49+6Xzn96I=w9~DNp3U6QiJe}F yU5qVmU35c*!QQ$88}d5NPqePkFR4~@nNEVgwJz4>ZdQj?kh$wA`YNp3<@z5!EIHBu delta 3492 zcmZ`*4Nz3q6+ZVZE9}DR?gH*EpbHiyXmlY(<6r7S!F^OwKw-2Rbx~{-bsz)N&_so3 zes)OO)#Icl6Fb-%2PaNN*Um7VhTv$Tw$@}3-E+>p@4g$l&06oUklWeeRDqMh>7jn#)T5SO8%uYO9_yP=m_U-Qmw#~1(^y|wl_c5yEG7s8JnZ)x=d3ey|W~Z>y-6ZapX6YhyriXnA6~TRp1!n<8i?1^0>rU zvVbZcC?t5o6OvCb=ET3HxL5|>N%2$l(`_z~TiSBy+n|b3BJs>{rEQ6F%HF|j`sAt0 z0bb&v?>68ehdaGPwnyu6)T$%~(Eb#`zc}VSrAez*xk6|%oKI`AYE`Zfnyt?H8!Kk2 zpq)PxDdKQGG+qTgeNs8VaOnGS6Ca-4JY$@9uW$%;M=3+?1<0lyo_7nUfBTpIc!I2D=T@BC4T`*!SZhH-JSh3 z?u~Zd(siwUXSdeg+#9XGuj_Y3j--wrdZOxzsx&ZE+<4FV?4Hm<6`~fr@!YiC+qq@% z3v{ws-)jIs_BrLW}0eeM|AF};$Y0>V9yrrQZT9s#WW$Uy|lZ%VQKW-sP65U z?(Lox`P}W{%~*nM=USlou6g}^dH7si(D*(KP>tYJBXeV zFYCrRB~!=qW73qFl9&{tVspum|J~S9lE=F6FmVkp5|7{z@mJ7On#X#vxYWz~FhG0* zwh4Y%@H50C_>JIfF@Mfk>{Z|re&EkAr%)3LFt9j}bz+cs1D+)Q5?&)-fXtt#Bt>wl ze+ng8>Ca>R*y8uH5q#h8&5u$Knkm18`#)8oc&zFVk@Gv$I~BhX zo)*n-g#lfswh-Yittot2%T+wohywEw1!j&1Sn^kPPJxq3{(!=+hm)6lqU5xus={GV zo{g&07>6WQ;N5cXq{lQ7C(1_<|7LKCjdK%l>avM!6_zbqPgNXS=4J2U#bpbaik9VG zXKS)5%=rn;X?8NsT|R?)vSqoK?LbzQiW_X3_E+?ojyhB7#WGuKbF!2~_(OaN_>z zb=2~qY9Fh>oEjf3T4jyPW0$?)VK~jB@)WQ^1-8}rSu0+w8NfG9&fNi8RVT@NvsGc2 zDL6ozlxNc?fzxTh0rpFIL5?aU|25VKZb^Axx*-os`^QplkCRWJRiJsD5R!?;9A@zw zLg8Dawu2k^*W+pWmEi_JpB7FI!GSu;y>=x5WRq8aoY!aM<$!Ut!Bk-{R~)W#ul=jX zV2#NcP)W)=!M}c-2BcLfp+j*)Bra%`v@ggq>>mg(fQ?cfdDf7BDm%1`UvSDU#JnaN z+GElStTekq%S~V6r|BlQS8UKH_pl5`=K)1CkENlLHd$)<>->qbFUT|ePe{YpsU=(< zyYq>2g(f&8?ISXeSR+q!IgeQOA8C<2!HAeFUl1Ezb$CR`G33)J8mDKaT$M|+OWM;p z@iP}YN8IQ6nrwJ4JRQ%hbrn`gFMjdjR3|tcc_(SJ`EDtEC*~jb zVjlfJ{`a_lP7y7QxYWnhxmw6=poTr`CM)<+-AuD_+uv6^A?)7}w1zKloy1rN4%Pb{ z{bp69)Gup!4-2>X96PLrbO$BCX*M=)^I1Bjv=fhQd)_)bSv7RYcyHS*N9<^Cl^aII z!tJ~1Y(2T%=ZGE8UGhcw2#2=&EU~wBRXBf#U!haFvB77FZ7=$EG%TPi?_I(38y8sB dN--TI+3@AYSr%=bF+7AP8=q%)@NQ$?{{XVRWL^LO