From 2a2c18e959d293ce2367947e6027121683d281b8 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sat, 29 Apr 2017 10:32:30 -0700 Subject: [PATCH] add more tinyaudio preparation, some test wav files, play sound on collision events. Will expose this in the C-API to pick wav files and collision threshold levels etc. Use the premake --audio flag to try it out. The TinyAudio example in the ExampleBrowser works on Mac, Linux and Windows, you can play notes by pressing keys. --- build_visual_studio_vr_pybullet_double.bat | 2 +- data/wav/cardboardbox0.wav | Bin 0 -> 36836 bytes data/wav/cardboardbox1.wav | Bin 0 -> 41876 bytes data/wav/cardboardbox2.wav | Bin 0 -> 38852 bytes .../RobotSimulator/RobotSimulatorMain.cpp | 18 ++- examples/RobotSimulator/premake4.lua | 29 +++++ .../PhysicsServerCommandProcessor.cpp | 120 ++++++++++++++++++ .../PhysicsServerCommandProcessor.h | 1 + examples/SharedMemory/premake4.lua | 31 ++++- examples/TinyAudio/b3ADSR.cpp | 4 + 10 files changed, 196 insertions(+), 9 deletions(-) create mode 100644 data/wav/cardboardbox0.wav create mode 100644 data/wav/cardboardbox1.wav create mode 100644 data/wav/cardboardbox2.wav diff --git a/build_visual_studio_vr_pybullet_double.bat b/build_visual_studio_vr_pybullet_double.bat index 3fadb9253..db2765f42 100644 --- a/build_visual_studio_vr_pybullet_double.bat +++ b/build_visual_studio_vr_pybullet_double.bat @@ -17,6 +17,6 @@ del tmp1234.txt cd build3 -premake4 --double --midi --enable_openvr --enable_pybullet --python_include_dir="%myvar%/include" --python_lib_dir="%myvar%/libs" --targetdir="../bin" vs2010 +premake4 --audio --double --midi --enable_openvr --enable_pybullet --python_include_dir="%myvar%/include" --python_lib_dir="%myvar%/libs" --targetdir="../bin" vs2010 start vs2010 diff --git a/data/wav/cardboardbox0.wav b/data/wav/cardboardbox0.wav new file mode 100644 index 0000000000000000000000000000000000000000..fe63ce886de75ce80b1847547e76dc169234d112 GIT binary patch literal 36836 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 SWh{L3pl84 z#rx3W4!^_q_eVb2-Db1N%$;-3IrpY*nlx-UcOy~9IvpDH8#>bAPekd+hwASj^55f2 z>B&L;diEZf9-mu5MBxqUH2ZUm54MWW({+kJd0c;lH+_1J?D=H_KI}T(LyjV7F6+l+#yY9ehMbG?e>?jwhI%-c)cxOJ7g#@^%!nJ#kCaS$hMyJ^=5 zQI5J{%HFtE1)70YL~x+x2r6r(UJkZWu9vh@TUW6B+l5#$>3UhN7K5!|dzdBG_qHN$ zG_e|AZD6IfDPxiKOC>Zsql}ahN=#lLjiXt(acCB&fN4BAU=bHLcW`6HR&Eqr$&>4? z=k7a6JS}fL_n#ZXMM_g{jLgBkw~KOd;1r`Y?xAegoRoY|qoYSP5f;KI`)Fp@u$bMq zGPj*sxpCnvv#0K1;%it($f`1^;P!e zdCI+fx^j8)D5F&kMPc<6Il`4FI#9W?cUO+wm6U5x6XlNSr0kCClx^%&F>|GIzrCa) ztyC4%wTR_-TG9#)sbED9sbZyh>skrJ+FL0ryIP^ydst~1M_AFF=33EpqOFn5r&!7B zCtB(I%(7h5##z*@fkhEDt;iGH^83cE=t-rl$Q9YGgsx=8T=A%2=LY5N9jjulCMoyV zow&Y@%0F(e3eLG%B~-AK@p6Uo&K{|Z@p%=^G^FG2>^!E!TrSF9;*o7rc|O?o^4O(v^W?gcd(ZiD za*gxYdG0gU?l_(>DyN=Icer;-Pi_<)%Uw@*a?0Z6;_G#8d-rnhtV7)U{WwopxQj=g zTFl+cuW`FiDi3!Z=Z>v0Jh;I!ZXdnRgSwNRFokqi&@G-8@Qx2ClT&v@e&#XPNw>p( z^WeX#=n>sqy5nj~J?K|}p1k-fk4bat-pouN(7lXKRiAU(zMR`%dT{U7$=v@&u{8R${&;mP-w@BCiax9NUIjj_?0iDVc^@vEwFK#-8q0Vpy={U%!&tt8%T?#0Ns|cwCp`I8WrcRpHV!vQ3gHuc!-`VLiNaiHhOYIr2cYflpgwSzTUOW zGX2Zw0~iyfJBB3cu`dqjt7j+Z(?`VVu`8DA6K>7b?Y4{bQe%aFT9449XKT9al%e~b zWx8FdtezZORFD5vQg_Gw=3=3T8w=0yGKPxcvLMz+7)F4i>->~w^&PD2dtDTyR0BO`>l#U4_c82_gFuC5-d^apv9){w03k@X8G-yXXSaf&gad%CU5_68-~}cXLiLx`ed z>oxJwW{%aRxnrF#cU2=!;i*h)SitNTQOtN6$f?(MX8fI1x$<>V;&xqSS7@Y+QWqqx zY^2$aeavpTkhydEaN|Qu#C9_-PW0tQ7Q_TQz=PK+?l@_4cdv8YX#ItU-cF}Si!8dR z_nO;%fAhqrh4hrYRdnI1p{J~_q{r{ep}RLdW!_EdeG1^dict`dgzI=y6aI} zJ@`j2eN63eJu-7s%*Q}|NrpLk^%~3c^bxCdZ|ik>sr_+!vS*hb-+r5Z%{-w0$<6*{ zkLjy}Y~AZh&{Jz}(C_-h>Mz6R>e26oPHP6}(TAJqLGwcNFY%>ySB4yVTA6n|A=e>p z^qj#R4GVMf9%kavVMY^fXw;y)6bA=L8sAXb>lR8obc?iCo|o<|$UA?nP{IH0Q;xN! z3SS^qru?@qlm@*YDI_|I{+vT-__GGtGx8=1` zZx^=wdl$3p*X1q$z>1bD$zjE;D{Q%o7qU`|23Vn`vRdxN*)7ATv_&G+@+(@+3awPu zawp+FtNc=tAHShAcVdhoK2did5Rx?^6rZVzv&$0k+KL%%rmSTm3Af9n@d=lV{93-H*F3l;Exs`MG0AH6Ct8gV&AVj%A_T`!+YXv*$s+ zBW|Q@V8Zfew7IZJU%E)zdRZEWmr0r+r1+H}y_>RvPi~YH+)C29=~C3GD(QMx;8trX zwwIMObG;O&4oLbZ)}#}UH5!L=oqD8+Phrfix|oTFOBr2m&BW=aTLdAGMSO>7^5n^nK;l&8e9I8M&{beyJ)sb(~^{bt&_?q zb6$y;AC=>iua#CVO?mTvP~mwpSi#wHT0txFSoXslR^-c{nCsUn{P%w<;n#f?-tms| zpPQm06HhB~80YzYK#6u|l~M4ra& lIK2A!CmevfBTUV8Ez|jc|>`4?@|e0mnl0> zPvzZONg2mJNZKDK=|?urzK841x`T-qam+Sya+=eH+e~nGlX=|rV=K2WZ{^e&ydrlZ z_o`Psa?xw<{`H6lUw_HdzP{u3!AIPC^*)bGdCdLaCUJT*m>co6xWg)kbA)h_D}+;n zTa12pVl*a`M+DE7V$*ynPUn$ytdAIg^IX*N{A~H<5_t#gh9Bq~H`Lz_;gQOVWLfR)5Njve86h489-WOCx-b>QxJwsB( zRVF>E#Oyc4d1Q9MMUjEryOeW>Cm+Xg+_kwWr+U%cZn~U1b|H6H+Q99gP2Apggj1>O z+*o;x$1Df--M`GKGYxO|FAzWhp!sgS{n;pwczFJ##>(p!Ga*D{`eQsD#MtAv4G z%=KXtg`mlfpV#s@~e z3m8#xCRPk#_LOVPSec)@s`zu`%|}Li|7FI(ZOpDVpNXuk80F}t(Uc^Uj!%{p@K$;c zXv*l@Pr26rqwKgT$}TWo*<;%&R3!jvi9MGjPAH4=UHyIOLm^xbIlyt+Plagf3CR&1NWvPh(}|4pOd` z#g*~uhZIlRNXj` z5B~j@C$Im=>10;j;m)IuCkj z>%qr<^3&JT>8HE<>He#KaQgO>``7rwU6WFH+T5eusC2oCt)Z6?0;V|3+#M*a?sVvlMxY?Vf*N&l%O&$LPg6W{<}_HXO$6m5Z6Z zV{t2b`MJ1^H_>!FQsEgcIE0=M;T3ftK_URm8<$HWf$3?+_N_*d*wzIvt^$O9)C-P zk9)7ajPAw`;;WRjyr&&jLe}DzZ4|M@ z=mJ*6_MDb?_-|!APE+LjL3tV0)8;qI&V5&T@10Y28(`<#80CI8SB1Y=qQroOO7xnp z?CF0iV@y*et`|~vrDRFfXG!uwKB?MGiWYSxeQ7Mo?<@4zuq3+OgVFlpj85B53a#uU zcT^Zv*`v|RSx(yi&ZOjml0M`x>EmWiESt!TV~?5r`3#kl)qFYeAefV)%r za8Ys^x96|p!R0pd^fc0GLy8A@|{Yx;uGp4xi zSesvO+&Z7$cw;_2epfa|n}4HI#cU@<7H;%Gfng#b`0gt`(=~T#|B^ zyr_~7BImiUt7LUTiCmV7Szsz7%2M?2ZRP&>Q^ow9-lElHdE5I~;ry4Pd0!PG*$V#X zV?}B|mH)0!$`ScSrOmmg#NHH@Ha!J?#Z?tn6uoKx=D!^%-(w@P-dRx!I5sPG{%%0FzTqTs=b7DXt>l7`SojgpZ z{`oek< z9UP`avtr7T>Z`onalf zckSWf!!2ms(_9oh&y)LJ;{N~KF%NF^fBc! z=!vh>>GaN5|B}x~x2wG4#Jt>Hxa{10IR`fu5f>BAGI3}oa#;%|c9do0ur*p%M5Fby;jJyzsPt5gLccgE#;K9q z<)NKMFapn{vEpq1-palq0N`GS)Rv zcEbo|lx(NGRtsem=%n0-yDD$5j>^8#SlL~xDJol1ISQ0e?ggckBMRHBvdX*9q3pxo zCH=QaQbcD-fA2IYwXTQ6RFe+)NGesxq_&nu`&u)5#SCWO-o}gv$;>VSf5iO8>?QY@ zJ5ze@u3nLg5pB3}WDs}l9?!*|Xzu@V4R>eR$b+XX;jT=xcub9j@OY7%%dF$!F>dZy zyNO5AUM?nicyfdN+?BMA)24V%Ve5I!m<8N849-_)BzGL_&Ao3LaN~0o?tN5_8(RXo z?eE83Q=l8F-D38TgUrr41zepokvSWq<4c^B?Sv@;i%H6@N%5eh6j9I!04$!N}(yM%|Y(YJQy2 zlsn8$JjKM;t<3nmic!nGO!R%gL^0?UX8?BvW#HodS7wV(%pD8w<#lH6Dw>Xa-(l-f zl)L|h_j{ai@0|*q))eDLtxDXxvMzT-b8fV+1pmG=7g@`5ZwPp6R90?p&BPsdvvK!_ zJm9(koVFF^u0930Soe-m)$`2mc@6yOITKgDF~f_`uHJ=@3}3H?hlx9jnbCd$GlHPW zedaMrZ3!S^;Q^ ztcd4y&|^ioYmmn2mjTbH3Kxe8ao6Ag++$AePM3k(Bi}Ik`ijxpr#RPfCSGo0bP~U@ zX&!!W1~UduW0dqaa%vMse`iBYA%xM5u1rh}VzjFu6BQdW`mYS5^m{dWcu1pqNg8!+ zrqPLo8Wl^^DEn)T<~-8q>uHV3F44$QTcfqU*gx@5%n6eUcQR?oSW`^M2p_PK6q))< zDpVi(I}@};E=gGpX;+Pvbn-mbk}vo?xcAN)%Ge4WvaF4AbOL5w>ZK?{Pi55VsYJ?9 zCDsg6#^EkXR4|n5xf8jziK3qk6gAKl-8Yn@QWIs|Z>GF=8zHATm8)lna%{%2+dINz z0){@qxjO&R6g`z=bQk5lh`d{@hjJ9`t!Q{(VPaTj_`T`5Fh4NI?)2Q-2C)=ejN4;NaIX%pw@WE#>o9Qs_S~)Y;I1M= zx$D6s)EQ<$Tg>LkE2nbf?I`X}8^9fd+H+xqa}m-UJ}_dTXLT;zwYiIhbNiveU3C#7 zKXLxy1-Nl0kUJ_mxO+f;ZZ!DC>>M}XSK^v>EMcO_2qun3GkYN7a9;%CHWxe#%=`L_ z8aY2`RO^67Q*&r!EKa1s%QexVJ`-;cM<1{bUE>(pe=!=2eV1_5tm=R#3}y5%2Ja^@ z(h=vkD=;xA6Ldo!Mtd4E`<-B70^3$t+DT~g)65uqj2Q_Bn0*dw z`r{J#5YR4r7Bjlmfr-u2m{Bi@*|kh2)~{va-83frp-WmRX2^p~=;N3O@6JS@A&e$9 zWArQsqqDev-!9NZF&=v0Cq+yTX-?fb$nc zeXO3MkUq-QqOYP2{h>?7D(|4l%GfhmMb4O}A`3*RgjZ3@og+$l8;(?7F-S#Dorb(P z2OKX-1s9)*oH|RnyG&7D&q&l8M=QtukxJ|squgzTG8#pKj}25t4&>Z-PUS$3u$u)c z*WC~MVmU3HvBdzdX`CH;2xdQN$Pgdq;^Y9x>whv zmDNm&S?Zy7*);lbM-yXnGO?&I6Mu5p&iY`qPIy%{813%NL{Y5&IK=9*O^9i1dv|Gc zb&n>DjEp)v7%fH|G|i7=k^92(BA#8)c5|5+x{w*45H|yWWfd_8Z+4;9VKQ4;82@-C zuK&ZRXgCvF>H^mqFwvk9-e-bVe1>)MLlYm;G1~H3BkxnZF2zLo+D!BZ|C&3DiTHYq z{wd8Ux&os-^_Yligxrg3oRN=Fp?0{3&Wv8>WwdIWM(nPWXnqpy=xNfW;*xSeV|F=Y z()$^vSYBDur7@Da&zAPmEz;JON|CK5^jJwL?sbs%ka?1REs!D^pVv#2M$3!RzMd-W z=A;}qeUv@mt)w#lNxRJ>)Kni!>X#KtfN#8~jjEgH2E8U-P@Ey`$;0!PdRO&GJ+ zq<+Or`mx?a$H9-vTr|ap0+QDKFex+%=dny0G7cU|Rg+$Zn)EJ%Nq$v4N14~cY#KbnBN+n2lEwC6_d7F@{M+*=5|ZC?@Y z{hEWj19Ng$t$f@bpPn1@?x7ZOg;AXo%-EN}jJB(poe$SL5xH)7N#yD;8Z||oq6_9h zU!ajy6S?h>hbC+?>H0%cT=SP=Od%;2_)6+}&lH0Lq=>F7#mw@O=Dx>#y)(t){HSqc zk~DGv<|eB~e-F`U$PDO&7fF=O^w5&>CLNw{(%^?C)xU32;55wHc2g8Agq+t~()Xp( z*yWM52vBQ*LMt`qJJFD+vBhB$al zNzBN9mKlq$!k0o0dy9E4ahch7yo`3dW+FO`85KUkpM1;g?2nmI6ddTzZ)Uvs$i!W6 zw61&LIqqUq7Fsqx&ii^c_}K*1OOU6lRASVvGNWt-;WvEJ==l+i63=V2Cj+B$nURMs zXcYBD6Wetro{eHgfo0%oZsa;#Yu}zs3?9kshcg-V14ce}GvlRVqDvAJ>Gm`G(;4u& zd(3Y8in;#=FAdGh9o0&6?}8BM=NjDJ11?&t5vK|bx!tlNcfT&e9YG~HRV>bpJcYS8 zTRv`l&BQ7GCUAHIqxnmjaR+&{O=Dnk4MwGkAa5g{-Pgm&SrPMC8@XY*DN+Nl&Kb03 zuoUZqr4cY2d?r!a6OTwbdrXS-_oZFkM>$I8R^AFF;E7a0U7?n8WvZ$~xnLz0K}XuU zvP*|5`%I{!(8kK{-wFD(z4CUbt-RTxH_w(<-oJ~%Z-9Rc&0!QK<=W?q{YNPVrbr{= ztQ0r)K;td}=Zld>E?mQwHj>V#lk|H5e69{A8GTI>UBc*VnkG`aLU&CAx0u7|Cvwb$ zd5k_FpA^W!=#wv_VDN|z4}o>7G-`-*hQ+RDU8O*%b3UEHE2P?mUfOe!08le?>#QPleg!o0d`Sytqvv3X6oq<7s?!4bxRn%r z@f%h1Bmd#P+Jyqw%VR7vNl_O2EO{iQ9z+~YG%3EVNwM{iH?e-2Bfo}@byDGu8a;}E zzIg-v^8VNi-IUDOEuM|5vNn;Vlt;%L;ul7jeC&oE$KkA;Rq`2}x z+CCqpqZhbwsp85JQdYUPl~=As!OEUc1wBK^H*1QbE|*Ig(clvP>6G#DskBqBOS>Gt zJNOxV@3YdlyaqnUZ1l{`m3Gu>X*XPlb1#v`sX3CGbw(_FGwHV*b=pBDo&L*1eWa7_ zzH*X?z#J?^u2|+I`;e3BmeXiJca3fYXymG<(T8~&O>YK1c`uAAS1_sc9K`-ClhS6I zw0tgNb{YEP@V>-OlN|R=5tU8S&Z_Y1;H3nwm3H!WX}II0JsGjHY!c#TIQk8-t}^t; z^^KBtu~|~|$2ERN?#vz~p_kxig-NRa#H8`yZj)A-bp9rI*i7gk8!(3L+(o7m^(%^ zJcH&uIX*+K8>q*}0wi2^#7Gyot?Btenoo$L5Sw3HYEznYdgE zIyN^r)KbJtGU^lg(5H!e3*MbX!|H4F>?&$Y+ciq7ft)iaj8^9{={Yc>S^;23YbiQo z?Tzmu>E&?n;t8n1j+e%nSa8`LQsf2(tn4kt4B*y=zu}(&$7ZaT;_4PDw(XU6!Q)cI zqfYOWL@QOyAlcMfvNwe-qYW-M>UDqWYydde!WhvHN zl6L;HQq;N)U-qkXH_QOelup^Fe3WrKqjJ^Dsc2Omc%4O+H=wj~G${$s6>&Yhlyd!B zM!5<&l>H&Mve)ER?yvxOtA2`Bld?Nw3(BAz(1_mNIh1Q{26$r`m7`*2%$5bvXLjT6pDyBe;s$uVfRqtYIA6xehC{axFn&38!SW}GzgA}79@DMi=8=rgD% zMU`CeNr2r=5UY(hnv^ZVqyhDu^nHy+{{VO9$7)pduqGC#gEx~M+6=iUvIaAn&180q zEzCG@m_f@h@mC5H^Rd-6ohZkuO|1F zuE|};t8(vu6}VVYi5u6ea=UItZl5T_?Nen@Zz{#T&w*DD1GxC(Aw+$EU+cqZc1G}f zA1+)kq51DHqjxg6$U$b0S_kd66n$~aQ8!r6=qRvh0O|-EJEDG226f+xjLtP)~1}<9@O*%C#SO8;%?w46I54heV8}#X9M17xWB|#%IMfI-cgF4&5~R%hssF zYmFi^qE{2&t^7fwEsr&7iO)KI)~L=ejVip=DETJ1g%1VIb@Htw;z#2*Ad5Wr5Kh;x!z<^ zv^_vMP8Ct!Q-zh-lt(!_=1@i#e72{sa-|hgj=lNNUzSJNrvnsa#oxAPRl=K1IbyTJ zgF;;HLEJ{{g|E9uiu>?;Yn_(%_+)%`Rf=AxrBQdgw1=$*_Ux3#tAoH##83KoX+&Yo zc$Q01W~>zMmZ+^(hF;5u>--J9aRWKIkV!{J;@(o==fr8$f00HTHlt2ESEF_FHPZHi zUmVq_+fI$l85$)xHTpCJeJ%;u6$@Z$5QW_ga{b z2Tt-Y=%H{4j?~6O&968q@d0#I6(+i4qXLZ5>^v4Ve9MJp7~KjGDE87D0}`k9^-4_x~=FMxwow@@zy-nh4FeBZ*>? zJ#^AxQpH*(%`J@Flj0%2^d3qX1^(#cr0_EyYP-Uu2KP*A=7E-KX3~@;CLPHvsc^}nwSDr)t=>+gcN-=Jmq}%Hyr6I=+-Ym(p7`QuG3Vnzai@TxMrnaQ% zg(S_+0*t)|k7AKYo|@p01x%W77yK@_la@5nXvH>-o*)j+e?^TN^Ozm@lLPy$1(~=7 zpQvphqvFMx*o$=?6T(DjV@5wZ!efRu>edqdBRIa-R*eSk)~Gqw>@Lh-`pZuGgcxcw z6l02g>;)$Ujzv7RK(7B23lGA`u{n$a?>fm7iemybs+n7(Q6=!*^Z0veBE=o`&}LuY zWhoC8G&HJ)>nx*ijrfgXz<~zvzy58>MC-1&rbh5Oac!xX&xXJnM`w6lGm!UIG2``G zMo}A>(R~~KzKt0vyP2J2Vcw50d-6GW`!AU{J8DC%zcD(4ZLANs8=+R^^PJI|hw!fPqd%B%X6Ei{nK}9Ra&aLI9>l+lI;JqA_8rs;!24U@gkOAt*%wXpr^PX` z26~qPAHDwoH#wsgxpA%xj6#4@=Qe3{Y>q~cJHm?{2uwQ&&n^Y)^#wfWEcor5@Hu~K zRON<7;mhIWVXbV-3eWanC`Eqv&|J)Cn}YC`zIrISs7XtwB1YFE1`mS&eKVsFgfxRU>Xf2> zO=wDN`>{!^t4E4ETB6R-UXo}dMPwHo-%e6JeAb>xY6uOGYDjUXC-U|{9E;!0 z+zQ$Of4fpa(pu=M4Ol0&`be?6l@y0@51xGBD!%9wT7z-?<)Qe_9)a^LFGSU>ptnm@S#U*Ch-i(5 zu7h_zL8Ao%x_1jS&r^+Z1J5TGVYC!m(=gPEx-qIX3SK?p);$0<1mN!CVW^jmM-S?3 zh>Kp(O2ec*6Muh)*k$dc_=`(=gc#ge z7F@NoBt1w{WyF*dv6rQjq^79X#!Qt)P3W%5!2G({CQXIzMjXy*0?($7r06DClf7|m z6QHT_o8R%bSbTSNXFQ*RIOY-XArb$*q2YWpf~#P??#?agC-VR7FQ$m_k<g8178rs{Sb?}F)y_; zG10X=qpmg4BL?i8R~?>y9r!T~naGRR9m+Cc;BUK}sAIyDnp~IBs2+H(VI(}b$*9dD zzy4ax$g>)Gc0CidmoUmW8L>1H^{8lOB&~-3wvE|q_A-0qUM6~PhPM*K#FNpC<{(}& z)Mr!?@z$y|Bjg*wp;6owz%TPNs{RdFe-?UVyGE-|AWmOvqD59Fju%1R!FBBd-z@83 z;*WP!GEJj++*g~rz{b4DF+@_0 zzko>-rPz#l`!H47qmi@!jgrQIdD8wpAHA!HjZbZ%Uyx6iJ_X()=Z9~CA6yLmcu^YN zjzQ1l6piAFz_VJFNJ~OY;+U73$KltVHfb;BA{lEqYCACciAhD$Ax^OW`v!VRKBI<^ zONvD$fS16ab!C91C4iUMzYoDPBh{g65oe`v-Sdh|`nNE83bIMci*-=~=LoxwbFKoG zYw)(p0Yhqo8v-k`{fC-u5b!IjlOC@GUjeV4T^&B{-^igWfnUhk1rQI*k88rp%xGa1 zMt4I|TdvK-ua4-C=!%+88`O?lqdwn?(YqGVkeK((0~odIfnLv^j7|(^^lBV4?oMGw zf8@C9i_sgsp4pW*!TUlS^q+}&oCh7cj2SnUGULf2X8bb;-xG{3j)h*B2&^27XW^zW z+7}IPa5fWprZcgsAN&SJKYgZ`+i_l5Ro46PB&#H=!?Re+luL>>(-hFqT$*Kz~= zcN=ooV(5pN&w)1m|jwcijoHF;7cvxRUt<; z9EAGyL}^r;F73?VYv-dR-JK-Gp#JcsF!z^m?04kO^3O1D=fS7W;e7G%&jk1^u*>lb zL2K>4CRws=jjRr$!@4g4l{Y#^ObWG&-M?V8%yLxqa)y0`8k_|qNFZ^occ;?5% zYs9nGiixwmz#%ZsWd;LB`!g{H^O1;kQm;D3Cxp=vhI3)7jrI5~kkOY6_?|z;4H%vS zdFRqg)UyB8=*=tevQ%iP3#jXx8rfL;O;^BYLCn6cg*64PoBS+^Lfe?+#M| z0ME=BM%BF@I@sN$>dQ^4l4^=y;46i2%{>}Q@plX4fljFN4VF{^oMUf)Nh{hScVI6u z@BSm<$08=443nZ+KS>$7;n{&9(mo6JAR0aOLejn7Sf4oOwo1qs(D}`L!8KB` zE_VV0z{m1oY{$I7eQ!ymaE|LjPX2*=>E2zVqQDJ#0N0E;%7a*_T$Ir?#Q1is!Nvxo zM^5zW<8=wl{q#^KdX_`qbrIB6v!WLF2-^5CFgyX{g8NVV3trh=^l;$4CsCsxYc!fP zPNR#3H4641E=wg5O$sApR2cc^@z9sg9{enN@ms(X)lthVVN%lqCT%lJ+7N3}&O4^) zkq$jisGAkY0dLF~+88mhC#$5XxW|lXCY^n4QvOdS^}GY#vJZ99`6i`w#rnvBITu(D z(>-*}&!lB};Jt!NwcGEcNj1=Wg6lfD4tS1O98(wbb=64;@Bk+ihaLncDKb@~i1w(d z;=O$lb*8;esu_U!u7~@n0&mKJwcZN%2u`sL_ZoK}wn}@% zCiFPP<65>!Is$(tEBu-#2c+$=pnZ-YFJr%7LZ92xZhICz2^XNvPeNN*(rB<7&l|0f z#;@tnIYZ$wA(rMsn=e3o%`O7nkF_-naWg*&oOcn{31T#99{h&W9ty-b$Mrz&*sqE2 z=^6P2p;pic^D`KEBMQ%AEM|7hI&i1m;7T6U3@t_@6!MG3jDX|JIEU^2QS^qLh9`HP z+4dDY?|PkyZI{8FpnbocVIuAV{F{q-UgZREWT!9Do4*q6FMh`OluhuG_ z1>*Ur0!$pi`|IFypVpz?yaxR#Gr&tD@g1!FZ!YMpk{WfctkHX{?>oT9+UGQSbr*e0 zkD&V>;Cr_<>V>@e(FZv%7j%6#CORVrekJgP&p5|pjaK3Jb^ONIBRJPyT+2Ti4a$Q0 z^b;qg&34k5R?xY?z%fre^f(i6udYe^tC|#t{3DkB$w?ma?T9ry8f$m~dI&6&rUBO{ z0V}>@{Z~NkwO0f@>QU0RXGz10+JEX=X)joh-rqIww^yR>hW$RobE~cJWDqyS*Gaqg zQgHXh|MSO18`MqfU_I#3z|~PwBq9G?D=Wo`Z0IHUW>S{Bz~mF)kRFpVY{E56H>rE5 zN$zI2cFRe!BXm`QMwvc=%jE%|F2(4xhIwkwXu=@ydaUEi(-;k#1zcH(p6Er4I$>`u zV}h+>c0q9Sv1^!^wgx@}yplP~@Z8S=W(0z>WmcePcTksSoYW08OvN)p)1<|)v2wqW9{O<$ow}bD@`mNE@7w{YJV;+v8?!Hl@ zbo0os`pX0MM zY)6py@*YNBxCnm;=WcpUqn%%n8!#UE5G$jAvH5<2`yk%lAwDi5R(cj;vFvar0C#~^spAV5x9`nP*OP^UR_<}m8PiSB8RN+1b#GBis56SJD@Xe0B2r6TXe*B zdl5Lp8q`BKN@M7uY4bs7O%unOz)E1`ltkc9f;0*uo*KHr%Qi~;>=Ha%HXX-~ z!T-|$9s*zK`Z(xC{N^DJ@3;$kp*o|+RS}xA3~CgW;6no&?*jX>{4^=+J(C8Whc?*< z4H=Ifm^Hx1RVFoBVbXum;I`es4ZsW96@*KJ8>Vs47IO(B09uL|3JaqS< zhpHEXj%kJX>|hcb0uA2-8U(Q#CZyPqz88>q|uj&8dW-u=gZz|BFKkP zUd(aE0Mt)_F$_3lfh(ufXW~a=#CtP%Gkuxy7`g4(a%L1>%V>}rwT>Oo7m29%Cc(ov z0R7=%#@QplyW`Np$Iw%B9DN{o{htL)Jj9I2`=MSW=!10?7MOByO&_i0S|xl zg?4R%ItSK5j$h!{h~MNO#4Wh4ZJ-8`5BM?wxV{5p{mB%0vSMz0CH;kU-ijo}WdZjD z7fH^I{r>fk9t2Q3z`x5PG2#w8I08mkaCSa(;{-)^NAN zzyiF^o10O2U`hwPE}sLQ`8#N=^H{@JlkY0R)1BiaYK8s`_)lj8aV@jaPjnc$%WH}o zKJelYXD_QsDuAsLG{mqvz_iv<|F4-S@!SX>Q^7dxRl)`gM876#CGgLrM2)V0(8PGe%$XWS)*E=~Vj>q_xA_}78ToJX0O+lD(9bR4nP59q2bveLSFSSZ z^QD-`mZef$*#N9L>?F$%*p^G92^oNmpHa)d z5B>APNz-w?alpIiweX7%LIYtQqRwfw^$7AHUQc}nPv?O~^Ui4W7HguU3CxYhyko8& zOa~_(`~Uf`@HmY!;J0621ulL;uiRI}=QmBv@M9!^*9Xfmk-jveEG3ZBF&_UQK4u`d z-o>?#eW6i){7wM2PWa8m>of`(2>+uPeE&<(XOmGU{~b!zPk3k)*7Fgp?V5=7hS+8z zcP892sr?;b%LV)m@2x8)U43tgeu(wP-_cwC)1-^Jq$pPcSXBkuGgOK&O;Yw6cuu$` zawEf90Jd&HeC!`AsnY~-NAO7t{IcPEX=vDYKwMNEh4|%}R)GAM~`WgCB+KHn1Mu&63FfQy7h@g=(m7V>4H zMw3tA8sBJQ0p>OlIeIPTf4(ogzbx>2^E0BN$lb{0=oJv@axn1}`O=$>Q6I!{o1dCU zN)Oxw)=n!U{7FGGLg{L^v%=KFv>z?@ujpzW~EDmTUZ^2o`xYq`zO@oiQ6Zdu*7>Bj{$M?;bPm0nx@hlErZ$(^e%a6V<2QU--sCs2dA=TlT zA~w#JlcH^Y;0JIr0N*|F*rcbJ+jN^v)J6ZlU-SG#%xz0}=xt1TI2JkV9~{#Gu^EnD zsLt4skLFhdHs?0!1F&pR5H^f|SHyzY1uj?_82bP|Vr^*HsUGy8co6U4U`nc-_6Pom(}$a#LiMqhA-v*>-n`-FCwqc~{sVWAW}F9~%U=;TvL z6uuydN@4!07ewByiEGUZ414RLMFHqFMNDMG7SaU!sqh}7ai7zHx44&=WAOQ8)NzI& z?+!C*F=C^~Hh7Fj(La3+I`p(jljBU9F$cOd2KTraej&~=bp*y_J;r}z`r&juRH{= z%Ls1|v6nkPa1`;l3OOpEBooP1(0>&QeB$V1sg3syQR72yUyHn37_ax#W~9MC*;5ug zpgd}n!1984pMdYZ#_KPkct!#GDMJ%**ZT0G>);rJiTwuf8Ru(J3-wNX_aNfBd|u=| z#JwAM*KarCxG!S+J!&dg`zg`zty&?5Z-$ZmB9s!~F^6ItB;sNXNTRF_l zpE&vt^NzY&`kNSsUl^zSCN09+eo1(q1~C?m?+h3Q&#OujCFca+Tn0a65V%ei_%uZ@ zM}L{L6|uZ?DLlss;GKxqvt3a?0f!oZx&3aNRPrYLm#ZfI^nhnzdvFEy6s)HTdvW|a zXmk@?>j~!gE$06Q=3ilb9K!jMObS4*e0CRJ-AC}+ufWFNh<|L)zXN0NSsi?5L@GQ^ zd@uYwG|(~3?G|i^ht1=`5i#cp-w^}7F}L-T$aMyMS)iVH!b!(7g5w*&yBXkWD^UlF z(WuZ=%=0AR-!hGAc#sdzL&qee&UqbvWr{{K@1iDs6LqsI8a2b`ZEm0^*{jhn%*Au$ z>cz-M`UhaiV_@rj`BzP@Oip;Nx22 zNUW2#CiSX;&+Fm;PfW*n#bIs|Op3+$e8E}@!5Ymz4?1p>NxFnzb`fjix=E)n7hf>0 zV==DxA7LD^pZDs2^&R@?hn_}o!48F_s12WLcLDIi;=sdFlGYSLpJQS09^^7_5d08e zVxfYlhXOC_=0%6|`!Nff7dILPb?_7EcjCg>1JC5tyj5^Y4 z)F!a;^(Gy|eP6=0mRO8?7=`=BeT7s;O{qD&bKJ`s+~ZM<$)7ntiu+D02K|5-&4%p? z;@OS0Zf6BH9!er_3VdDoy}^&d@XRcF0KTHvr-()c8$qLw)+oe{`i=!oc?z2U9Qw~L zVg9bc1H6UpUwDA`FqhbeAs#wCKwk*B>s#ciF!0e4$Un;qqwfgod_XlOc88!Ai?v?6 z8u~+k50{&w2cQ`^E^whbUXN(YXnR-qXg$yq?!w<9@GMbt)H54^+v50iI=t0}OpL|x zGofjFmPB1D9izvHp(9xT7UJkIuJ_-0;9+CnMMOb=EI`l72#r>^fR8yG9^^vAFJiC% zG4KEd&b1E1slpXGEOJ;>OH{sEXaO@=PKFE(e8wpD*>btgbDfHz_ z`Z5=bu3Z)l7gyre>u{B=FiRgcctgK#f=w%;;r1oQ`N+VdbM^B~$EVA8Ap>P*c zVcU!2qT#=uSB@++pJc9U2e#vSzEgf$-vC$B2zppG5R!TFEW=MgqA@78dD zZOo)Yjb>+uLlba@aoORd-vdA3Zn z-)ZsBHhgev$oQ~9m~)vnznaZkyiNY1vXS4ck?end_WUOLJ`JY2=j%P$p#VH>R}r6L z-@5Kp2mGMKr|jYxV*<`kecX1l{=tXR9<~+oj5F!~=7p^)5((#Sv^CQ<4dhwnkA$f& z%X#=r&QLk=b8>QKD=fF25~msWr|~wjGVdn-t*v?$a|p_^7i6YQ-e@>=68iDc-uCjndD}cNkCEjVHfHe?N$ZAK9KG-}0SK@)M6~v!i^)ALZfv zYH!ZlH~4UyBI0dVi>a0|77CB9y+M9Yb+O3$=DgQ4|MtdM{Ef=;g!nbM)sOO4`elbRc;}A7ct#cWy)ye<70<3tKj6o?p2m8n zi0!O^-LJ9x8`%AMiLicTBGez92p^4?`#+qnK8Qh5cTA4a z>+o-BA|&T1!%Q}6HkzV z(w~esZ1_j~XnM#QVoYvJgD{Rxb>ORoSbb~!(1R!)E`Sr>rtjv^mrah1r#sL2Jp;$2 zbIs&*b7}F`MqV(+lDQ^P}ON zm-(e@_@nE|_ZGHxGi>$$;zBWXxOVqM`*G2b>iUUrZP?OiczhKf*7fsVaj*Ml`QLAy zYga}?tHrpTYkstUsYE|biV?WkMLfW_5eebr=IWs$~BEx6z#eKT7V*|*+@I+`m2?v{PTPr^CpLO^9yNsjI&)AXWTK{3rwVB%u9*#ft` z3ii>B1yl9uYW+xGj_a>gb+W_Wxc=Oh9ok(h?(qnj?~w=x$lH@6`J!X##YBD^-CXEh z!*&~+|CY|2Am6s%zvAb;g-fope}#;1yc8Qa@d3Z^Ykc7-yL%W{dk5Ed{@t16cAEd{ zczzyRy%KNRXWZ62p^9|xg8Gg=s6Oi6^j+N6zNM|JcRacQAAFhayLYH^b?lEPw}A(h z`2)Z3Svte;(e=ZeYHUq{-A-ZiZpV*WMaAaG$p~?yX<`oZ$kQ^ivJ~f^iPw#UU)^zZ zeb%}oJ30ieO=c4pu*r+a+l$dKXcAjB5l5UZ)eE-YGwsg?q0rs@822|?X?%JPU41wrPaW^5&MrN|wmO&Ucv>sxdeY-e*xQLM zEJY`O&kFm#-WD>7!G^PPp6T_02Jm8l{~g5^o>s6!J7jKi-@WN!-~Sqfs_LFKSJSuCGcr(swuLr&4gGi2kEz$4k)jig*s)Yth)gDgW$#_NxOu@5d&Oz>W0R=5f(* zqkhgE26FWHj5v+&@haC|-6 zw?Uk3nRDd3?KFAZlljK>ACdX@w&7QFAU6kg&1U;8d~3QkjNWZp>wd?+%Swb_J?F9o z)&znHPsHi$Q}o$8bMtD>w}LabvM1Mw+3&`Adg{*}`jc%gln3W&(I9l~u5aM>oR9Gx z{PfU%ZNJ63G{gOGin~@MUlZAlyjkJYTpX(sOc94Vw3U3YK`FK6BXxowlj!ww++3Y* zQLX{Dv&#Fi?ayp_yPa>VE_L5dgzLXC-t#>U@CiS|xo20yfR+3TcyYD1`9XUenj#-l zox0e1je-wPdsbWawlmu}LQai#{6yPT_Rhw0w72#R?ciy7cJwsPw-n|zhJn@8xeR%$ zLEl!UhwxN`(BjHSSQ{7HR^Ja&*@QMYGd-WEf7@=6H?=w%cEEu}3;0ei%T?WAOwjh| za>rpn4SnC|p=fBFPUq8bJNp7P_-2*JAcNY^=QOC5p_{mLT zDDG`n2tV1xLYtH+hYh$Jlfn7aZ>sc*Jz?p54uy`1qs;#}& zvIP_QGIRAiJ&GxFjfUFcA^z0>xk8imG zTV3PW`Koleaw6Pa(>0CR;U0;w$a{xRON4|n)tg7Y=JKsy#)ns0YhrOCtW?J2OuYJe zx~>dKeYbcJ`F=rsa1l9u6|aAbtke1H56dgKAP!~xrP1H&^sAV`kM#Z+OgN}7-w{uS zcjwl6&r)%q*@@6>Y9jok&f|uun|7F>ERW6*HzFIypVII5>-Q$=33r!Pa6c@rdJ9?K zmlY1_=T!Q)_ieJOA9DM+?H%;=zx=eG`g8>S9}DMa7@Jy+7w(|%@AA=h@z4EkXS2(&zt;lTgAQ6(Bvccd?D}cJG|nE>yAc4@<+KN$H+H<|7A2h z=HBzG$O>#3IFEe5opRnk=V4r;4xjNq#<}u3{wDt1g`70PZEl9omyw&>;qpjviYf49 zpkvM-uFcUr{`Q-13oxqvgdF8XN5<{v( z2X1EzZYA6L^zW95aO80qNw(&av5e(>!wt6e#-_;NYb(gyCfB}4N4|#}YeH{0JSKI^)R&Zo6#$n&b0x?FLYlg7+#mJTo9h$j~||C5Yn6Cj(4#8WULw4 zDzpJ-eIEyaiJh+^zjbihJIJs8eDXm&t0TMDCmL2fD=yw&eDQhxJ|-GIn-L9_=ZX`| z7B3~&B^QZ3EulY)>BLK9#XyXFlsrm134`5YgCBkZ{)bja_X0^(Htv`KGv zoE~OAM2^{uQ%SMF!}RMYz4}y+=v#8-);hiludv@dBi9yc*N!-pcXrJO_xa!PThoo> zvgzz#G5qPp<>FPN*4tW8Gzef3P~U2gye%@^)i4HuiqDS2@ZR<6GlaFO!A6uZXQq!m&nahiQC=Ir!?sJyIJ26bYi9)(dgJ;${tufl&kYl7dM&xo_^qN_RNVJ4sLKKgnM8EJ;Im+||kdK}sk z_Te(ALyh0QgU|5wrf%N$Z|?Kn1U`4nGm65jo5j{r`RNypd6#6L@uKSLm3{|~*BoXv z6AQOLs7wc8&{r=cLbX}umCk{av+=I^i4dI$d!BY5JT7yO`i~G(A0;;+u6>5_FYbkX z>e{F-{JV>dhuJ%u;_!Z-yFC%gwPusyXNoOza3U-oj{CX)*%|Eh3K+hT?YA9z%^2b~ z*t{OMPx$>MO#A`1{l>RBDW>)XUi7hbNA`;+>_~*NIeaMl&f8(@F3ed5|(@4#$jx_pCp zOt#ocW+HsLL?7GFTZ`YkYtVf zCAHCrvh36aefbqE*o4<-Wrr4f#AM*t5qvP?TRCf|jrX&QLH~DN4I8qZTjc+(xO-E4 zwhvyr*PMksWUM?}R1>cwgC#2Ac6E%I>Gu<HPdVGP=5qcicdB)F~&bO}wY~NzY)H z4w8eDu9-xJlRtR(685Hv`sKsLGRP?(EVVuEdz|l?hQC}3li};RHL!daJ^mIx<1?A# z{a%MNz_+aD==p+3=)DEz{=zQ7r@BAU^WWv>=Y=JI!9!U0?zPd-p&qP?z=`|#`%jA( zOc1Xb%^vlHUw!%fb8)PN(NF|NHGB;x-wg-9wEq>4xfl%}or;E(lhJVSEKEFaEcXm7 z`wm`y91S17ZC!vJ_}x~%-do~IIqccCXxO>lee=Zz7evEg`}5v0(mN+TZEd=bhJ@ z^gnCs&vAzj`E2^{a{ci9nrOIXqcQ$Y(u{C|46_Mb@x^vlj=+Gvq{ z?|JT7qTOui+N+qYvwj>br}HjtwD}`4;vE&VQHF7qoyL5Z8+Yk!j3nFm${u4Wx8{$9 zGJk7Z$5KnjLaD;BP@1e1I*k8o>os4=H_#9HUy@6(N^HQpX3VnoseQ45cybNArldNQ zVB=EwliSF&aqE4Rae&+D4qY8q6jsyaQjdwbPQhzoWa3Rc7)D+W*LH}Zrkuu=Pr|I< z_`UMlI)-F;{U03joO{l~z+?0kuHE%IjNd5svJ7`ziSODzog+r{6l{kdh3NnBU%mSu zKL2jKsN=9FA@N-7{TNUQE43 z5%Xuo)KmTcWS2axZEV0gJe>`Ce0m~WI}ZOI&d&6PlYSQ>)97e+W0wv+~4()SJ?o};5y?3TQ$`|Nz$!}EynCgAacTD~=gww+3$)c+={4 zxbi8z{@6IcQQXuucWz;4w!_ocoZD#J3Ep&HWKQ!M>*>73SNXy-k4EF;3(9Adqv#P}^!^0R+`N9d7v-fL?b4egrn&z^->-MnX* zeBcp$!Y41q!q3j+OH7Z3UiKf(QTG?v9@}PR>orMU!en#*$FaZ8B^Qdjys91>@OX7- zu$ryZj!QT54fI17#}2O$H_$I7yeHB(8qT$6qgy(bE(VcDY=!;H^>30n%Kwl0G$SW3 zi0LhWpG%BWyi8`|@KO!MBL_?X{e3WL1q zjVnE1-`v>6!~Cue>Uo#*b&VI^P5!PkuHnAC1=#MWdOgJkJm|P{^V0OGcK=wrpK$%o zR6ON8fAccWs1glRN<05QoFVu9%fxvWz+5<6Vl^Ep77100L_)kKooGbY+Fcs&>r;fj z*AUlhFQ#DY)0kej6x)Dnx50|OIAF?Uu%JmYxF#7p=D^IwAv zd&L3Yf~#x9Br+3W$riZic(J9{>KG5hJ8I7su+y_gTyJczHC%a!Z{&T4?&mMra@U;w zS{W|ti@M&qe<1!nm0vVbdryM@-qmtOBJ^BtJ&HGAnRlM~NZe)}<0oV8`ol;ZQVQ2QPSs z-Y4aX<*rY(TpsCdax@BGYyC6%q%W4jv#yXcMz3F&Q`YICxk<-7Z@d0pNd~qUYu=1! zzJj~bg`P{IVaE(Q(_I{eOw55>r&=omS!;0(dD$8X8ILO0Y`k(NPDy|FCFn#4oSr?u zu^^dF)z;<2qO{McHteqc=@r+{BiJgkQ0#H>v3~koUq9GQ+dfA2o8bTYtcSk3F+CCT z7Sl)U)Tj~K=@D%-$Q+C};d%}^%i=?i5&F-OQS#Uv6?8ecN-vJdYIqM|E~q*$+;@iC#*C zX$x?dIs7fM@We{7X#4lK@d>l|xn!m^+5C@vQF0O%itSA&`((J>t76u!>9EWGO?hPQ z9XEyjZp$V%q7QdzAM#jLo9(E~{`#H8CTAMQI8;hq-_8mdON?3m$;Pa8Y$aRwkNV!o zuiA7e29?9MXC8t<>Di(56L`-A^%$8QQgNcJ+Hj*PZa-1XhW_rkf=y{7E;dvg?LINJ zc5+KI;od&E2DTyJ$OHV4J=zfsN8Xoz^G;NKap0x!@nyMzb78~~xLTPFI4l<2*!pC! zr+)*ol*K+SiiB~k;bb>)k9NwWuX4wi!;1Q$LkV%Ni^iZIa$QYjDW(r@hjI7HcT&#O zK5Ry+e31G2?z`;J5r(9H1}DC7o&GD`n;xx&FJC+Vje4f>zYEiGI#xBpmaoqGH};l0 z*T1S~XAYoy&Y$p{V&tK*cG`mjbS_F?tHOv9WGz3vJ|#D{BwQ%&_+jONO)IY9dp?{9 ze z)R|82Nw6iu=*%23^;|r@JsR#C8x2Kgvg-@j(S>yGRWUEy_I3QNjX1wHzhai(EBJf% zTW*VnQSi9yu1JV)$Bp4ci?49y+%{Z8CwJ@bZZHJD&mA|*%{wo2kMg98r__UM_Fs~} zqUttio^f6E=r9rIg>TbVh+mM=*<|@k^7|b5t)`A&v0JSti$8S0_j=>W+F)3mjNhki z@yj;!W<_cDXxkL+a0n+_T!qXwGWM6EP501YGSH$HAGC+<4rN!)+_^z%KSe^{V$pCL zy!n2Jc>j2Q(rmViyzN=f*Lqz$X@?sAA6?D=ox|o&Gsnoe&hyCXGXBk5?ny>NU;lTx zKa9W?hI&R5vRjgDvT2`{V;fVVppt9yEsI z8R<>v)u;yHBw6~nXfzZ%%ND<{Y;(QKJ6o{X>#m@iCE)Z;>d*dv){kHL5{%bADW5v_ zro4j1eD?X;aT~0+J-7T)u0i3o#-YezEoJC8E*kdrVE-%P6>z^z9eQ6Czw^F}pGHE; z*VfP@d;8UKQnvSBjD#Im<6vZcaWBWG>0k05Z$|g?;pBO=Q^RdxAX%t;8M}Xo9xkGz z$HkNn8;4pdPd$3UuxY&zvlH2Dtff3s1o3e-iPCnA;e+Opm)~D*yD0Ka9EX&vKv9|1xtBe>6V0LyiD>KmSQ0 zT=*GBBj3lL;q#4$$GylooJpIb?9C&gW4>q@RF;pf4NCRYw)&~oaI&>V9Qq?%{j+GO zbWB@a@Er|#k~z8jo89ekowZ`p?O%Ps8N>(Xerm{_GVE)w@K)>c{ZDi2k{a ze&oSj3pNPH$FY6z&xfJImdjzCI<4))rp5WPY}8A8_*ifAOLOELS`+>%bB`7lu-5H| zVyoI?TygWywAZuOB;)Dk(dN!2yZSTjyFC%ctbu|3U}Bnn#CH}Kf^GdH;l<y@ zLwReBTdO5Jf4#ZXHLSTKNAwHvmeeP#`_jqW%kI`r5{IcQ)^l2{=kn*Q12;sBW>_q~ zU(BarXX_O{5{ox_Fcy#BEq0_0cgri?UeO#x{N{(Ev5?MR8CB3)n1{&kCh?RP=+iy= zr-r_2h_}*(co!TsAG`Vp%^z}ix;@|VN$-?4`iFk4TdQ-A>jrp8;s+o&g z-g+nHlA(AN>*8E%4&F89JC{$!b4n#c=fc*-B4fYW>i+`s-oDhk<#=hkAD|r=N~@@Yh~k5eX%uuoGrBy%lyoZG%Z$ z;YVBY*I^wSwNuRUB)zyO#(9Dq9_3^Gz`y#KAC}uMj*YV2^DU0x+WG6PZLmu`jeI|x zO;!?c?j3ly8o$VtfBcGTmWi{nbGHnD)sN#LSMo>RhJDHyR&A9tB(I|iS+0arlIh_y z#7laT$ysD`lkXOg?Yx`CGgjk!JK3rIj*<0;?Pq-@{_-;pSin3JnD8}x*)4uEKpz(< zo(!*Dk&IsrUv4!Q<#=W5{8mkdGx|M+JRFZ$bN)7RP}BSX$IFn98IBhylML1WNrcb; z#36n)$7GA=_cvxt7W&U8cgnSS5bn?$t_>DPx{ofV^H;9pn{>uw^mXaDF~;}kPZjm< zDvsKl3{NoM2Oc+H5Dh0+nK!c3?>X8RHb>ylflh3~-TePr;t2GA9eg@M4p!IKXII+} zWXYq$nK$eEjmBWdh)on>i|b{FeYeuv=HmKfGj$jlosCPriDTiAY2C=j3Gq2RC~Jaq z31bAmW{1;7jYpK!uEoiGUieW0$FHvr|AjA)!GoHKkWm4DE$G}o)|JpdLr!Lg1@rOp z&+sptsH$fTS*{FMk-t^&X+5sAl3rvglXo3iYVZ8Tk$C(JKE+{inopJI=WW)L5x@Dv zJ#u|ANANXAvn78ke>Fa4W%eS5d$+)&pQVp*Zqa0VK9vrVjiZkDt*xx5vqPb0z2CTJ z+6lReAE;m1M0i=5zrLCMIq$tww9OD@+LaZm=JJ$Z(*KR8H#;2(WzwQy?Ep5sJezzw z+13vaPUJ7WNRBsX^EZt%lIi>(>7Rpi^b_{nu^C(OOTfGQ#^OwL~+ryX}l(~%Yr15;y z8T#Q-{_!OBoQ=D|x|9dW+wEkn16k}$Kg!{$b@*NF5+U8b*FEZ8+I3aClk?OQXP7qMo@@>s!zWetl(qQjSnV-g?Bq4|eIM`n zf-Gx;^)TV}kHyH3Xt!VST$u6Km+rMC-onvfNs*oEJBv&|;#sZTdmAh-&Bm?4xxPvd zt4iV>#iIYNkJa{W{O3t_&~*psNnRZ1H@dNENiVwTkJ!utHM9t?|6w*`s!^QY_#8X@TxAxmA=Rh5B3%hm@032Ya;#yJMnZ% zGEA%G8#B!>&AZ+m+`)u~x;_yk>wN-xd zA8_w~`fC^e#Q*Z2;xU`~+Rwq6k$AfPuf9ai)~)$rsSc5k1Q`vpz@QSCzFhuQ52rNip%!uDkq%Z_~J@pmTHKa9{JZ z2KZmay?OAw->)QO4uVKKCeD5FV&v*Dbd9AaCERPcB(+3N> zlkHE~@tg4F@%msR9K8~5-J`EPzj!mc-vr(^hjY{6Wu-{S`B|RHpYpzs%j0Ox@4QdG z$VhR$Oz-|G5}KEdhRj##mRNVy>S8)g@r@D?HyY^s5pnbK2be28(waOI ztjRpW8m`u3Y;TP3+{jqQ(($p3w;g|eYAoJhZY<;O`LUd0Q)3w;##x_YS}f=9rLm0M zHKf+fipBTNh~?~`5X(6_%{q`%@$aE{=1_D0_>Rz0E(q-0>f){_Cl|S;P`0G;r_DVGL-Ha#En_L`!xi4RDpfS_&d{p|@r@TIF z5)EJ913zo>lk|P{Sv-?D^7DT8eaR} zdyNea&Exw#`HhVh`8UoNeygpWZZ&5dSAMXuwXE;emL1HkdfNQY$Hf1Pa~{3l8lrbw z$NAP+{FL_2UH@VtU*s-v!kV7*syWB$VueKuSbNL!d*`z*Umk0x6o`duj>Bqr{^MJ4 z{B<^IBkbG?dp}|qcAGD%Z|kqd-)8VP*|gO+MMKB@(Xf}C=jIS)lq6%Xkf|GtCyl_9 z$BCV`VXvR%o4sbeJotO=uvd+>VVLiw6$J|NDvC`8{%FB20Y2_*j4T z4_@Bgh2BqttKQk?Q5?p0sJH9W;aWb}`a|wF6uoN_K63zvZpvp=rVcg5@aEwV{}r2R zimQ~ypRS_=Sz-bw>xVtH*wYv3MPZzxg*Eyf7iSzrmriGg$mMuoX=PTvsp@n`S+SKH z+4Qu;zpCy~6TVtrxY`fab>zcUg`MBS zsx5FW9f!TIYBIj;CYa1melgt|HMV*WB;ykwONOjw{8iHCgO#{VX5 z_&m1XnplJ6)?~cgE!JGB&8NPRZ&cH~YtJ}=51+ZwyzA?%N5emAQPCQsIB^l!S_5as zq2qV(&yQVaUTv;Vr3}>^|AwDc!ZporuokiZ@50o+p40S}WPHD8wqOqr-^*S+$iM1n z&C0HDTv?OK{O%prkix-d#C)6cwq)FQ^Wxj<`R);$@O=eqpTO<+FUsrDUQk+auJT;>3~-jto6Etc_aG@h3ZeOEpfZmt;%zuskB9p?PVPu1su0*$t& zFU)BMLsm?RWmJR_sXeT@)FT$Ike_f4Mig$rf4%3@9PEj=!?l{Rc&{tv5&Xxu0>lE2 z(c>rg;3}{1PaESt&&x;4g#C|;?G(gge&=_sgulNSMKj+e8xmj1ktjUHOq`XuaM26-%0Fd5&S&ss*xHQj!6Ubg*LI&$2+?EfX=OADD_ z_Gcp8^ocsWLofHqA$VVY_F8=P^F+LAA?sS__Z_7?%EMOIJ8R9FZ{<3%sZ9?gLXj*o z|7IdgdXJ5x13fFlTUt)f`}YxMS4 z-?%#x3F#SfBs$2~m?Uoy_Fk2RBc6`NI~q5AzM3`U;A0oKzoWjm1H9~-25+4!Uy9u+ z<2#bZRlmF5nwAyVsT*VQcdA*xql(}DPm9Q9VZ;6#jm0Z9v_81sMISUS+s-;3?8)IK z)|PAQn{$s@ccy17@#&e&ye$lX4#(u}Yf8JUk&-u1!Pw#%*dLV7YRJ`l4mev-z#rj4StqDNB$D~*n z^9nLvOg_#zKH~vvPrPr;=S}|R7Myp9dH!)W>pFHUE*9~O*rK@N5%KGcclnLC<#I^t zZ;g{9R5IIqR+!sR{P=c#0s~jTsAE^M`ZeR5(IgygVH*aI9TPeN+MezQ@>gM2t9v&3)ZHJ;iK{H|Nx5hc?TDE5zTe z&JNT!4q7G=_O+l}kFi_&rJR2F?0Ic%U)izJu|#NGn2q6I=dKrG**?K_SZLj!^Yg=p( zr+7)6V!GHRy~=C?>#pY4Rda0vrXO@defY(Yo3p4Q^-Q!7qtX4NMOmQrXnz;u9Zci^s@)Od)sVaa3!V zIZ(Thu`cuc-^$Lzl03)F7yA_#U@I5G&xWOv@inQ*cx(2fIy>2_k{qWSlJQKqn!Ene zv+!~wyH(b);;u`Ddkg)(SjC#S?wMQ4p1f{@cgNt~=df$0=fC-tvA#q4!tdAMUX6?V zHt&4FH68vEv-+8B;%D^#AOGMyTkg7Cd|dLk`E`yBfQ6G?Khm+DXZcyqKkOOj|1g#f z_s)Fnx^Lu^ehy>z(YM{?ZG*V2x|X;bCSSnE;a!Pa=n zxF0Tb;!{2)ZaEUq+b@oY?=`a>;a^lOEgz9AXOY{TJ0hX3eTTOrp_F3-3$l9)*}YHn zV>{2(hXZ%QXSkACUwxm%4g14}=d=mDsQ(flQ{5h#ELY-17@}XdKgicapJC>ftB$9!|7aJ$a$ z@@LA6hm9sz;t;XoCpJ>Qj??!=^ySU^|Gl&3WQaWv4aOyKxIg*2Ic4!B@^yJFTc6{@`UeR5cC{Dmanun8NRRY?v58(gXyU#n6q{&eY> zZ}iD!xF!}~z?O9^8w-tG|Kk<0_>BD4pZHzQ>9J_|SRH5&5#VE(}8j(y|5dgg^N3KZ%8VZ%gN|EEEd^^5A}fJF0PY?5y}6TbGd zJthWUQ$0`7>-FS%5ncWuJ-m3#`1#F=P`ftX7$c9}&3m0-oSF{3JcTWwMKq5GvDC1(X+FQ_<3->(d-E`o~qi*L5APU)j29H^#y<>DGz9!}=%p$*+6V zx@#SA$WHd1V)2=e$HL&J#3sZR9(u<2oO;B*hDK z9w**foljFWO?;&;-~VPlNvgGhan>5j{lClcT5`FGj1~V?eu27`C66h;%O$q|iXN?1 z=Y1aGq&k(DaDwaB#O^(}oL_>93w+?JMJugwuI8b?G%eJ(#+V*dG z51FtQ*7ts&9XYFS*r1c*|7lmiN%%dl9lzVwqbGbFtH0-vQT<(n41TtgJd(fpU$Y5+ zT*9Hd;AirjHCOPmD)4EpeI|ak_)0#gc;Ie+%Inwqu7&@3;n{CwakBH<$yk2phg7uo zST*0#t?BzZWb*SW{H03lZH;7T8?in$>@DY9UVO7q1#5JY(`9h^PX8--c1u3&?PRv@ z)iBb&et~3&!S-K{DgUQ*h0KoKfgjVY7`Ov2&>&h|QfmWAixeh;k_ zcgpr&{e5bO9E*L?kn@#wD%>;bZ80AA&;Lxk=Udo!8g88tvx1$K9l!To91*Vffwx6g z!QGeTnk{lpITNGAlkbRzP(t3&_i|P0MuLg^*6?9-Q~0{;)13;kq}7&s>8K z-vi^~`l3AZDcDOUckNB^OCUe4?M3InVeft+~cBhyZ_!d#h(+Nvx)Dz zgzQc?mZmNjN8=5>;ime1KZxv)us$J--eZ69adlL;KW3=M^Yr9l9HO~0KZ;j$r!)7u zr;fOPHF}bdeC4*`wc=1^G*aCJHMqpkiLd}-|I#By9+KW*43he6*q zArDK|lZ(yze!o1NpN(G~CNqb`{f>xN`2U4%(;v|=`+}I~QFuufUUSVN$I6`K1MIc! zGQQ>hR(s%yXDuUN1>Ug=b7Qo}i^{)}{L{@LlcN8w z>+^;BR<c>WFD`LUjRr#^28^IG%} zThX5js?(*2eQVgKpFiktT;P5_?bXJ7O2Oy`aw(K~sxmCTAsS{WQ!n-S;3{?(cka5( zd;!it!+RUWm$f>l10#q*d!OA%rH) z@4mmu?JZju_xp)H1D@)Y+UePpEHt>^fN|b<|8x+My;-By|9vJKj;7DEcfXw)XX}O+1N)8Z7mV|eJ3ymvRW(}Q zK%?R1H0qc`qxjEOI{C{=`Ufl74_WD%veMCAR&u6VDe9<|VqRJ4@--_ZODjFPW2J%L ztmKtTqao!r+7YZ#4xFb{kVdS8Mj`lIOiL@7-NQ(nPbW`&26?);$h_^M5@ih9*ubED z5e5a1FzDq(gQmqBl(@>ElQ9PE7+}y)yFr^<8}uRAplC8E?SYGu(_BQ&T_o0qQcO`R zed%GP>%ms?#D6E!IjDjm!DYAf-C^d{6d%{R}g%RluNaV>N@i>$`0l21{ zq2yqAKdm0w(=sUSW(GNq;P@+p=-&(qxsJ#1bPB0xr4Oc+EFY~jI4|xG_nJ~xBVVS` zn!y@98mUp{FpbL2&?xt8jV8?1XfKW`Lo}+}NTV+{9GXUBN^6vrX{EF%D}|P@lGurB z8;oNeuH7C+o~0QSVB$M7_fx>#Fd7nqamPLA@wnEPp(GmOdTZdiaGfHzi$Z%~EHR#$ zcksGr2I*xp$ce)fm_e4txUW~ZZ(p4IUOMSMR@!*PN)_{K)VQ5S%VRY1+NsgH2O8z` zW)$*VqjP68aw&}-pVlbvTa8M7)oAD~jYeluu~J29~_n2GB77`6GVQP*u6#T3HWy$hqL?k>92)u3yC8}#g?L0hFk zJMSB!VF4-5)sfCt{_V^tp)C`;YUA|*jfx>w0@t``Oml-;jW#H0vq3V|pyHbh zdOg-43Nonwe9VEr6wCjR=B_PLyuTv#u@9u)>xMMX9hN#@FKPT7DfYFMRPsL7*WWH0 zIam{Yx-)VdW@2A{Zf+XD119g}G<*lQTx-kq;ca+Gs~E0#smIMDPh^(3r9v0xa*HlM zl=DVjcg+4EchviO?(2(!-Ih`QZlOI^X4xBx%6hpiR&TfC@iUdx+EAijqRPy8s?4B8$~>}NWeqy2PTtJ!*2~~rlf2w%wTilXc1hTD(ium#*HZ@XSA)K=_7Q(M#lyDcD~ zvn^_9J6n3L7PgoRjcn-`b(^^$)b=c^vMpj?1zSL;a<;4skE(PqCf!WOcAj_p6Jjk-0-mVV_=TWF5{wuoaLZN3j1+tMr5whcL1+7^C0 zw=H;fHk-xwE4M#>!86Al<{sZQJbutZE}l*0)OidS-#T#1y+|GqvXVQ8CUE*PojWEs z=i<$HZfUdy^OedYQ`hqV=O*r463HD`gE&2F$EjuyZa&Y$=~G8dFR)meT@e4v#!2cB zFU@Tiq`q*i6b~|_$m6B-*e_BqIa|`^b(;7V&gganMngI?QP7Xk(yPpIj=0zy&qQ56 zCiLQ14}OxqdNH%zLFW0Gk5hpV?p$Ahn`Q4XbKyN^c^k|vQ~uxqC6;sh=NL}$oa^U8 zx#wsH?x}0zrt>tTmS3=*cUx)ZY{X(A7ZpREaktRu!EKG+yETz#D${Qi=X9qww|wK= zyw;yPS`Fb&b1d$E6sIE*oZ61!0p;d$GjIg=+%Cr*_p)n+7OuzNe^PAV^Til z$lgiW6BeqFY$ugx)eDtn|Dn>e`M3kz-tGWf4!3XLeC}X-e)o{$IouA*8<&Ir(;e}!p4)Mqxzldi+{J1% zb=xD`xP1>dbVu!}>5lTP=JtJF(rsCm*L`wmK6mJ1oPX*YML|zgz|fm2tMMtxl$m{&q-A?u;$mZFUYATXzQO2^drYj0VHBF6QRpU@xoV!I#W|E& zr=Svl*HND6?#hyDhziLyM}=IUtLSt;<=H++iQYq$=lTRipQkI)ElN46ja1Hu4n-wK zDf)M|vY$&-^g3CItd+`f!ij6yraYI^m2+vDa##;2J#3G%zdE3@_9+#)=DebHw^i2u zJIWk!Qw6+wtaR%~mE!brhg|Y^+Yjb(J5Kq#(^3n#(-s$Ur;jY?j$cyD9phKt9nsF> z_Vq5|_UtU`{&J>>+st3c9Z)i_JKznu&3jLkeb5zUAH7pKopDO2{z@NNLph5URp!>G zlIqlxw0^8c=4_^yf5r5nRk-d%vw$WU9r zgisr~YuWTpRc(pY%i5mxC}eYN$zzKu=Vvn)`Po9Mc-uVmnLA3p>&PI|{pb z*48xc__&9A7OmwWTb6TAwKd!`YXi@!x`vB!^EkDM;EvdEZh39xj@C!04=a7rZY9QVRFTJ5smxZ3Ro2Hj z%5!$Ovg8O;l&^%Mo4+NMJ}hZ)e@VW%G|@MZ(LaKjqp-eTzhRawB{MR}*im?x0$;FCwJj81kr%@R^zNg}P(}SGy?B|Y4Y1|&WgGWwW$A$kQ z?iezNo3HC}hqQ9%3t$Pa1l%dY^#!@OUhEtb`v)+ZbzURqw=fFO4Vv#K^(nEEtox8kW}@==zXxs_v|pK|VxL{@WEv-mfe@1 z(P$ZBC_|d1kVBWQl%i!fNv$#s^4Vrkm01Qw{t6Slvoi{tz{CJ26O}hHeajvu-o9qe zn|Zh;u`G9#tB!oylsgLb zxH)Aww~TDZO@GY!h}ztFy9(Ds%W%tua@@%+oDO<%O1cdUKE`N864R}~wn8aPKfe!H zw}FYf%NgC9&cwsAj7luiXw+v-G%3wQhX6*WFKYDsv?kt{V?y?4y1s>pkFS~KzAtw! z%*D;%BHZ#Bm>$-Z>(SG=efd0|)?+EBADg)-zK@%&GdNw7-2PB;$E!m;bJ1y@W?tat z(F=L?_i}rZK2GWz`V^vmHzH8 zW!8*QAxoF5fH#{}ib)TZyhKekDTv-aARB69VC4%-TPs(-` zFl?tXr*2aA^($0Jkp)VBFjqN$PFIe5kxKY>Q+idaa%QWd^t~mNvwTtIsTZIuIenGo zZcb&M^j6~FMJaN|OFGk9if&$#?D?$psT32Na1UKSGqI!ucW$iD9Z_w#qf#Gk=^MoZ zYR={HYnSqXGs)bMxrRGOuI0`_$=v=kkvodJEM9CZ1b^Z93P7W>96lYVhA`3JWT{J`V= z-ttVx8=h9}3C}8bhttDLT>L)8)0~p)mv(T6R}!a!aojm#26yc5$StKya*=k2>HC*p zO;lmz&eCXM4QLE!1~m?a?rdpLpGF4l2{&lc1%rMKkb1YB;Q79aymjR$Gh3wdT{7aN4=QJg5L@0}gDJqp;(Zs8g3P58-W=QIpDrv_iDYkErW{=g{+y_cl9e@p$dj}jY-D9gnlMF;CCYTQccb^Cy`k5>UXgmQeH zslw|Bu3sQUKi)O zIhd!FS;HOSr+K9BXYQ-#w^?!p+r*CsHqRX0_GN1mTjuztwwMhqZBae!w#cORw)i(~ zY@VQYwzLtQY>7E~*+M_|wk0O?vPI_YWlK-*V+*P0u!St>ZwpE6YYTYM$re?ssm-x0 z#AY8>+7{V5w=HYO8}8Y5iU(ZU%pLJd!IS55v3dX(7l5Nt*BF&=!|2%)mslDm%?)W% z)cqvISyGlz%=2GGmHsS9SvrR)%e~GQwPwNWUKE=U;kAJpRX$G$p_`x{6aa}K2qk`e^o%g_bRjDclG5Hxzo&SZv6zgPjWuNv^>H0%u)_9*p(SM?zulIqb!C|EKUO{$^s)97fS0@G`CfM{;WvJQ#jec1Z&( z!#n6I_36=4PeCplvs{{cVx&mK+Rfcfih?#NzEqS{;f+DQ)eXwgK%=MUagMgktgw@b zb|0AMd?{{DY{<=_y*RBN$Fl~+@%RtPoV-$b=H(;YzUnGZi+aQZT72LqmwMT<&gHgU zZ&u6}Zz*r{l&@-|J#}p-gB#j{4>Y$$v~O#RD$&t){b2`N*7f$bsN8LB*E_bbMRaXs zOBt=%Jpa_TUH=(u3!PTpmOiYMEyA~`&5R1LJu8>XcKu=wTVe>=^ciotbIKEL&bhUZzkt%Za0u_=7J@I~}vWKixSwmK-w6e*{U5Pni%EJQ{jV`O`dTHgnT~bkaA>|m5Q;D@dq`CWp)N8%~ zR^66V{kqgEJ&?{2FL2#F%JROL@_YzXo`W@&`L>pF^wX8@icroxBbDPhFtaZ7QPD+; zVDi`xB`D{nWM!$fPC3_X!FTOc0l9Z8$DrMc&fu7^M~V9TRs8OB6;j?%A-AQnXMl^G z1SeUtQ$QxF1mafk1C9u*R3>J*JxRq zMpJ%hVplmv9tZq3Co{!aX0`yAJp3;+cYa~!4?pg7l;KVl%*D7wDCpG#b7QSdj_}YVA)aRfdb*-dZ`LdMWW|l+sttRp!GuMKu?xtjUX&>AO@}65~~T(RihM zEmi>wmZ|s&E0kx;V&%va4-F3fHW!~g6t6O~FI6F>6IJ}6)yf$K4E)Qf0@kikj%BNr z<38RSyGjMr#s6CuDZ5XMvb>xETpXtKH64`aR0HL7l~s-v*`ar?N&QBOG{??{AJiAu zT>$)T1Ncv0gOZ_fI?OYuc^8AKJ%`sk9yp4}qc2<(;SKNox0Nn|GZh)EQCg@*dbCEj zF;2%bH9GNL6J5$PqIOKIYRkkZaMTLG+tIy|vt}?+V;U0?J(w^s2azA4A2BCSf|>YS zn$cZiwEF_ad$&fFZfK%IHb(6qYEa_&=cY#K`lQbHJ$EFT=-E#-tHs*P{g^8985fg}k zU5QNe+6Mo1AJg}q1$TMGM7bx-e1|o1_a_szb8?y%0E{cl9o8}&xXmpG>vHFZ+T1d< zCf6U-;Fb;0ZOIM5d8}AB8gyV?PS%>-xw9hoj48$SZH2khlZ#V+FK&uQ;PdHB|7RXz zx+xPD+<)A6E9Kj2P-;u?x@4)pKPyE5KS#?hlQY zQ<3Ad)HmIe)a;ZbwpW_bNs=m!km7}pq|5hQw0@LEeF`v>D{%p=I!+UejKV!M`$sFzw@jSBKQf|4joQwVmJic!dcgC*cX$hOTeeh;zg3Ua0 z=~nJsw~a?qD%U&j=4k_Vb9-PakKeVEXLa7i(`xVLnN`zx=8hDeb$bK1H*j+2sFmEA zwU|3k&f}T$XK<$+%c=W7ZmHLud*-(0v?`RFUeN2;i*v_Fe@;bzGqPZQzg%GEKZn5k z4q%>Bm`Gm7=wdR{_r){QGM9;k(Tvu{G4ss|re9tLk2IEv^9z`my^!fomoV{eJL)Ei ziBsT?$F?%cw+HnDVBn(+MuQJCv;IHOF_+;(oMd7sXkP{sGbIy6@%_Ia zGIHK$;^Hl)`#ff%%NIt?e=+B*?3`};b4O}!E*=GNXLF3{puC)xnYwLx!Dn>pqq#pECU>$6>t0E7Ne(5-)B>SKHHVUwG00KUghbuPo>>TQ=ZP-Rc7=il_l1z_{Ye{u64>h2Q0LMJIq_I zOyHpN!!l*|TA{KYFHv?5pX~4X%IP&vMUISC_F_VbYg3i}=XmAZIY^PalOm&ua^!8G zES5@2PezQ_1b1k2U5dN7{+20-?WL$U4V2=cpQOYws84Qo(UR;M#huZpuZ7XXUQ7?3 z%|u1aU%8dcOiRO9ondCZtIQ-1=H)9h-}-U$W&pQbgeRR?l#4FKxTA7O?yO+pmf}HN zFJ6IDu`=A8RE9g6RN$hog*)e$#%IcN$0F#3*g$Rx58~!t`2Ic0a!^x=AQA1U7b;fpBnuGyv>RWqt|o6E#4a=ljz1 z`XQYYb1Ku{AGMdf%CaRuIbY;g&MBpp=Ve8uw+T|79)Zent%4H2D=1IRiptqM2)-it zT9aZ*gcnfG?D>@Vlp8$GM^W-y)a5dzUP4Ntr$YB8N}4@ElGYgBP&wq-PX^_#hq_w= z>ZDUNx&qwq`vEo1%1oSW$%IcIX3m_!^jnyN52?(2e1e&O-eGj~9kWP3cr#@Y+aX+E zZR2`a6K+Xu#vRA)!0YbZ`80w%Ds<&$nKs;#*%;%hbMrCddRA@ji45eTO>u61%gt$g zcCK@*^M+rUxcrFe_f9hN&>m)nCNg?6i&5d;ObiNQ;!iKsGvhUKOmoqdOhdc^_a87u zif8krXbjJhotGluy>zVcR-W$uO5Dn;JbxBcdW(XJp5{}Yh6R+PWq=a3aw*{iW(Iwe zW}SbfnfOu)>uV{JUrMtour>EpsYhMJBlvCXb!k4l2=Cy$GO7r?HaNV0yv_U=@fqNK?{L$;SH0cRA%N;4o zVZ44I$4oSkSMY!Ky;4kBFZF5|&)37GXy0Cnv6WF1`C!n|IpD@8T;xm$qa0<>pAe&Fbdqx%%XUVI|#n|H`6u5L?XEM>wlOjarC{;#Efgq zOgRNEbd;IfPcgm6IVSF$22VP|=#!g?K#Y4QV8$7I&y7vY{E0DUij7oto z%$yFtbR-ik5MyP*g}*d{2OPwx=o9oDY|!W#c+SoK8hvUA-qaF(8hvo|LtjD|cvtW<4{m4^IbC94nkRZWdnw9&{G z4&Dcjb!-Oawkvu^ifd#qrcr7>jS>f=zhNZ!;%^u2xagvAi!HW)7o|VCh?&BC)Q8^|ADob*C<;fkWoOLQIvqy-cMzxgQr5 zhx~hJpEOS`k#sf^xY1OK>xCq(xC{TTzd

7`w#{h~A^Gq#62OzM^krJ$gevVvaE; zMXEA-hgj=0o>7f?%$&apIc_J@a~n*=yOGxpG12D?(-ST-^CNOgof8;K1AH31rQm9& zXRc%-1T~7^ix_o53=c%D;?+3d#7t(kTENWG3z=v;hly=t!Fz@$qtP&+?eZ3jdq>a=-+=dYWN#@IVTfon7?Mw zb^q34B3DOX@@Ph43KQQ4GBK|e6IF2@9HLh!aG)@wn~!iF=!T8B_r1s~BcUtiuEy)> zSOZPLcd#x(-lPAh2-Z}fMgu=t$c(5N%6yA94QMrd>y=RVp7=PdQ#nzB;LXcrAkb5R&=szD=9L@9>z%UMuxf!|rZVyK1 zS~6pRt8iNNmRAxjYr5|goNW%Xp9;)bL4W(zn)A?Rp3FJS^ znCwdb^-AgmZ%b1<1CP~^)P1Ma;g1WyI4Q11O1cMr5L!&q^6v(PUx1cfW>8!;)FeV( zWX+AMW^w11XN?mo)Y~@;f{V zOG%8uZ(w{hFxgL|?wgSV?`w3b7!zgMGyQMGN$@%*LQQ7oddT#z-|=1!ZvM>6MQmYi zjw{B^=0&;Zc@b{uSCUgGxYO0L+>);xcQ!1~DWe=0V^OE9T%3z7g}LQeA^4@x$=C95 z&!;@xxiUBSDs;wO=#3fQz#CpMx`1&zm5F>Q!AHS2G7z(3A~2>eG`Y^GQZB5?G>tyA z*T`}m>nkyg(odm>s)<3L+8fjr`DEZw^hT`)2Rw{E!j}eJ_mfn#l%)JsQ3Hnl@QaYb zYm^jIqa?kWA*pzb)Q=!eG8anW8!z>$iP9XtNeaszjA^>0`oP95JEXaBtJJUTlw!?3 z)MKR7wG1hu_CU+*mU=Dxts1!KcKm<$B~mnBCe3#Vz);j_l6OeDgU{^TC-qwgrM}-K z^)oIhE@VhE*Ir4}H(=eYfS-qJNSrA}_X$#@^aA(OQF|zZ-1fnsLdTKMmKzk?0P))v zJ$`$v)FTwQF$}#kOQ3~a=sA3-iLQB};i^O9HD&a+Eu-{s%pY)U8*pq~V@6SoiM3%E zOU}dxVBDB4jFxv}Vq|wFs(~{E^<-3~Gc+BJm%UL>9)Oqyw$>U39r-7o_hK}s8~SO0 zEmv@^MWxUOc+;%t!J#16(2^HM!>p#;2|f%=*Ju@-Oh>6 z^w#JHu=Cb&jqU)?&sPTD1W)US>+Or{Z5zqNSLBk}G3Y~Bz(fORuR8J2(~Fs&6wl25 zad0*5kk$952o1(a^iGSfBGHnF~=nTq*VZ zo2A)oKWa25rEa++1qXkh2aS{R8=udioM-%$B_yx1tSYP=6VZ<_AV}#$swht_aDY0f z=}oJkoKwpyF}IA;>l9OFH++snmM*HV5 z^LiXO(0pcU$oV@lwxd=vv3M&J&RtA@p2l>(kLd-$0oMJ^%p>5uElnnJ7|iUslTn_v zOw3<_7+VAn0=cLT;;O&K$RFSJ>pAiq;-?B?WiVpLT?hPe9rDgb^se@ScZ-^AuhTB_ zG&jh=^dO-8#6Ro@)$g}5bA1G5l=P1?Hl6$kuz71 zW#%sM|L%#<%1%aWHZgH@H@p|g%o>N89($7M>#tyZo-;H1cjj2+g}yW&?pWc^J#oOl z6!fkjLUnBC3Ix3t4#a@{Z(Zr6ZbHF z$5t}RkGM`816`{lPKz+{#*0ypo8UJoI52)$*>LTJUDP$$pz#Ud)b|Yc8lWdX-el(~i9{>Gm z(9>7w8GdU}ysxB%#iVG8H8Z@Z6cutv>iXTFybqw~-RN&cZVa}eKk$r;e2asR9z+jw zJ@oeo#KhfDqPH3J%+E!RkPHg1=c1RlU6i{pbVMzKTwS3H78|r-D}1O#gNk9D>b(q_ zS<|37i2LC4=uu8`VZL2-I~F)&W>C71mG-Sf@4E-wDxXF#TY)=9BMz5o&~xB!H#ISa z7!`n)Ee{-Q+7s9?4BTln@)dAn&J1RT&t_)ZXw1zFa0H^0iM|hy*I$z7B*mK z5TmIjnOI(!(KKIh-v{8Sd%?NZYE&T+93fewXkg-ym3TfET4gYN^$x($j;P<@`HD`s zrv4h$03P|_vq|8QYZhyC8hG1rI{K{VYg7}s`(P??brgEhXQ97)vqk}kkwah5`}0ww zE}!sOFI)q-{10GgcC5pJ(7ZKkGs;yHeoz(MV<5bX($JP=aWCNex2gd*%P{fZx|oFP z9+ZXaxuMabtMD_9!$${xc$y*x&m%{thfyZEsOcKuWErf}WzZF;z#kuCe!n3<=au4i zCEz3nKDIy(MEun5D8;9q@O1h~8vO_I_Hao>M&oge6lX>OyZ)4PsTX>(T1(n(Ma~SC zz-IJE6p_NexTL3fPy_pcn7?MwrtPR%#9@B{ctHW+bjTO<_TLVpjfqy0nA?B>8g*Ns z(bn}E{XBxhqtTh$$SJ2W@7sYv7{g0#H98EQXvu3O+U26*UtF}zANAP+;2AZ58#*{u zLxawSqtDxFP)wLXB?=<8SHfc`<{~{NovtsoQY$a;>f#y&`XPS+YZLRsr|ROOibbGP zdmA)(vOxou8uVnZLDO#-v=Dga&WSp4UU)TF8}ne3{kOS6~mNW=sbs9YW z+6#j?=B4vCgMK6%^mQR>S<$Hd;5a-JYpEaZuNe4g9;}hV*iVoR>!ga6&K5u}M=UN| zh&>-^$cY%c2|3Waj#w#HpV9NSsHF`+t^i&}M>Dfg0yA@OXZn8$9cM zhnTnzuIY7@>2Zgl!_yh9L@q&38pR|-mmzOYn~NMV1)fJFe3(Iq#g4#Xd`Djk6BUXe zZoxyMZ$V!jg?2iCy#`npKgNSc2#wBS4IJ-_$1v1*DnV~m`Ckr?iqmK_K3@d$Uh*2& zpTgdUZQwCGvEEWOse@}nFDBw9fpEvL# z-@~u@%uMH3aGHwT;MU=m>IhmzTzbG?g58d zG-AS44xIU|Mw3?~e+FSqR>j_rY6jguV2G00r05T9URGU-`b`ig;3pL)z|WqAJg`ub zktiwW8YvcSfDgG-nl+^~Kb(}J**W>2CuttIj9#Q0Scf;HKH-+sZ{L?R|0!bdg*2zX zmim_0lJ>kpFDQ6Sqi<3__Z#~xvMJAFZ{@h@i`u)N^7#2e>*Y|M*IvrgpHOr90^je0 z6uCd3KJ*TKtk0!61-_p1u{7^{Bptja^*iUFbIwW{eomV8PUD)6N&Wm0`0a)?q4%ia zYV<=bkaTVm@_rvlZfL%V6>u)BpDm9K>a7e)m;=sZ!9I*d;16ZOC}OgeUb?WSq6mDk z*5Eq*z(;|dftc?U34QjDCbq*Th^frT)eM}n3wUrJa|3mXLk&v5V zZcrlyHV;AU{sa7vnv6PUXT-3ESPTRw0tQ7^fZxyzxYQgm2>d^Ryf6Pm4WT#9Nvz)68uUxm~U#7m*A zmb%ww>`&P%&Hg7Oy}W__D$k@@`jZq%h@*5L<&1`37MfRyc?HnxQA9c8iYZ6&VyI{0 z`O6|oZ&yT#Cxw(gwtzD4)8& z=z4hOs}TE(&=Ueqb8ZSgi+q#TTT%n8m3@e(Qr_V3*9|Hy4H}jNFQF~GWeXW#IABCy5>bNvwWI2-x7 zJmx#}wG}anePNBQf-!^GARB-23?K=*O>|)6qZ50Bj7o`$NsiptoIR! z;bg=Puq*l?#{LT87+Cep7x)W)sF#6vU4c<{aM{3`;3;+Cb2dW#v^f*WEfJ#;(1p-W zHOHZ*2riRt3~KUG&_5HII6V%%%wrj~7y&VU9LsN+w^@fUdiABg*oOvE8KbZCN_VRiIbfJ@ld~RfCG4{$%(`K^EXZB`JnglvJoPY5~ZT zBN|Ea?kH(Qe{g=}#)ac0`A?Vn+-U5LnkV(V3!%RkVc*w0Y4*Zg`$i+~1T+G8>=t}} z>i|igx`0!(k<_jw@@-q3zcaA16Z&cK-i+o_RJTdealFMbih;+}lVV^n@@WYvI{Bj? z_<=zWQVrTN5Bl8(UT_Zk^!k7g42GAwG>q)nrxb2NHA*21^CgMFVq(DKMHMH*`Ku06QT7>%wafGZ>Rx?aFMUWEsX zeEHLdQC;Nd@gdmHr~UuD)7-&`H^f#MU}$@2bbUTEr^lfVz5uy&5!1&kVEXuZ%se)S z=`(O(&kix*)x%h3E|`T}3SX$}P)4!c5q~Yv_gs&O9)a*7zypk58WlgQ(X372!oA>) zY(xybPbbSp=sV2AmYLvJYfvlLkF|RUarBQt?QcO(UH}LBgj`Wyit?EMZ~Y|Y0S}#w zcxX5i9BeB3FM3O{rwue^xTJo%q(5s&kpr<;t_*q|e4uMi7_?$MG={%HL%O;sraCxY z0^)d?mBL?Iv4<6XNl_T5IE)$Q^TP{GY|V$YRS5dHDArH~CMs1y{Sa&PZgobzf#suc zl&{XjHLTs47K}qVM!s0fl`+?^a-x3xOr!J^?6)0@aqkY@8Ubvn3mtz9^J_pSJbeV=a#f3>!xA>i4T_t0mnu)ndkL0*NxTfu>|IvO;z1-K&zm#m4}4vuBR4QiQ) z=U5Bnj~Mh3do=5Mf!F>(K7N7!L4FQ+hPl9cd9w|Aa0Gg+dqSJ_!WaTuqs9Q^0&otx?s_s5>2k{)t5$CjmU|6m-!CypOf94*AeKh>7}T;SW`W zk5iwCHtmszM>E<4jV2c`bKMH`z^!3=n3L)E*E2D31Je`NAde<7^Iy~`ZsGktsAF0e z!_SCg`k?ukgSj~0R3`jKBIf}QvykT}bYc|I4xF?x6P++$Qwtz}{(yge8<>vuTV@LC zWMvSKRl)riyRa`Bwa93Ldb;6NBJM61l9X8)d-Is2r5zA=qolquMw$(lqc3zd_S&UL z;^|T}IV#Orr_ncaL7J~KflL2LGYEXF%Y7*>A+JR}l==#fq?xy*+472{t!MH1!{As4 zP+Q%F_jgE2-3pI>lN8}NZ{8)++&fc>-ovFhiFwZ36!{NxJPVp*MnUZJ%L%^<>th(^ zx=%}k%=^$afyh4r>6B=Jj@kxKZY$~o9gweHhmp9C{mIFpl(r&_LW|?Q>8KmVq88E> z`<+`_Y1~|JF5q19bt_FMgj@xFliXLMS2KZoldLwkil>-qz;zFKL=E7aCbqV|Dt z)1f`mfLESez@iB3IX`Qqi09BDSKtx-jcYiEI;Jk!4a@d zhLw}zPBrvfVx2tGfc;G{XPu>p9{_GWL{dgi^gy(Nj>R}uYbwRdM(|DQfsa;|BuXM5 z0VlfOMa-ug)Fim-8?ghCfzL47j8MZq!1@AF(#XbyNqIXu6Oz1-!YpNC-mRt9$+ z5AKTbj)b0ElOI@a0roZnPsG^0*bLryPNSyp;os#1Ps@v17%*}8e>}4i6I*~OCj(Lc zDhize-@yY6i7d$|XC6iwzfjkDga3zyYJ;_PXczPY*4fb==%d8rj%BD7&j2UwhuTnA zU=HRf6Z3Yd8~CRcc>sAOz9@1+N$}ND;5xamuN=pJ8sx)Z)Z&)I2VSSqL15L4JtQs}wyJTLes=5s2}p)e1p zkOS5y8PtC;>Ye2=FHYpU^iXo{LM&C#sPk~>#$fhWQ=*3S*Ca6Fmu99qWS%hf>Gv zsGIaP=)zju`x$T)jO{GM|Gn&}K@^0SQXXDh4N0+9Nmmi$ZyKS0D-1nPz^9)rq;T5d zF@O^_ZVzo{M-NFStOXp!@q7~gULBmsjk)m0oV){`OsazZy;4#H<&p3R;7R;4=;w2T zK3_5@{eVHR)-8j5PjMdqP-q16^66A;@Ip9YCk1LdBqBGXPd8~tjwNN((2d=}w zgkKSSN*iFyD88@wX$e?j9@Ffl`UuaOM!s83%HN@#T#NbGbL7v9&Hjz_LjzGW8EYu_yqL*`(q~2RF ze!Hc9(k0DqMN82yd zmwroq=x_Yy!B6P*@6g}hrFri=#v8}<&+v5LNj={S)RZ1b3b`YN`Um~ur%(qw1l_LS z3%lT*??>GcUU1N6X})rzc9?|xzg+5V7D-B|y%4`Snb0tAM+tS8&)~v{;hlFe{#Su7r@@KS@%t3Okg>o#6OV5; zqK2M`_{Q8AI2tbbuXYU&f3`-e=OaEAYqS*Ckh)BxL3rH@^S2*=+qpucqC0^_`*A(M zx`*p=uI)G%u5J76#T$j;f}8zO%N`k_Ay7@AN3dZ-wD#-iX8$c>r6jD%oGU25XDG&JCG z3*RS zZK0LA!Z-)n= zMuh*_Rt$U;IeAPD^qC`+@jO4m?i6 z-}cl1o>gSj3fKM|+M_Gt@xR`tio`@iFYMX=0UhyDqs#d2jcM>nu|E7_5XY0ThI%6| zYXkRkA%|QB?kz!lrG(P5Ek(s$(u~?J2{nCj3V)k} z_iOAzPD=r9Z$v$JJ+L}i>U|Q?lL#O6JFqi75x)FlsV|=|#bDIRs?S92aRO=-e@KzH z_y2Nbt(H>EX$edXm!cBZ#@DLY&l3nQp`4^?$d?|hvDsK7-njQ#9&nT^_#K(c;I9|4 zAN4rK597H7<5&&j9I+Cf!(ZT(P4T&sSU+E&Y0ohJs!KPKs+qfsKXNA9v%xU z)F>OCUs{ZM)O?NZ&qdtK)F?Z!>#+bH4g)T>gTIO+ybW-yJv3Vj;Ab^>W5v;Th_#%B z$6yQaD+qP{A{t%)7dU5H$$Ja14)|r64eUZ)E@c^NdpF=uyn>IC*Pvbnp=Dp=y)Ae> z2E8nq@Krqc-KTu03(m%GisV53vnF^?Q}|$AfyEu64{?8KeNdyob!6dw({LS|@tx7R zv7aX={E@sEi^8}UZ*Wk&Ze9s|Gz5Aw0Dmipv8jUk0nYVfx<(fga9`Wedu8JK?`o6> z+^}>-Cj4yZzv_nkC73yMDS9i`F*E;e?9o4rnqVd~Yh6SA_A2n{64O_J8&0@@n)xC0 zm+oQu!p%%t{aPIb8_uf{D0b#4i2!S(FzxMNx;PDWSm z=+FauDI&Po+nJj;J95wYPTc8Z=QOh!en$ZRQ@I{@ey+wnKBe(FKTgYEFq0idU#=7N z*JvhE!Q+Z;fp)^gR2ao#_>L|dA8u3yb8;LQ~P&faM`eQG6FS(GP5rc0e zI07+o7UP$<4SI^F!ApokEhiQpEc*6}&u99x`Oq1$%#57*|K2RkgU2wfG5jFhZ_z+_ zrpR|?_rp8JTJ6&pbt=U7%{tK2-~C|!Skv7QJ9B|6JCIMF zX<~17_e@X;6Cpbb;fm+Q%ctgodzqtk8PAW6&?qO!PgUII+{gnpOWd`;h?q%lr z?btiH8GRvG@6}ghpIQR)>_S}YZ1lx|W6Z+2;CYIy(a6{1z&F4zRt!g98(tS3!RWvs zJobb>$M@$8M9mXC=Fe>K%&%Y{!wTSPYv9m0aKDSda>P-igQyV~koXNGNzY?Zmsp8C z7h6ylOP69b{GriT(1YedzWE>>$FeCpkxe-cdMU>gKjnNLp!CKC&|{omS&{;jWofUm4{HDvdocrIc=#Ql8nRm1S`WWi~0S^y2~ejR^E{di&ycVMzT~?-LR5 zoL=6A@02M`e-pnim5%+)d!%XECe1PEEvc~#F);@@EfV^o9W*(YRIje26Xl^Pb0Sv* zvw9=%Z%&4v*aaNW7ar3D_#D^6=)-yNSj6)co`vBkD6ai=I3eS25eupp+Iq+Bm^ycF^Jg}&dR+^HEHI8_wwhMV7 zA98CU}L2WM-6 z?{VQfo?7Xy2A>DIBP$-YBw&lzL+FtlsI!*`r)>g`*$2H)ldxYQ2AB)4zW8$Be*$_q zSD=4x4eH{^Vb``YeeyQ!_uh$p49IK0_c7EdnK@xE6TSB_GdY!+!5f)=b|v<^EoSBh z`27WdbHk$IL#S=Du?hw9p^OJAvpi!5HYdGsy03 z(DA_r%?0P208BgZ!w|iKpjY8l_#+3LL=I>&T#B-PN&Ow>w8%VZz6JLiwG{Pi^w{1= zfZkq$*jOm_vqFkuBhZV|OHybP^zQ|sH^p1hPQ*|5)dn^04m`__7!CNpvhF?3#&V4t z_)XEI921hmNTf(p#8_*|D5R2vBs!=hDu<0wR14!QjboGJBuU8mFf(fn6OyEoBqU8` zmrj!Gon30b-`U>J=l$dTeZOkUqPdq? zgGUUhUP{ZNq7rIve>2zVSS;ffw)nGMvG{^Kd6(s}j63M1ztllqK_?9u$PekEw!NMF z9le)Rm7e`gJYyvq_vWvr!1$+HgbmyBL&>IUPyc~W-%Nx_`>nMY_-*{X#~Z09MB|G( zqxGZ7_`t#9o6jW+uNi~3~nN!GGo+A*l2AsK9UZ*LrliHks1BhBr~!$n0vd?J^5;ew+6otKOBQBr zOU7TbpQAQ-_SP1IFTp0Zh1)aL#k>p?FBEfMD{hQ`;|IlGzYv2s z84X=Zs3A!aKddaD%NAeCk8a+Ip9rTU?lh;d8y^>sKg(vlHh_OTj2(VKu4)3TOO{KM z=}|MyJ(xx2ZKuq%9@30heC>=_#-mxWc(19k!f~!07#B+&49^TDGXvPW2l(rq%%s%!WhIV{5j!F)T7T4}RW`k3SG&#LK7Y-Msa1%3`tQ<>Jhn6JZfPf9n;;vgndH z{n%GL;$FWSCPJI9V5oU=AkD;y&+s?I<1_lnQT-s-z>kVFql@DzSKz3bFX+O2$b{p``5&*yr1`Fv90z3FuRGl^Ds3^dx(@vJ(GFj-=Pae5!@! z@jRv`@9X@~nGLw<7W1ck+tQKz?lFmQ^-FS?=(cZeB6LNQgf@%btMDqH6IN`2MoY+A z3YztzYrDUj2p4`NkM)`Dck0DX@%>NoL%!v!qwlxqI}okYcCl{-YB5);b(?`NM~FM! zOn%Rr(~`wLH5Kcr%tw7XJv4ZP?cNs&r|6)C&BY$jaglFnv=n{brT@|C>7T3-c|xr1 zXK{*O_+~$f%i`fJd1AjS)X11>LZ$nLzbuC@XD--p5J~`$jDV!UW(t? z)i~a2e^Z`(d~S$$W(zM(51ruE!W!yMuarN9qxZ_C#&1s#C*P6hs!N{4qK96F#`W-G z1J7@74dv%xkI7=0)6@}q_q37D4U?xCiZ7mxhTEpQZl!$f8u3W&&?=b4@0$9&X+9p; z=PxHj!>xGcw0jq@FDD-rpSe#wv$tpWgmqerlh!1wrO)}Vz0qiHJI`-Pp0DNaHiDJ( zDZ4J2*1uk-`P9ed%YKtbdr$6-?|<^0NJz_uug1U+qva%hOQRs3c8UId>H0MNMg^YXRpKl6@#{O6D40r!YOY2|k%Lbi8K+o4|@6X72HnThXL)30^s;rmhY z6c3V%Zu%2Tgl<=Ob}6--d-2L{x?zbJ>m>2k;rSsoZqAk%Ov(arilJiTtMJj3^pK?v z;+Soo_eH?=Hr$o?4+2 z@(*LuL)v2NJy(YjN2+uEMa<;t{E(eNu6nD99-ALJHD?Dtb?yz<{39=fi_=5SV7xvH zKi_TJ4sI-~#^YZ7xkbN<8{IaD&zkXZy4q=LN-vX-{5CK2^&Q8ueWNxtsV4S4@3u+O#Gp@w2p*ND}m!JQFx0QV+BwO;nM%qPSG`>UfGhMt-9@L1!4uDOHN z6bw&`;*GEA=HaiqC)a!*WA&_Y`%e4(uzc1R>Tr)3??cYx zn?=U&HRJb^_EElk-zx9)jI#J_lXvXbkK!7J+sh`xs6X{x|1*qLPE}+0rCjTC^3NZi z%T*tb(m{`jf0FM~uZjV!le^d>=Kq5j{`u-x%34F_5;5Lt{J+cPjII=ezK);X%-o5X zx|No(_?8ytI^Af^spjSuM%1mOv!_kOj;>)xYsKP=+1y9y{(~2p&v=1)PS`vDyjXbR ztl041>>_g}3d}em?U-sLv4gG7V-}bDBs`DT9V?{0a8Gb)iCl+s8 zHx@ro-@1@j^EcDr^QP>JKImWQk`asl_hz-~x2hRr>)+^T&I5bAzcXClRSn_Y>IJ)~ zGrdeo_zzU43V zM@4MkZaQounxbXJX>=t0SgE_XT$*^{h3LEiZ{xkRnd*%Pz%gs^FW$;-ghw6`EdlJQ@z;BPhN!?h5*YLkq2ypwO-Eg1%hhi&XFHq5UZ z%5VF9M6z%p+@CsH9C(bHp3G!n8*R~8IXGChD_`*Hamm6d zPqzK(MCdV^T$1Bj`h9$;{`aNhJIMh=;PuA*{Oiaux%y0t(`a^iLNr8Yk*B5dj=AKwfUU9}xL!@>CiXT@oWcH0D`2tL)KV@I z3(v96&_ekb+x3oZ&^j+uzp#ewTMJLG6gT$!6|J)SitYJFZ?eOV|L_)`wm;dq-QIcP zRnPLw67$(;{iyO1o2yS>jAz>?$}LZgh6i4hlN<-{4iih)=YlEv>)Ow>VcM%RV1(KF z>ls%S_eZ}jDsJ9;!aLXM|DkQp?NhJunHtoi(eV5Cu=6Px^)Gmozxn};e;GYf{bIQ- za@mxheYrM){yFW~tkQBv^volF>dOgh)qe-KdQP?X#Tn7-@RDEC~u6H@GBU#Om=oEl7R zAfILhIbPz}M`g?rV%sm)u6L~d1@e!j#8u8qhS*v5`A;H0*q)_>(l@{jj&E4SmTAxUz00|Xd)99! z+q=ZLwBO11GWzP1oz@UWgPYdyOI-i9zD!xlPeGgAQ^@!rGT4ROpj-8tj-~KvzRM5y zFD56AV5b?IL+Y9qA?Ik<2d{Pi-P#3zjx;d9$nubbck;9F?oKjUT#xkZB)-w37fXL@PS1F%j}ei&7kUNbHyZsQmARWFu_pJ(A2JXCe1 zF?%}^UfGY=zD*Rb(H(xnkBv&J#kkm7E0yH~FH@&cJsGcA%`xp(wqRB*xyl;igVoh| zRAp-_$|2(C#_m0MhK@Wb-=j7AQ5@=P@5aZ=-!~WOU3zz$_u$LnZ=LgJJFJ0;^yAm{ zF!fsYak-ok9)2I6m2pjTzstW4%Pz!!bJ-L;_n^Ml#s5R*i^;wWBjLevq}urIOqyi*{Kd|@qTW8SoUFl z*mID*@UDZWjl~bf<*=H{0(El>TstE_Bwxu7rx(h5jN$7}g1x7~;+_>B1qa^?)#`3qar zB^I>^2fO2$)%=@NVz6cD^}6ck($(d6rYoN$hlAlAGP!IVKbC$!G=s175}oSznPKQ@TB54p;&OdnpF2$e25r}NGl-x%Lw zr7%9R3G#otdITWx?kioE#*_a5ecK< z$=ri{o6q^R{H*!EMMCVfdiGNE;ve{u-3ljMf6Vp}e~iz(?1Rt8=ZE>|kea2x+wl}StUI4?tEK%LU!8L7 zi~Nwe)3xZ7d(<)4EZd9U@L#79ck@U)e1xt1j689preaI|+5A=7 zH_nZw=Zn{N`Ox*F%b3^Z-ZG`l4?WL+(UcVPKYQ-^I}XB9yJ40>by0chcGpBhzh(F& zhfg#IPQus2Cc`iK*9o89G)O%F{{Hua;$FAIMNu`PY3NQy4y1@R|B2Q=`aZr^o7ard z_(ZTabh-|GZ^2V!vx05f#Tvd_^CeonqUFGjui}sYxV{7Z zFqtgRrW4vWkveqRbujAn@ONu?n4arP$1fX0 zk5A)g&SJx-C&HguZ1zn0eui4!N$~qn*F8=z52P0d!M^n6s7LYggJRbYd9GHiBj5LC z@ina)-aqrO>juEb!{qUwXG=!Y?eNj#QxajcHt$98h?m4Kz3YZKiSRC6y+|wVy)EhH zgD;5JJ>mKHxZktav?E&?a11%yM3xr%mIF0m?b6;?q(%p?&EJ5pmgC7ee1I`@XHR;R zOdY%i&rPD&mXW6t^c;QH>nHMc8J*gj+>J)333MX9%;<~e=z7*O2GOhC@%h=Y#-k6p ze-IzvV~jj=jqxfH?dG=->tXOkx9?Yx9-VCzt@V{t>Oc$VEf^tJG0ff(9PeDrW1SVPg^x9*WlMO zV$Jkl(G>E&y+ugHZ>QOf9cB1HE#!nAM(>g6Zj6#E_-T3U|2DX9PeNTFKWDG;KLCRs zHeN-r<~ND(s%@UO{uoUBJ)HSt!WyIEQD3v`U&5NM4f~A$`<}OhUfhgtmcf@V8~ZVd zFzfC_*wTQWJRgpxA2Yh=hcJ%4E!`p%o@^0P=)vMzpZV|6Tlzk=wD?{X-&2EqsBgcy zZ@-=I(V1*Mz=rf-ce<(P?oOV4_bfJ~*(GdGaO_`^Fyh~2^k+1%-+{bl!AY~U^M5s# z|D+T5MnZNzy}5+Wq;s3H5o;E@ZUKFprB0vDJnmf6H|fyz<_;Xj2j4|P=Fv!~;2A~d zvx^t0W4M?fRE}P|)Hu|pBkCDn`!{Lps_AQGHVn`7E-OypTN+;{PTY`85qp6)p}`R@BY;{ZC$@a(^}_Emka=e75|`4_m)c2rIAOy8gFxue`O zl%CpSn~^S_+Kyj&D}0Q0%{t;c+dZB19qo49LBHLCuC2sxy*I5oI-+5Q?FR4YNY}M5 zfd|pFg8gdVRmQib>rZjt3O%>`6Y7wjVS^|6#+Uh`Ii9u1`)r#m77NxsA_v*8i}}8) zc4+}QnWe5_in^?^zGav=xMz&%;~Vs;{cZ5Se%+v-BQnscneW%f_V=(MJ@x$|eeqqZ zuJk-K>{iCT`ZPfQif!G7`RwGhNXV#RU4)zIypB#gyBH(e=X;2;(?wZ* zjpb-{ndrNFgfW>&cT6z%2+b?bF=h+d;`zqF7(M!$`ktj|Xq>L}yV(kLzuH2_j`-cm z`3cTV@_UIfe9qX8aetc`_+X4U!9aZ6&wZWY!l-epi*G90KTY?LyW}pogDe&2|JP*k zP2?(y?zRp_W%+(Oy6@NGIpye^+H68YV-Z0!G+K#PeMZttqs3XZTgS6aQ~0~as@ZJ1 zWCkqecjhGif%7fL(M#xjE`UYH5Dhu-NZR zHl!tbU%^(CxBoFaA_lN`hIwc^*kkrN>ku8aUK~2%_k8Cs@cVFj*t^nt5qs1uUGCdz zMgF&j+FoOo`eGzhW-mI-5&xM;kG;g-T?rr1HGAJ@LpH&rJLw?0X*r%ehpjK>cd-3Z|{Js0x;NkqU7x+;V=x=naj!*N@@`q_+lv(hu zV|D#LfUaG%4P*F?=sWDWL^%1hm}Wm%<3Sj>b0Wmrh#j=x^EGy?4qh+I7W~HlIiwxY zcEUjm;Fpzbc+y-UJl=gFekYS@1H|RWvGKpa;f|Sf9FF7vuzhpb`x<**y7{^PoxIN& zUFvr{H)Jj&&oAVM$yN2`IQ;pu7=v-ncsoBdTE`EY#h$0*uh-b~zwJK)$8=AG<6ZcL zgYm==-|hQT^}nnBhKAymDe%Ywwtor#?mM_lD;n1#9IwDm^o|4xfzb5BNEpx{suqQg zH$K}Q6<;F*8KdYl+b`$Rb1RMGGIKh~*OOUdPQB^Z%Ut8W-nWw1IDJU2zI|0a=G$Ul zUq|C7;NF+u*!)ud)8#ZD>s#l4V+a1F?*E9nggd-vYc%{f*YkJr$+Ddr;Mu$BfjoJ| zO!+zTc<+aF^pEtV{T`KI+H3GpWjytIZrE2P5qhI>FS571rkBsPk1LFnfu5f~CpA z>>M>Ki^RF!P@Aa^;qV%@gqy?+-bogg+o$IFkXn@^V#-I=AF0Ed{)4qni<0q^hpmD1 zng2^Vlq^hsDZa2j8Ak0(X0$0%&+>ILW8y)ze7lkvKW|PJ9`wxpY98t@OopRV{SU?S z=8TAw*SJ)F%8Q}>jo%C4-NT9a1hKT&_mP41;%7N(_GgJzZKQwgpXsJX`(1odz>Ys- zJ(#uDZ9kzdhTrfVUt;Hf#aK3oLFS_;8W+buyEZ~cHHu5{+Q^Cc?!!bF_je-xWSL~V zUk!C49g`VVCR_9OP4lyp$@ta}tjqSD7~$Du&Ngf5H>*@o6uqnknvVCYmlcG^g3b9z?IDk!ZrS@?4Y#-cidc1c;c3VqEQ(IsY@dT8TF$DMHja& z$ayHEAb##Q3f4xq_Q1T71@R?6 zS@UAIy0%Tp!ssINg~y293=yM@B*WG-m)vQ zw6ECgBi01zY~2WXq?+Pfy?>W4*+U-i@%Ss)k18$9%Q255o(SKs)h9XAeqv5r#F{Fq zA-SomwR8HJi!nrwLmk`+bx~`yrNhksl*1?-Y%S2oN{sdLc7jn`8gP768x|}8bRn>j$HexI{lH!y7YpC2?%`$fJr)gW<1d(V&CBdVoSoQ3zaO-g=^u39 zRBI>PNFVMsFFXZ4{X`sx4aj`g_3T2rZz$R;wow=fB~xI6NBGm8*`Dqhzl|?(HX8qo z-~4G!HKEt?o9~W=j?ajb8@ILdVuepHjTP=$rYO}+aa;>b~J!$tJHh5sK-i^ca|Z7yXk>yTV(Zl&DBDtU?c`M$4& z7{*z)oPNLJdt>vtdJnudc_o}n4*tFmAC@<66O89QVnbEM16viLJlo^&PD!yiG;UPq zoX;{bjh_Ou{PbV{tx1RQ|@A0`K@H_s8+}#1|qVE#3a#@U3_KG>IR+ zIzJrstrPX@`TqRMxoQ`-s*yV?cJRA3x64`QLY(fFG~+&UbA>+6jD#Qb zJAOXfev5b&8(s90v027{(yFopSM6ulwZ+Hf8Q9pdKjR@by3sFkO+Sf^e#h7QM9uc6 z(a`cBe9RUvcn^Lv#^2|jkizI`X(qyrqsJ= zM{n-E1C~O!V~yzUHfZ@ETDIqNw-j5h?{|uGbZWKEc(|HAb-;tGVR7wXU41{68@f;S zZN976H!Qjp{*Q}s*0x_UKV)}syew?p16I}2Tf(i`zI_E6v?VJ|VA*-DfnOWIqGz5* zpN;&3?rK^3@I5!e{14bxj+p<&S2(DB-@<>m^NS+-^%@^xgLA#~59aJd&u6rS=Sz9k zB62t!Rx63_=fR;L@tYdq)eqQ(XLCcRxAH=ROZ1mNlEr7)u|e)&FS*^MPs_C>`uKHz zC|8>ARF3~smcLm+9;B9-Ol9?Rm*b%tFnk8tc!u9JRZY2aPh6ONwDPQJv?T_(rA$-DBRq31U9=-(&X1^8|qJiQ9vy>2c>PBiRyPvMJr zc+xo;uGJTh_h*-$6_e=Wygn7LGf*6-SlL4CMr-F->9%}yZ42IQ*6^I3+*A{7s^W9o zu9t~vUF17{h=e_#v-K|1 zWn%GTa_+rT)Yg=<9uwS_nW_%Ep1J#1#p27ZwSK@&YCGA*r`lS_NBhctc5C&Yj(1|u z-?&vR&CPPI(OA5)R+gRI*u?#5>T4Rr;tyY8%`Umm{;)}ERoIa2Jyb${5P5%*>`yq2 zHh;(yoS|!fS1+L7wT_VU_r*8z@!3MP1>?mt9uo_@N4pX2%i}{>HfO7~Jm$-fWa7_$ zd}lJ*y|m-0^^~hQbS^G5hD_9`!dJdB5wh+~gic-f2tCD$`miO#+0p6h zw3dmXZy+!06XD_46Jg{`anEV;m9JTs@Qpfig-`a8!|Lp9Q~1^RpGku;??ju?@^5&%#yD{swx@Va>a}_5zv$5Y#{Q!- z(fCBPK1mNJjdK(9FOq91rS|C+a^SQuhlA2!b8Vc{Ke+0(kJ>4Jx< z**?_;?!5<3*l&AhES{PX3k}j^@ytfnj5EGdtI4awL_I57_W@sZ`Ip%EXJn6jy}Xn> z=--%^$ix`q`ZODO3%UD_t{y~h7s#s|g@d1@lf-axe^-ZDM|`MlA}o7U&2FaJN3>jQ zOlGVT!_F5=N}%61_UwH*kPq2HZP6a}51%ALgU`g7zI6O6aSd(I7wUohu4@00Bc5~E z7=4}yvm8I}+KGD;p_co=9~E}q?z?yW0cc&TG0#b17uM?1ov)7!ms=<%iO4V_;|ho9ahZc!*!|FdIXs#nYt z7fHZLNAts)i{!(7cl+yMw=}xDHJ<2uE{{`bNFuC7hkGW$jB|W9J}R!yxEyaa(1zg6 z_uulp_;D%vR4TyNTkx`P`oR99wl}{6Cw+`(_v6chVnJxI=uSi@LsV_I&;=z^dcEAoKIK1p+0?aG+eFyV*!4D1)t2O z*QT)%W9ee;h0$UoBjsh>vpbH59%n^GRUiI}(id!9(J6IZm&qx#WrNGJ>&^AIJ>7gY9ekEeZq7HmhmDl;%P9vh z_}0SS+8uJrw~2FA^Ubx4-zRM8=dP&;Po$l*@n;6x?~5*v!4Ct_su)wu$q!l2k#XmG z&A{{T+UCOr_@eM5e!&X)lj(HVMDfhm<+8##zWDGu`1XcGIF*5??>8n-+3zE6dSAjk zPUG1_ob@qdd>5>DGhThzm=D7TgXz6~^pxLy@$HAVx-V*6J*%*JBGhk$XKIV3ls2|} z=Y#w8=|kJ~_|llBW%;)I^|7D)S}Wf%R-7(H&H7Swc^M{Bha2*nhm&fE3kSAvo$Uej zsyCtMRB^T0@-Z_a;p}p{IvEN3zlJS-gAr^~+3}RU5$k@#2`h}vQ}Dy3#^>!8A@v&= zeylZ|y22%M)eRnN7COBxKHD09b;}RS?i1trhyEFhT`xG6ORjc{5AG2s{7g)^lyAS# zciYCwk=1(Q$@S@qs_>EHkCaJ-gC~v0X*kg}#aL=aMcDWfvR8>5qepM8jB|^fJHvh) zE{}#}d&D%@&3LAHZ?8`1Q^OdaRs*0`aL{jR$`6V)&dLo%W6^?7pItK|4jBn)J7B#G z-?c=X{7LcuT5NwieAWm*Rz@G&3b#kX%Js0*M~-boA9OqEcP>9G16G(g6J1||8|LCu z`#+5lS9r_s#jcBKOFh3ET=})JsiU8r@#*t0qkeX;iN`L{{}g@RW!%I`3O~}{9DUzp z-N+k!$6?2<(XnQ}I+;rPbfGcnX8Wpf)Q=kPM#8aUk#M*ae02%gtSj%6rbdLk{SkwM zZXvfBm*d5)*~;eGieUHEc0&;zw?&yQNS z0sYpA*-tYLH)!yB#?%%ee8tYz!|zeNP>TJz0&U3l!5CVgRngUs_r+smwP?I8e(U~h ze#n`C|HyHLQRIILULY%jT(jXN*UX_0@kq7K=w6q+<5ho<5aJbV(KoA+XH0VaNcY~& z$0$eU>5fi+{(0eGY456z z7s*C<@ua@`JkdKsbIBVo;-E!3#cmDfc=ugmdmb-dBnbz}Jq4@cD0I^GRW-{aWb&g1!< zT(Zm`FZPoe#9Lu;qLmT=!TwsOz^%YnCH z^X}Y5&fj6rxAT*=vs=|rZuX3IVk&RQ`7K}*vz>d1t{k5T3&zs36XXFi*}E0=OXjV7 zxSlY?Ly54ezZ~Mza`L|G^QrniN8jedkgv1LtKgFr{P{I<9-HLn*NRgwbB*sk<=o}^ z{nyK|!Zf;lI!xfcy^Foa@q1kJ<5Kw5bE+`hxbaL_-=6Isf6B0nsdLB8K2M{LWeopOqw_~za0@;7+4ggjhj z_SaZeK$i_I#9lh{yE`O8$2-~JF5)ncu{}c)VXjtehev3$2HA-idxEvo)O10Pw)@=;rW4h>tQ@~FO2pmd**k0+g+W-gIdC@ zjlG}j48v~+TB!$Vr=NK6czJe>teyV`{glO4PGt|`^aUN2dYSQiQvKjjbup{xfPHGc z$ncq$jm<80$+#7ki-uDbqyLKumApXSt1Lb1Sewh>tSk9#H$+3EEkC6TT}~e_evqGh zFCVr8-`KI;kMmcCh#NgZmpdNsNq6_)&vfR)JAYWa!hOvK!G@!wq0AWm|5z~rHlrK8 z{x83arg+zj(eVCkKJYyGv26Bbj@pa4e0aFA`^#d=uSUb!)!wm6ZOsZkrv3UGJTJj^ z6tF?L=W4~uZql!fVhYY3a@|Es#P2+>eimP9ax`r9uHkX9iYLWy2S(v3{pqJJzPoxK z-+4pCx$Ds6THn%&jcF~u(S)yEI~r1}iIH4n{|mZsKE51^pXtinCTLlV15)If@mukl z%GnFhA7AzQ0$-iT4~?t988^V#QRALLml?mQ_Zas_#ByJt8}Q7oxrxwJJ8ur(Wp*O; z%Q0V{E@-^Ym~Vme-{#xwNc?Y3(vhQdfOhCpwYDFs;n_>x56~%Jz&Kv4o4=2L@yWk?c)#(ztI1M5_U zf$ofiL7iZoGUUBF+I6K52K?VTkjK!Ko+%tD-nNunC*YGUk00BA(WzHDmrhy<-%dwdF*0K z=U(!?hsfP|o^=I%=bNjswP`2F;LmLQD0X`Ve5Ph0y(-Mn9G`TgbJ_Z8nQZ1%^@G#l z;Xe6c&Fy{<&o|eB&RR-e!6J%TLbVCx9giJf#s6H5*ZgkZ*>!i=x+iC-`|mPFx6%jC zikZ*}yRM-ZYSMS!my+t9ANe=>u=fJ*=uhu2lKao`4DU%Mz3WTIj(gTOumv4+aF_A6 zpIsi-F2{$zkbisuo(S~TXE6Gf{4ifjb8QNnQlUD&s>`m{VP~(!@2$lEZiUI)CjR%| z7AxD+XAjX~eG=jJUiR7CJ^1hDe(bAb3;WA;j1sSjvvK&d+d#jaPw&FUlb^$$x3eWI z-+_(xtP0J@P<`*XlrF`qZHnl1eeR%7?bpI%XxRP{bSb7!Ro~n>FZ6Tc&2l7%B9oc-W>RKrMWe0 z=?VJh?tD4wZE97w)2Unexe2k!&FWY4T$fAVy5^BL<*ezowe(y1)M)r&jQKcPk>^I} zs2WewMLnZo{=IbWt+p-U;db=!&GJrk)J^r|&>FC{b;L<4M#HWW@H=}u>)-71N%D1s zP5yw5eFMLffi~=J7*8gq;>UU9gd82QO@BTTl8&`sfzNl7yMNi1rRS={^jAc~vKze5 z_aABHUAAS4w;AZ5KYRQ>9i=0$@tc0!q7~QGmA+Dq(^bCH@1OpIt_R2&y57G&5_Wm- z#Bu1`(YCHF99e9~Q%jOZxH6O^C!Jv266E4RvOpdRr|<<|AtTF-XEr-G6Hl(Eci8d1 z@8H)@$iY$9eP#c+xC|cLwJ$$Zcn=?Mhu7KsWApLoY+EvxMIMU%yfk$cIbC7&dgPa1 z*XbcTXQX~+qTyt?m!9eH&qyd&J{qc2W{WN}zG-4#XfQa2HciDqe18LNn6asHhwpBS z4!0Onw28ZRi+kpx=kbf!unW-RjJWzAk?_3n>VBI4@>Qh6ZC$!nS4?wT$98w!*1B`o ua`qn^JiOn4)JF$C-T&bMLqfmaO;WEYzM@T&^K2~0-nCQP>uvwPOaBk_u5>E^ literal 0 HcmV?d00001 diff --git a/examples/RobotSimulator/RobotSimulatorMain.cpp b/examples/RobotSimulator/RobotSimulatorMain.cpp index 558c5e9de..3fafac9e8 100644 --- a/examples/RobotSimulator/RobotSimulatorMain.cpp +++ b/examples/RobotSimulator/RobotSimulatorMain.cpp @@ -35,12 +35,16 @@ int main(int argc, char* argv[]) sim->loadURDF("plane.urdf"); - MinitaurSetup minitaur; - int minitaurUid = minitaur.setupMinitaur(sim, b3MakeVector3(0,0,.3)); + b3RobotSimulatorLoadUrdfFileArgs args; + args.m_startPosition.setValue(0,0,2); + for (int i=0;i<10;i++) + { + args.m_startPosition[0] = 0.5*i; + args.m_startPosition[1] = 0.5*i; + args.m_startPosition[2] = 2+i*2; + int r2d2 = sim->loadURDF("cube.urdf",args); + } - - //b3RobotSimulatorLoadUrdfFileArgs args; - //args.m_startPosition.setValue(2,0,1); //int r2d2 = sim->loadURDF("r2d2.urdf",args); //b3RobotSimulatorLoadFileResults sdfResults; @@ -123,8 +127,8 @@ int main(int argc, char* argv[]) yaw+=0.1; b3Vector3 basePos; b3Quaternion baseOrn; - sim->getBasePositionAndOrientation(minitaurUid,basePos,baseOrn); - sim->resetDebugVisualizerCamera(distance,yaw,20,basePos); +// sim->getBasePositionAndOrientation(minitaurUid,basePos,baseOrn); + // sim->resetDebugVisualizerCamera(distance,yaw,20,basePos); } b3Clock::usleep(1000.*1000.*fixedTimeStep); } diff --git a/examples/RobotSimulator/premake4.lua b/examples/RobotSimulator/premake4.lua index 7eb0e1b55..0d73ffd05 100644 --- a/examples/RobotSimulator/premake4.lua +++ b/examples/RobotSimulator/premake4.lua @@ -87,6 +87,35 @@ if not _OPTIONS["no-enet"] then defines {"BT_ENABLE_CLSOCKET"} end + if _OPTIONS["audio"] then + files { + "../TinyAudio/b3ADSR.cpp", + "../TinyAudio/b3AudioListener.cpp", + "../TinyAudio/b3ReadWavFile.cpp", + "../TinyAudio/b3SoundEngine.cpp", + "../TinyAudio/b3SoundSource.cpp", + "../TinyAudio/b3WriteWavFile.cpp", + "../TinyAudio/RtAudio.cpp", + } + defines {"B3_ENABLE_TINY_AUDIO"} + + if os.is("Windows") then + links {"winmm","Wsock32","dsound"} + defines {"WIN32","__WINDOWS_MM__","__WINDOWS_DS__"} + end + + if os.is("Linux") then initX11() + defines {"__OS_LINUX__","__LINUX_ALSA__"} + links {"asound","pthread"} + end + + + if os.is("MacOSX") then + links{"Cocoa.framework"} + links{"CoreAudio.framework", "coreMIDI.framework", "Cocoa.framework"} + defines {"__OS_MACOSX__","__MACOSX_CORE__"} + end + end files { "RobotSimulatorMain.cpp", "b3RobotSimulatorClientAPI.cpp", diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 625c99d33..2d58ccb1e 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -26,6 +26,10 @@ #include "Bullet3Common/b3Logging.h" #include "../CommonInterfaces/CommonGUIHelperInterface.h" #include "SharedMemoryCommands.h" +#include "LinearMath/btRandom.h" +#ifdef B3_ENABLE_TINY_AUDIO +#include "../TinyAudio/b3SoundEngine.h" +#endif #ifdef USE_SOFT_BODY_MULTI_BODY_DYNAMICS_WORLD #include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h" @@ -1297,6 +1301,10 @@ struct PhysicsServerCommandProcessorInternalData btScalar m_oldPickingDist; bool m_prevCanSleep; TinyRendererVisualShapeConverter m_visualConverter; +#ifdef B3_ENABLE_TINY_AUDIO + b3SoundEngine m_soundEngine; + int m_wavIds[3]; +#endif PhysicsServerCommandProcessorInternalData() : @@ -1456,11 +1464,101 @@ PhysicsServerCommandProcessor::~PhysicsServerCommandProcessor() void logCallback(btDynamicsWorld *world, btScalar timeStep) { + //handle the logging and playing sounds PhysicsServerCommandProcessor* proc = (PhysicsServerCommandProcessor*) world->getWorldUserInfo(); + proc->processCollisionForces(timeStep); + proc->logObjectStates(timeStep); } +bool MyContactAddedCallback(btManifoldPoint& cp, const btCollisionObjectWrapper* colObj0Wrap,int partId0,int index0,const btCollisionObjectWrapper* colObj1Wrap,int partId1,int index1) +{ + return true; +} + + + + +bool MyContactDestroyedCallback(void* userPersistentData) +{ + //printf("destroyed\n"); + return false; +} + +bool MyContactProcessedCallback(btManifoldPoint& cp,void* body0,void* body1) +{ + //printf("processed\n"); + return false; + +} +void MyContactStartedCallback(btPersistentManifold* const &manifold) +{ + //printf("started\n"); +} +void MyContactEndedCallback(btPersistentManifold* const &manifold) +{ +// printf("ended\n"); +} + + + +void PhysicsServerCommandProcessor::processCollisionForces(btScalar timeStep) +{ +#ifdef B3_ENABLE_TINY_AUDIO + //this is experimental at the moment: impulse thresholds, sound parameters will be exposed in C-API/pybullet. + //audio will go into a wav file, as well as real-time output to speakers/headphones using RtAudio/DAC. + + int numContactManifolds = m_data->m_dynamicsWorld->getDispatcher()->getNumManifolds(); + for (int i = 0; i < numContactManifolds; i++) + { + const btPersistentManifold* manifold = m_data->m_dynamicsWorld->getDispatcher()->getInternalManifoldPointer()[i]; + for (int p=0;pgetNumContacts();p++) + { + double imp = manifold->getContactPoint(p).getAppliedImpulse(); + //printf ("manifold %d, contact %d, lifeTime:%d, appliedImpulse:%f\n",i,p, manifold->getContactPoint(p).getLifeTime(),imp); + + if (imp>0.4 && manifold->getContactPoint(p).getLifeTime()==1) + { + int soundSourceIndex = m_data->m_soundEngine.getAvailableSoundSource(); + if (soundSourceIndex>=0) + { + b3SoundMessage msg; + msg.m_releaseRate = 0.0001; + msg.m_attackRate = 1.; + msg.m_type = B3_SOUND_SOURCE_WAV_FILE; + + int cardboardIndex = float(rand())/float(RAND_MAX)*2.9; + + msg.m_wavId = m_data->m_wavIds[cardboardIndex]; + + float rnd = rand()% 2; + + msg.m_frequency = 100+rnd*10.; + + m_data->m_soundEngine.startSound(soundSourceIndex,msg); + m_data->m_soundEngine.releaseSound(soundSourceIndex); + + } + } + } + int linkIndexA = -1; + int linkIndexB = -1; + + int objectIndexB = -1; + + const btRigidBody* bodyB = btRigidBody::upcast(manifold->getBody1()); + if (bodyB) + { + objectIndexB = bodyB->getUserIndex2(); + } + const btMultiBodyLinkCollider* mblB = btMultiBodyLinkCollider::upcast(manifold->getBody1()); + if (mblB && mblB->m_multiBody) + { + } + } +#endif//B3_ENABLE_TINY_AUDIO +} void PhysicsServerCommandProcessor::logObjectStates(btScalar timeStep) { @@ -1522,6 +1620,20 @@ void PhysicsServerCommandProcessor::createEmptyDynamicsWorld() m_data->m_guiHelper->createPhysicsDebugDrawer(m_data->m_dynamicsWorld); } m_data->m_dynamicsWorld->setInternalTickCallback(logCallback,this); + +#ifdef B3_ENABLE_TINY_AUDIO + m_data->m_soundEngine.init(16,true); + m_data->m_wavIds[0] = m_data->m_soundEngine.loadWavFile("wav/cardboardbox0.wav"); + m_data->m_wavIds[1] = m_data->m_soundEngine.loadWavFile("wav/cardboardbox1.wav"); + m_data->m_wavIds[2] = m_data->m_soundEngine.loadWavFile("wav/cardboardbox2.wav"); + +//we don't use those callbacks (yet), experimental +// gContactAddedCallback = MyContactAddedCallback; +// gContactDestroyedCallback = MyContactDestroyedCallback; +// gContactProcessedCallback = MyContactProcessedCallback; +// gContactStartedCallback = MyContactStartedCallback; +// gContactEndedCallback = MyContactEndedCallback; +#endif } void PhysicsServerCommandProcessor::deleteStateLoggers() @@ -1565,6 +1677,14 @@ void PhysicsServerCommandProcessor::deleteCachedInverseDynamicsBodies() void PhysicsServerCommandProcessor::deleteDynamicsWorld() { +#ifdef B3_ENABLE_TINY_AUDIO + m_data->m_soundEngine.exit(); + //gContactDestroyedCallback = 0; + //gContactProcessedCallback = 0; + //gContactStartedCallback = 0; + //gContactEndedCallback = 0; +#endif + deleteCachedInverseDynamicsBodies(); deleteCachedInverseKinematicsBodies(); deleteStateLoggers(); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.h b/examples/SharedMemory/PhysicsServerCommandProcessor.h index 180db5c58..5dc0d0e64 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.h +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.h @@ -95,6 +95,7 @@ public: //logging of object states (position etc) void logObjectStates(btScalar timeStep); + void processCollisionForces(btScalar timeStep); void stepSimulationRealTime(double dtInSec, const struct b3VRControllerEvent* vrEvents, int numVREvents, const struct b3KeyboardEvent* keyEvents, int numKeyEvents); void enableRealTimeSimulation(bool enableRealTimeSim); diff --git a/examples/SharedMemory/premake4.lua b/examples/SharedMemory/premake4.lua index e410dbf9c..20d97c36b 100644 --- a/examples/SharedMemory/premake4.lua +++ b/examples/SharedMemory/premake4.lua @@ -282,7 +282,36 @@ if os.is("Windows") then end end - + if _OPTIONS["audio"] then + files { + "../TinyAudio/b3ADSR.cpp", + "../TinyAudio/b3AudioListener.cpp", + "../TinyAudio/b3ReadWavFile.cpp", + "../TinyAudio/b3SoundEngine.cpp", + "../TinyAudio/b3SoundSource.cpp", + "../TinyAudio/b3WriteWavFile.cpp", + "../TinyAudio/RtAudio.cpp", + } + + defines {"B3_ENABLE_TINY_AUDIO"} + + if os.is("Windows") then + links {"winmm","Wsock32","dsound"} + defines {"WIN32","__WINDOWS_MM__","__WINDOWS_DS__"} + end + + if os.is("Linux") then initX11() + defines {"__OS_LINUX__","__LINUX_ALSA__"} + links {"asound","pthread"} + end + + + if os.is("MacOSX") then + links{"Cocoa.framework"} + links{"CoreAudio.framework", "coreMIDI.framework", "Cocoa.framework"} + defines {"__OS_MACOSX__","__MACOSX_CORE__"} + end + end includedirs { ".","../../src", "../ThirdPartyLibs", "../ThirdPartyLibs/openvr/headers", diff --git a/examples/TinyAudio/b3ADSR.cpp b/examples/TinyAudio/b3ADSR.cpp index c1d1c9600..2a526a4c8 100644 --- a/examples/TinyAudio/b3ADSR.cpp +++ b/examples/TinyAudio/b3ADSR.cpp @@ -85,6 +85,10 @@ void b3ADSR::keyOn() { if (m_target <= 0.0) m_target = 1.0; + if (m_attackRate==1) + { + m_value = 1.0; + } m_state = ADSR_ATTACK; }