From 3998b0c8bfabc3153c0feadd09b9c1fbcb9bc7c7 Mon Sep 17 00:00:00 2001 From: thirdr Date: Mon, 22 Apr 2024 15:35:53 +0100 Subject: [PATCH] simple example for Pico Audio Pack --- micropython/examples/pico_audio/audio.py | 276 ++++++++++++++++++ .../examples/pico_audio/pirate-arrrr.wav | Bin 0 -> 76678 bytes .../examples/pico_audio/simple_playback.py | 8 + 3 files changed, 284 insertions(+) create mode 100644 micropython/examples/pico_audio/audio.py create mode 100644 micropython/examples/pico_audio/pirate-arrrr.wav create mode 100644 micropython/examples/pico_audio/simple_playback.py diff --git a/micropython/examples/pico_audio/audio.py b/micropython/examples/pico_audio/audio.py new file mode 100644 index 00000000..10ce5858 --- /dev/null +++ b/micropython/examples/pico_audio/audio.py @@ -0,0 +1,276 @@ +# SPDX-FileCopyrightText: 2023 Christopher Parrott for Pimoroni Ltd +# +# SPDX-License-Identifier: MIT + +import os +import math +import struct +from machine import I2S, Pin + +""" +A class for playing Wav files out of an I2S audio amp. It can also play pure tones. +This code is based heavily on the work of Mike Teachman, at: +https://github.com/miketeachman/micropython-i2s-examples/blob/master/examples/wavplayer.py +""" + + +class WavPlayer: + # Internal states + PLAY = 0 + PAUSE = 1 + FLUSH = 2 + STOP = 3 + NONE = 4 + + MODE_WAV = 0 + MODE_TONE = 1 + + # Default buffer length + SILENCE_BUFFER_LENGTH = 1000 + WAV_BUFFER_LENGTH = 10000 + INTERNAL_BUFFER_LENGTH = 20000 + + TONE_SAMPLE_RATE = 44_100 + TONE_BITS_PER_SAMPLE = 16 + TONE_FULL_WAVES = 2 + + def __init__(self, id, sck_pin, ws_pin, sd_pin, amp_enable=None, ibuf_len=INTERNAL_BUFFER_LENGTH, root="/"): + self.__id = id + self.__sck_pin = sck_pin + self.__ws_pin = ws_pin + self.__sd_pin = sd_pin + self.__ibuf_len = ibuf_len + self.__enable = None + + if amp_enable is not None: + self.__enable = Pin(amp_enable, Pin.OUT) + + # Set the directory to search for files in + self.set_root(root) + + self.__state = WavPlayer.NONE + self.__mode = WavPlayer.MODE_WAV + self.__wav_file = None + self.__loop_wav = False + self.__first_sample_offset = None + self.__flush_count = 0 + self.__audio_out = None + + # Allocate a small array of blank audio samples used for silence + self.__silence_samples = bytearray(self.SILENCE_BUFFER_LENGTH) + + # Allocate a larger array for WAV audio samples, using a memoryview for more efficient access + self.__wav_samples_mv = memoryview(bytearray(self.WAV_BUFFER_LENGTH)) + + # Reserve a variable for audio samples used for tones + self.__tone_samples = None + self.__queued_samples = None + + def set_root(self, root): + self.__root = root.rstrip("/") + "/" + + def play_wav(self, wav_file, loop=False): + if os.listdir(self.__root).count(wav_file) == 0: + raise ValueError(f"'{wav_file}' not found") + + self.__stop_i2s() # Stop any active playback and terminate the I2S instance + + self.__wav_file = open(self.__root + wav_file, "rb") # Open the chosen WAV file in read-only, binary mode + self.__loop_wav = loop # Record if the user wants the file to loop + + # Parse the WAV file, returning the necessary parameters to initialise I2S communication + format, sample_rate, bits_per_sample, self.__first_sample_offset, self.sample_size = WavPlayer.__parse_wav(self.__wav_file) + + # Keep a track of total bytes read from WAV File + self.total_bytes_read = 0 + + self.__wav_file.seek(self.__first_sample_offset) # Advance to first byte of sample data + + self.__start_i2s(bits=bits_per_sample, + format=format, + rate=sample_rate, + state=WavPlayer.PLAY, + mode=WavPlayer.MODE_WAV) + + def play_tone(self, frequency, amplitude): + if frequency < 20.0 or frequency > 20_000: + raise ValueError("frequency out of range. Expected between 20Hz and 20KHz") + + if amplitude < 0.0 or amplitude > 1.0: + raise ValueError("amplitude out of range. Expected 0.0 to 1.0") + + # Create a buffer containing the pure tone samples + samples_per_cycle = self.TONE_SAMPLE_RATE // frequency + sample_size_in_bytes = self.TONE_BITS_PER_SAMPLE // 8 + samples = bytearray(self.TONE_FULL_WAVES * samples_per_cycle * sample_size_in_bytes) + range = pow(2, self.TONE_BITS_PER_SAMPLE) // 2 + + format = " 0 and num_read < self.WAV_BUFFER_LENGTH: + num_read = num_read - (self.total_bytes_read - self.sample_size) + self.__audio_out.write(self.__wav_samples_mv[: num_read]) # We are within the file, so write out the next audio samples + else: + if self.__queued_samples is not None: + self.__tone_samples = self.__queued_samples + self.__queued_samples = None + self.__audio_out.write(self.__tone_samples) + + # PAUSE or STOP + elif self.__state == WavPlayer.PAUSE or self.__state == WavPlayer.STOP: + self.__audio_out.write(self.__silence_samples) # Play silence + + # FLUSH + elif self.__state == WavPlayer.FLUSH: + # Flush is used to allow the residual audio samples in the internal buffer to be written + # to the I2S peripheral. This step avoids part of the sound file from being cut off + if self.__flush_count > 0: + self.__flush_count -= 1 + else: + self.__state = WavPlayer.STOP # Enter the stop state on the next callback + self.__audio_out.write(self.__silence_samples) # Play silence + + # NONE + elif self.__state == WavPlayer.NONE: + pass + + @staticmethod + def __parse_wav(wav_file): + chunk_ID = wav_file.read(4) + if chunk_ID != b"RIFF": + raise ValueError("WAV chunk ID invalid") + _ = wav_file.read(4) # chunk_size + format = wav_file.read(4) + if format != b"WAVE": + raise ValueError("WAV format invalid") + sub_chunk1_ID = wav_file.read(4) + if sub_chunk1_ID != b"fmt ": + raise ValueError("WAV sub chunk 1 ID invalid") + _ = wav_file.read(4) # sub_chunk1_size + _ = struct.unpack("WAV converters add + # binary data before "data". So, read a fairly large + # block of bytes and search for "data". + + binary_block = wav_file.read(200) + offset = binary_block.find(b"data") + if offset == -1: + raise ValueError("WAV sub chunk 2 ID not found") + + wav_file.seek(40) + sub_chunk2_size = struct.unpack("n| z|0wh?bOt&Ir9)$(!BBUo57Y}93C)GJfT#CEe}P}jhNgpSA~YY|`wQ9$uICMkUQi1t z27DI^#X=3C{-C{4V0NQHE8U>3P-ig1=1^;>C3rQ3q9GZ?gM?5N_}m{_4Bdu)LfOz; z(AQ${bU37hf`C+pftC+Ke?z;WS)he*C?0ABWHJP`bmJqkc%tk%$yY5-3r#I2r7Ucf#=&ne5jhM1aoT$ zO$L%a16FPeSey1x9Harg_5>2%16KATxW5t1s3oL;j9dX{=XBuH5vUwOU>JT2WZnuW zL^8UYz@0n&K~ox^^{{Px-1Nw0ujN$*+F))KI;PY+J%SY%9xW5%>MH7hQY+N~) z!_{&zpr?_bRU!0}Tf+_E+Hm2Vn$vL+TmlDici36%D0UTljICwoaLEu3SHnk;AoLbG zl_$iGVcqa{#54XT;SzBh={4Cw`CEA(d4@DoR7PAudvFH=LT?x62HTJN&Gr9SKiC($ z(!3gS0Ts)XGsBt7R0lHETjzXa8(Gh{u_1%alFjTf|EKdGs~+nf@Gblc9nC0(&Sk^^`gp zc;R2|9p*mceBdZ_s9nLHJw88KP1VtEI+o533?n1_FMR|3pGXUp&azMo^b79>R*ikY z7Gnsuho|PvLmwe(mN+*lV;cSjzcO2E@S^P(3EcRXEKXkKTcM zLC3gDTp08WnhEE@9IQa1koHIygoAs*Fw~hHL+=YTC71hm_(kL=@?4-1)q^qyVgfR< zsXxc(@@?`@B0C4HfxoFvG|W6_maz$(k$VIEg6j}3O7lp}g*W7{5*!we7cCH76>bu& z=RY9Y6AGdPzl6`n6Y)xHC3c9{49$U$KufrBtc*#g9+5r#b9~)=gMIUSt9|o*oqTP4 z1AY5_6+WeZvwt0#6=11&#>RxQt=QY_IPMXb&4ogKs2MUB9l$H##bYNh2*>aeYzy{- zSByrZH<1a50&&B7WE?UY>5OQQTd*3w0QH6%fL$F8_F52B$erU3aqGE0Tt{vUw~2cJ z_7nm1jO22;QZ9oV&Dq%9Yz4#6PRbQ%ANWarA!)LftRSBT_EAHq-+`<^e&Bv!O#ltN zBFo84GAuBUBA7Gme5gG#igyvm`5J*jbRX#6a>YBwv5PDif{%hdjs zZoqqRTS%?9qo>R>*mstkNv)!UfvrA^tJK!rLK$xw8=2|)M~-aILGnKJnu-j3@L`@Q z&NxT3v)FC&BWzc68PQz0R+J_p1$JT~_6WHKZRHlTV}OJ@F{ha0Y#ZnX{2tkkjzjgx z1n4;1n;Fd1v8k|tw+~O@_v72}Q@k-qV|WEDMK@qA`E!IOZ=0(?LA>0i)WB;p8u@B%-6~5aV>NVv3;y}TbkGRx1P5-?4iyo=LMJ41Nj<~ z_o!j)VQ4fW<^95ZUpYVmYAihWYc7QrOm}zf;~hh z>=lv-?PDfV%gHUi1D+b!cxR~Nmi@MUvi+#dV=c0dx3#wSaU64|x`%uF_@e?1=)LS- z=o-8LS%+@o{o*BH)9@3-SmFhKffy@TF9_%NBQ_8Mq7~K)jY0;&Eg(JjgY~c{*zwE~ z`T+frj-t0w8B`iQ0BBVwI)u5(JYc%9%ed=MGx#Mu7pX!JRDt$F_n{xqkLX5JjvhuH zz_X!PPQzByGpHK!r$5>M!Pm!k)!WiL-TTJ7(_7#<<0&r)B3-$<5IYHlVH ziQOO?2s?mzr^$@+1xk?`(XP;S4Y?QAHsVS|n~0jQwjq9PAH`{5Dmsbk=z3-DR%0nk zD&ARmw@_8Qp|rT7agE9_&%~OCTJD+0ni?2R*4(YSQQ4-FseE2D(KOj!=34;G7BpAR z5AGZV$L~*kllU-R6SFCNlfFbfPccAtMVcv_u6&_sukRmvCG2eITzy-$MDmo^iEiV* zP(Q#JTlcIs!r(Re>$}-=9Ic#cN40gCrM>BsA>XjxG`7B<yJUT3jPg<4chZ+&CcPN}6OQbEQygM2;RuwY>SfMZ84bdUOiX z1nvxd<6?oW8qW(QCJVg4MvW1U<8xRG-edF_uQC3H_{u-aFUO7OYABp(8bJMXyb{ko zSB|5#JJ3=Mv|9SDZV} z-O7F4JD&dxB zE-xEL1Pw$>B+2s8s=u^9^qs;6M@B?%i>{8!h*%NQSJOcH7%yULy*q5{jQ>`LR17Mc zS!OJsR8>&>$8^g2!tukk-Ys(%IPclZ>${j28haU<8A^@)>N_}}_`5*8`Rn8hbx{$a zu~QPxC!S1r8M`^ML&$l}N_ng}RA41m^CN{{#I)>=vMD&5)08cwGx$B>Mr13;R#WGi z-xZ-1WM!Y)4W?zb824r03vzT|IeFE0%j0we?0Vn$(R6;NUnb;$~E$$%dDo7_*<2&(r#3}wHfmAS!Sj>9}y`sC52JcHx zD^G=cn>)n4+ZFBV;i_@HcOUhbJqJAd++$tMobMfroh#fEeN2F5S!5SJOpq#CB5p4E zDOoO^Av-3&sK`?gir%s;af)y#|11$g?8AnltKk7q5?8={rd!a-^btCk;pi>YEB_tO zYu6svJNHoUdfy6vr$8%aCbSMYiyq}Y!gRzB{&Hbg(FoB_(I#<{w5_~M(OG$0;gRRc z&Pomm#}RkY16(XUDUd=w176fvTM$?=q0v(Nt!7Y7X7$JFuQfyKCK$RKL(PWz&-O;H z-5%J#GvJ~7axB~v`^p!Ir^*;*PwgpPVz4YEJ!E^xp^)g1@Zc)l=AfM#lTs*8mW&ae zB@!_SDuSo6?Wnc>mEOT_mGh{5hfQdmZ@FRKX`XH#WPWaLSbx!Gb2yzDF4n^*FHjBH z5%6?gQ)0JpiZn-YT%E0*sB5F|r*{T1>SRTxcps4tx1u6EO51JY)0%Bnb(P<%%r&Kk zNtWhzi%aG^Pwt_n(w`|WxyQ%2k2&+~d+ev3Io?C`O7y+xx;iKHPK-WjZ-X%n@26N3 z7DYb{NmsX&K*RwgmmADpW*60t-ltR0c-T3D6=eR@6bhSA9IFShq^24N_^sRjAUSn5rDE znxOuo&QT3gG?bhnM#D<#si(q`VH4X{+CJJ-oI$S5t`n}2uJ6ty=V^z|all?}8)h3~ z8)%>H{OD;PkaA1Vd-zKJJH8B@)=_vWzLyv$5Q$Ln1<^~vUA!mS0_wu1GJJ-mS$Y$F zg8CL%6*v=!q3WoaG)El^T=L%lK8D5Z^ECFSQVNbl7U98y&qAT-wV)5tpLYt@foLHP z`o$ilQ>o?DcWOH|hT2T6p)l%s;9Ou~AU2R57(`#>Dv=eu3B2>D0ojSPL~rqC;qCda zgg(g_#XPWHi*%j!lk~0iKXh}0TB`rZT7y&I81WzPJ3=6SD3cvej|`mlwRDAAm8SH% z7B!11bIZt*F2&6YU+3@1M++JhIJ-ZEB}Anz=jD2Wp-;y>jrgI3Z<{oCAy_Jvky{R@kw{;PeTJKw*bNkRT#`}y;Q z9YteqyUP7FQWcPUd&dnU?)LXJo*Z&*VA#zldB{C^uP3TU2xi&|=TJ=CFR4NsNWpl*6 z`Q6bQjMw+f`P;hGGS7U%eBP2>|IpgX*2h+14YSUz|IaeUl4xmfd1yIbKiKxk(aJN5 ze908SDOf|IhImCp5&z(4@TG*6zeo5$R4xh@ofVW2qwrN&H*7UlfYo5rvHiSzXb5US zQqi~QH#8YVkyX&YY-?scJ%%1m5272=71UlTf>H*)gL$SqjJ9_+sXg7^-7(wwmy2^l zKCgd&U^QLHE#fHz&&0E23guQ!```-^^J0f4OiApTI6I*-ZdXivWO!(yu2WDq?M3wr zr9+k}juZUB3Xw=o6FBT{YAZKBtj;MLT$G&GGP^44MOHypx5JqCk`?Kd2t9+Y!<`ydbhk%+J`zajWA)6JEuq#@&sM~_I9ZB;zuGde-P_USv8USl)=xAyGc7kxGmNW4>NIuT>+aVrFf=h% z8gop|Ev>BY?5kXro>c$8flT@->w!pgE3rw`N&ZDMG^BUr>Da1-j!9n=%j0vRV?*t# z0U{j|>+fLeVQ^LUD!W!%SpKp)!qm@^u8ZNc_3hv9~MI}{N1R4vy1(!UMDR71sf-g4GOI(?P? zHFO2+ATlKzm0Hah%{kR{c`GqROy)V^kI-g-nv8_@af6tP-LWE{}<@ZZbjk=qbNp>sD$d)s(4+7nW+ z2vbOlm^vDx=LNR-&v{#T4!F;{U%RW^tv!c5-#jIrBF{RH$KA<2%{ARQ$T82JY#-u? zbT{>%q#<}a#tPCT;WE3di@cY7yZo}EO7%#)P#*}n96mqlbWCmRo;XunNt_}sF(x6h zd+7I|6cr>pA$rFDfXzVU+#Tw+uhQwMpJha97M5QtT97v@+x+|H&t>1|d>i?_?~hLZ zRcB87^EIa|?_d#AHm_<`?HSWY+j`GHY7Z2JIR)coo7M69Utt@f$HWVhdZfH)Xm32M zslDmLW<|}1wfL)fYO}jd?lv5m6cq950HivYO0}BHtEz5qAk7A^o9$xO8qF^bXmI?-aFG7_>`5 zr$ixf;R*4H-4fFi3~@OzYoZb&o`wp8n+1(fw^6*6bQYR$oc91O=eDpH7#Y);-X4hd z_wihJjH*`{H`UyzJXc;`Hmv+vMNQSg+EinNrQ90fusfH!k9lO?NUs1yW;LG4-sL{l zFQMizSsaSE(f8O2LM50gTrBD!J|^xf-Y3csJ{C;p#}Xs(U)T|V@ASZ5;x+h3{4PEd zFTzBaj`tPe!>zbeOd36$5>N%y5k?7(Lt7BvgzqJN<^7c3R6NZojac)ys#*~w&z2kz z6$lRUi}5&YF>eX)89EBt4(s4d?jRFPE%&3IU-oGhp5biOoU-zwJq26x$L1I04=6lT ztS(zw5m)W1J#0+0FxGO%LH9PFA+U`dgFL_&iYQsC+Mp{4YZTot?ps2iMuI~^@flf zDGcZW-vi9nG01sQo0 za{tL0m4oHn%MN6h9p!GCV_pp zXKG+0_l}n>*dqO|T&*3WcLe_(GBxB^Fc$o`K1&aUREKVk*c<&MZfGK$yes)@(y4@q z*sBqHgQGPTSv%2E;wn#rPD8pOX~0I!B9W_w_U*X%e~f6!Q2v$^to8By}E@M*p_ zFEfY8@n`4d%*keq3GHix;yXs6Z7PUE^ zOK#Q3-*{dVaT9B!ISq{|pOUGhkx6e7TLAw?7cYw48nr(BK=41B@$%*(KXw)RLe2L@ zx>)N8^GQR?nyVG&Qhv#lB5~o30)Iif!nK7Hi_R5KEqPn=q;zR{(@KBUyxObApO(({ zt?oFoC4<0P%)~Dj-Iq>Qh*YmsMe0A=L%It6Ody2~VXwlrho?sji5M5YJcci9=-bEpVzj_iTwa$Bi*?;~4xLuOfA zUf0a8U$Wk3WW;1B-hKWU{2j{rx8PFw;@TbN6}D53uFerouS4!QZ~xnobm*q}EaGc>A8t?67&S=TvrOZ{@#=FvSn~Z+R<)Uy-jY zRsB}4)BL6Ru5PA!Dqknb7Pzq#8O*L^-!O@E4k_^2T{-qJ z>o0SxDc+cCs5Z1VelzYf4L65bjFwyV^Q}E>k#>zE#W~OQ+)a5N`8YC@F5x236L=S4 zgp{Yeqsh>93gL$}34a%!5v~n?6WTrGkAAJM74+NRs3j!H+3vz@!t zbKiG_d`88y!=N5W7hX?1hd>2mgzo`9-d19fT$TEyL9&gqPVxtGo?@E9sTi$HR}NB! zDJ_cYihhdrifqLdxD*R5EFQmQRpqZt_Wd%U$ZwNnr zAO8umS-*)n{Kx#c{53=a`~Yt+5(gb;FlvPVp=XGzsUy_ZqW+~BGP_N^%ty_q%-7A3 zWuD~}cu6d$%qiv|^EGp|WtO$Oy~g?2+m$-OO+oYV_QFn*BeF({R>}*?=gKe21l3#B z0<~E4O0!lwFz9>Gr=X;uHrjmkZ)K8vkYu~?Jh6qB4%=BJbC~KANF%fS2mDL?2mPFX zIeCY?Oim`h`29Yfuh#R-ZF2nukgE62p03yKC@<%Y@_!`*fp#F`A3+z>ivfmWpsHws zjp0Uu{rwj>&(;xt3;K!Hh-XS>NQcNC%I3ZG71!COMx zg~>x#>1S%X%O2wI=@REDV@~);X3ZhTT=0OV;M4 zXRXL=o*A8$od3PNn>pK?hLniUYa&9qh^bNUBX@^43^@^$sa~bJtJ zm(|g+ft7xqFUwO0;*o~{9jtR+cJ_B#93LEC96uau98$+=dv|-5ZMvNZy`S@- zd!g@XpaHuBUdQ`||Hc0%SS#EkY$GfdoD!@MoENke@?Vyl_nHP z3vU%>7Uz_GsU)k-HG6AntGZXbFF9P$I_Ku^jLf1;P1cFr)RIRvDYjC7Br;t%MsZKu zIJhb#Ewm=&UGM_^6`fa?65Kj;aKx~f%?T}2f*TbzHZ_iDv@dx}T=NK(ZkN27;4w0Z zX+p+&_q#j07rXDd@4FkhA2=u42iBi9UZ{~*4lSEeGQ0Rfv8SZ4Y*OXink++Qw7}AOlBo3;o5@Sc03dd4@7EF5q^l@Q4}TBf@raemZwwe$LY&-+k%#8$# z+LmXv)eo)L)%U7DT5qn8wvM&lv^KJtZC~uQj;XE{9S9n5k71muMPSTzQ7G+8c};m(znmM(sRmv%4Kw-uHmi@u1sf!^PE%d+~%0*=;8R! ze%v1F=;wUzI_r7j^OCLT#q4M30Qxsh^VbVg#OI_|d3R-!YPtHk=8m>7=&Zg=NSjc5 zC>#z&kl`D`s)PFm%~2+abyzvm+B?eHrcO|Ky0lAi&mwb!;b_!zcMYK-An*_cmA?Iym%s$bZ4g;C=epdRD(R zWLwyhh(1yJn1-?Z*oV>Sk>1c0-Dzd5IEgp`-=%N)pLou=HaUZw-JM&Vr<`d3jelTQ z+G6Tc&7X{y3_%8wVVPl_ah&;A{b2iLr_E+nP&* zT<{@uEY_FkC%{DK#4*z8GM&7MyjC_zc2}A!p~cO_M@2!RKf<@d*TP%E&BB2~Sh!R0 zhhI&c!9%bOs2$|`m$0kow}J6wYkvb@H}7Fj3r_=2Pftsa*}cInbZ>GAUH6=woYx!+ z90iW6&ZVv$Zk0C+WP<#G3pB;X3L7Eg`$;;$Ai6)%@o$Wv8&G{1wi!NnmNp&6ldA+-LUR-(Km4kH@F-vXE1 z4%;@%Q)6M>kGc@!eA6uR3QN!WOpD0;)R0sgT~%H-xnyQ>NXd}0VO0vF)8_NuXEeMG zf<+R$Y_7tjNLAqSd}(uOr1Yb7p}>$)<|Cn_F%W* zZR|#R8RZY;1{72`N=*$7gp#{`_dGX1yu03h*A`lZL~epehlQuSl3sN+czvQ zf)=xjxqT21z5^9;JZ>WUj_J)z2AqdG>{D(wyaw%$J;Vb9!(S$tC1@ge#kUawd>kH) zGnf@i#^2y=h?T@YL^)w19uQMNUgt1=7dywhg?>QZ!55*kTs80*yRyyLF6=}$9q?tI zu=m*6tdS8huc;M*gJi(p$A8r~*4Gi(Vh6CuO?|XC*UR%w2YifXz7p?uZ;7|P5A`=8 zR|EdaCECi&=Bl7{qyvw`CJ}%0J%V$hU`ab^r0kX~S5_xmCts#$r0fYi+&xN%(gu9F zHHud9`%;~xyC}f#htEcLKu?*bR2o^~o9^AZ$AP&lQ-ny;+fu*4(%lzAHG2<4c zWjx5Sp0sYTFLVxZAN5Wo!|18(8|WjdAl?YRh+atYWTlEql|UP%v*@pc+z$&xghgME z5yb9~{wG2iS|0=}Wx{Q6F`%Zbw?x-vRt>29r@~!PSaqg$yTM>sYdBE1xyDuTy@V-n z=i@Cj*ZjD4vrcTHbr+zIa7QD{|R$U3U!cNP0kFgp~le+$fGZ>jf|^zi==0tnt3^ zVdS7dI+a9Uq|4|+`X72NeUCQKN@fbvlikND;p<30UM7}89Oj#Vt-2*D7FCGU;C%Wc zwu=RlG|4MT6X^wMp>(wtu(j?YHa^j^2(`$05gMu>O=M+86GRB4q(Ku#$en>R|!;o|lKm3Rq!h z@mh&m_Ep|YIa&2X{ZdvSsh)`wTvr$SsqpW*wEkl$z4J{LiY1Dk{R-KN`z`ZZTW(tx*W0X(9W|~zZ#@Y!-#9t)FS?s|n&(FEAW<;L zqOu}p8~usCz}VSaP!1A`H6iLiF8hPAxsd zAlr}opZhGno&FJkvt|s?R3zhMg4s_@2-Ak{NzDjcAyM+He<-;=V5YV*W4Ly(8(G4$ z15KzWhVgInMS_lk2*EG@UA}{VMle)J3a^R=ifh3t#Yitnmq>R=nu{L_+X>zh4e?>T zxd;tdmy@|!Y%-&!2UAR7M_@j=&o|jK)kQjnJ3<{-?4NACZIJzhBgWOuakyIzKfi~T%lhyLONBEqrRYP5c)pc67e!3Ib0rcQ7cgxgc-b8 zZd#zko8=zkj_{OugUP;B5xtQ4PV=bQ{y`px<6mp2Wu57#(PVU+K3d{!MUKbrb-pU{ z3l#+r^)hxlSIynyx^oV;g8k0kVQbhcToE)C*~}w|8G^2&XJUc$yY!rNwq&u$$De}- z@kSyE@CLv@Z2<2_WW2%H09-}%0sK1-E9Z4Xd%(*$Et|w#rBBeWzSHCQ;FhEK;I;{%8fgpKIKuj5}8bQD$#cZedz|B1gy zZb@^c?WHp$d&Db6BH?Jh4o^XQLuu?p<}kg4Vt{rf`P=wM_^W(n-V6}ctaT4@=eu4x zCp#|Mzu2ER6t45`UfwnS-Bcla0)C9rSUSH#7%7R9t(NytG*@0!RjY?+aLr`(a#a&$ zKlwDtM!_QN0$j@o1ADv|T@enGb!)xBGTU;|{LR!Apck02vTjrD*qVQ;=U3NPgm zn9YxE6Wxc%boLUm6Q>2+fd^b9jgdvlhRI^(%|I_3R8uvpgIeg*gF{0~f_Lf11}##5 zlphsO;&0$#a4c)3ng;UxUf(L8(6`)M<(cXE=*HYVT#KFC9oOwr`)`}cHq+k4vDVqy zJ;}SzKRXaiUu4>FpP=SQEmDna1MJKcxG}VY8_Z4N9NcKQ9a_V~!K&){B!83Oz2KYx z666!N@e|l}-oGe{)*!vnFX$XzYmCLx@$>ifLN<-b zr6&OfTRs&ESZx(_A~OlFK?i|ICWqSzwSlk0V&o*q$Zki+qchMlbQJF!ZwH7dZV{*X zHw6X48=_|7eDQjTU(!)JSo%h?OWXr+u@(r_{O2II+k{t+6v9qu6?d1JLSLos1Ui8j zGRIr&k$4WeBi)T%I;Yj~(fP(T*!{_U++*=p`!`T(mIuuNy7z&13?Ie!31UU0sHJ3p zY_FnNsaIWAniL1+Eu>bE(>Z~l>>D!Jt96aBx3!L|KT$8XHV0Rz^*Yc7ulaBvgr-iW-S}iV8%P zVjtK;a#@lrL;6V4PyASzC|E}rv9-Jz=s84&`~&xZDd+)Up!)&8wTy*XG1D5X?l7t{ z&?Rt-oKLPK50WRzxg_bI*taX5-wuzxTYuNf~Jb)hzN7%D>kg+_5JSvi}-v|yrX z71baxkIeO71M(XIUhT7Id3#Qxpd-#Xa(%&M`KS-th^E$ODab^WT}m%lA3 zE=no7QFNlDZAEzP3v+>Eg8wjEjJDw47F7eBa+5S#`c$$|VwPM28IOCKIr`aQfye_f z)v@;2gE6loFN7Wm%2E6g(O5lHPR9ox`nUOqkdFfxeV<-W52M6(w1g9U_4cK zsdh(g-?|LL6Vn&V6YF^UMTf_E(S6Um*?#2Z z*NJJVSkY9u6tFEq6+dK+rKiM$MQeqlgc-u^qWR)J5=t^c+EBVuq7^q5x`>z9BlI2o zgR5kE(LzcdP?AIZZlBv{@_qL`@crX!=UW48Y|zH(OsS3Ij6Uh9qeeU>8g70XYn(QbAKoO>LD z?L6yEQ+{pls_Esar6Wsvm8MpFuIXaF<*4$Dp^5lm(PEiT(MdI5^-j53(L}D6tpm)+ zXvGROuG^D3bvMl>+X8oUQp;XOX5%q}QsG6>2GJW~wt(X=;5XtQ z=HC&diF!)f$W)3qN|)+{dain@>at?A?4h_;K;lz*9gyvin2TmHb{^|zk8*RMaKLvM z4^89-vKjQXz(~K=Yjjy1m+g)1Y4%b(;S{)cd29VOfemyHbC310@7Nyf6NX?8(qHKc zW+8{eB}fu>o-hk4L^maRnOL4CFO$8KPLx!LS_^mcbwn92qn>BN z8WF|(Y9S^WBAcu@uKcJJD|^Y~B|(C@tHNvlSQLEkKnrWpmM0@fcCj|rgpDpwEB^% zp?ahS2|B8W!qOu<#I%d6jC&h}Eg`gIS`9cy+WP6f-dlFo^j?0b#&NNp~x5usZ zOmm~IR*op!c?;k4s?Jk$yINhny81)S<+{&C)DmG$1`NDTo-6)%x)pZ_)}jy5W#|*6 z2{I8GjV53>iIc+dk|NnEg8`ARbo@ z^z0R2)mXjp-jkk-?u)Jlt~p>tzumc>c;6BKNfHZ;2!vCEK{V{AuLA!AWk+&vp$W(s z-ebJ2Kq9^(Q>mkMM*vbM2rrG;7{P{|(oU666MTggf!og3mR@xYs~=Z(shUu8rp|5X zXKHPc)Jx4x>*A_9mHjN7o}2h5|M!WkbvauK&s0n^eQ-UX1H3EZ7s_ecZ$XG|Sx~HY zi8@MEqD0iYw4H(-;R9o5C-rN1z46y3X-)Pw?3Xw=YMFkNqOaf)97MhG$edNSTI;`7 z&U(ex%pPSQ52_U!n-A5Et%Ay47JkWf|8ZvVvajVH1?a+s8nvZ|6Z0=&(vVpE4u6Vp zorn{413poeBuVyJZdY#BMC+~udqY2j7e};-d>hd$ydtEXeyMh{s#>;Nd`&Qt7=)cb zw;-*N8OSGuMKX}LupVl}%II|9*{pC@TYctY;}OH{x|Ved>aH2qm@Zn>wjGYyt}pIn z?(yEA4sO3FnFTlCC zLJ}>piXVxmiC>9e;ZWiXFBoafy`v6v|dX!_m>$EaHP8OgvV)RlY_Utv(L+6|5VgOVB0he(Or~ zr-Hu*$At_GEef-TuZTDrF(7<@@NKnHYQ-0^2i*mxd6jF5%5wT;X@BSbzV|0N*PP$6 zs7rD0qVxHEbLxMm{%rTH_LKJ`@@319CV!yf5w*#Vi&Rf+lcYoyrP~%fKV)HuFeD>* ze8`rt0a4B3AEm5p>T0#H{eVu1or^j?Xs2&Aq{+>s(&!nXE3{6zT+9#)c_yeAv!1-> zIqKM7f52E>v$1kqSz7Vnf(5y6{-pfQ`1$6?tMAp{2mYu1H7NUj!QW+_YC4$uSw)U{ zPLa#zI`66VJq&bW_am{yf1*|VL6qpi&R((t?{xoTU*{qkAm$I9DQ zbgrCLwWfMz&G_1rb#(@>QEI+!DYT|J65acJ9jT{mCOn6?8IR@P5DXI;#SNqa+269J za=-kQB3v1xY@*zz)Tqv=a#g!juar*|-{r03-++H9kyeS_q94NL{A7%WlyT$PDtbDV zL7w*Ix@S8ZI;!j|>?>`{ta|HAtJ}K9))cVdE;&su*c0wm_&h!lxjpcT8cCPZ1KB@N z89Ecs0@<$&ehcAnaVP00P?Ix5x>T}HazlCu;DU!ybethJFZn8iIw! zhW-=MFE~NhMRP;3N0P%|jT)JI{wQ~XJXvPaln>>cJk zJsZfrnLpdx-}BYA-$?@ezO&Qeyzc7fMm%EgG+(yALtqPai{8SN0>3d7oa;T=wd_T1 zDLe*E#0C+&1dT-yK;o{7UJJhogaR|s6(7mlgxH}1 zSu4P!`_gvvbZ3+g-$|-jY3H1G~ARojQ>`mS1%8?MtEXo#?$eq z;@(9MjJO=~GU&Hzq&!cOA`TM`5xy3T5<~%nEP;;@128E%2inc-3{3WQa1#!H{ZMnd zQEeDqcdKrn@h^+Tw!&5K{X_ns4D>{R!F8eq)OWJb|HXfwTtt0g9MBzJ3;s9ZL~$p{ zWXUV>XwhcDKH?wjJ*WkZfbW9p-WR~DIL%Yxy9qBpRCq*qShzwsM)*{)mp_Q;gxB%3 z=u3DZ{4abNJ_%RCy?`(GH~N#;2y4bWi16Supps}JJvMOJAMY2FeFAdo47HG6$y{cC z0k6FjpodLC1-SsKB`_DMkil&P_%P8F@}4_Gp%#cf1K zg=dAh=!)pD_=TiU`j4zkc0jg7+Fe}6f5htpag@?;ao0PWI_En#xzrxN*9~~c(R4PQ z!Zc(y(xKEbGTp!4_sg5-{pOoQ_NG=dF!Tmlk9{M?2>J;tgksTNP+Qx9{~8xzhfo{R z9mROBc?YpPd_5n)6QcDZS~wp>1r2z8;V$fC5J7$OZtz5VmU?PEa{(XK>z@lS{n2y_ zP=WLS?Ci7jMQUnb0vSgB10q!w{WsH`>jS?*E3qKrEwPO6=4%D0-~<0N(G#DAUB#Az zSnnMFhu|)#;B*2MqPvun9F*9^cfC^>adchgJu_)P9m* z6Fh`;-jn8DmDvSoAV!o zGx^0;rki96(M{PncwYGEh`nK)Ua3t|sg#RUyMvmC?~32kcx;>dohS9k=qc*)yYtPq zW11~az8ftJ#e>?ZDrKL=^@1PxXT;7t@-J~MwDL?lYICceSNtmbShB9DF26V@J*#sj z_MiC2f*%`xPRM$f7hl?-rjO-6XBYo?x|l8D?sGW6;BPXsST_`h%@hunAJU!-y%-fA z7nX1_p(wspT$7mKsOs>|p)G?O>!xXstBuMTiWs>?dQ>75hlA*QGgglTK}mqQukf94 z*=)-!J&Y@ACsc2#Vt{6g42%h}7TQxlt<`c*n&*c5j;qvp$*Fe5xXqp|{?Alf?kw^f z%j1s|HIhiAanc`>WJwQk7twlQvQP(d01t(QqUMr#=~w9raGGzFw~@b)xuhAA5OEu! zoPQb%LoYys*t2vF^@zGbeWuiO54sOMlKZ9*ZF8ULljGjUt^NK;;V>G@Ci^gv9 z&Z2QhGF%4z2brNPcqn>`mx@u?ef%r_0{eq*gDctfR0H2~=Ok-$^Adx&w!Hdy&Bwa& zCeHHQHq^P(t?`<@`QC0oW8b?85TERJ*Lyzr{tC=x4u>WnV~OE^ z9GwGj<6YavW7}wITif-s=CihK+qP}nde%0&HPbX^lQy=K@4Vk+X1B95JDKL>od139 z`?`LY&0uc*W*lWnu)lJCaTj_$-rwFj&mQ+6*L)|!x!hUhVtFI}KH-g!d2ka_gIkJ7M6l#Vy2)vBP`I1Q9-yK zc;_A7-QKs}alSNvE^v+u!b>CbqK+sGvM>5GVhGd1gF;f!N$no;0q<&G;HJ-mEroAD zv_rl{qEY!MKk^7N6RAKmU zdASK=)3UQ$bI0a!azk1FWO!2^B&Gq?R=VI6{|k3FdlDl^{tp*K6h}Y#{jMSQ50+Nb zzs9qzm-RDs73v>~ky48&PB^mRQT_e~WRp-lKoO(;r?rn|mt(hkh&SSuc=vesdWZXZ z1x|*Mupr8TzeHKe$YFapJ$Rk?WqdbZ%0I|A@ltr*xU)EmfEUQX=s-`PJ|eLQH?T{< zKDWWoz-B_TLFHxy^WH1oi>{USRThNlK%1jArj2L(Wva8(*d{rKI4hhC*BGD}N^$>o z&+v5jj_}>}!-ES$4ln`4z!oDWqc)>+FyAmdYzOQR>}Ko^>>})H>^#gu^mo)f z6ay_nU&oBb{>9p`)!2vF7_1o`i|T{81M2~ehY+KrNOt&p=vwG#=p2~!{0_|ywFXau z72FZf`sMz80dlY)*fIDHOr&~6?nVznY+z=z6nYMN2zmrM94NT4UxYQo?sMkL-?X+rR7e`TICXHqIi4r zRdKd#uX2L+U&A!xW0TtWsP$+IUNb`BmnfSf&E-S~}{uey%}OCcB}4C4b% z?Jq#T@*MXUI|U1R$N0}A8qLZ~;yDE$<5LoQCF2wy-A#8!tpd_!ii`C8pKKr0*3$;h6~`9wTZBdu!1n2(CvSJ z6En$C$^+VW#$9%A-d4Vi_m^{-afy_JUK5$`n%WjnU6;6pOB;}lNRe04RTiXPu#gjXX>e#>i>%s}y(qw>kaH0*_5t zC~OgGk7?NIkIF%cg+R+Syt%t5-1JFQFJ3P1t@&-(X@R&-`s#wWfL6L^6qR55F^~ko!&`4!i z9&!dp1QmfZf%}2@pa;y3XGdm7vmmL^1F%MT6XGf|57h^SLqSm&Q4i2BF=Mbwz(0@> zs!4q)52#b=enu&CAnOzB5A!~?9Cr-;w!@84dwMC8`p{&C2Qnwm0#5t zG-p&q8B?^X!CuR(u~hf0A0)2Q?6j!;-H^S=-&vda$+6Sp`o(z#<6{2sy)mcb3X-m* zy~sXSu&~|r_Vf;~N=_FM@;+tsNEXE|qGJ^9f8)@aB>Ll;G^JE_RjQI? zNZN^$n-xt{g-;vc^_yywYS`7Ds$(^)8~zdRQeoRVI%|X9UvBDjq#WAns^&`30;Ti12X~d zyDV7mFZC+i_0Dnji58-9hJLr^tKz(Ly!fByktN3;|}XCuzC!?w#2>pJXa zcq@Ge0wY4bBWEED_#fmaaLbP;Tc{-rD(eng&uQS!<2~oS=AGtocsTA@_6%k>x}8!= z;t^ls$KkTEqcPjj!%;sFPhe;WAuI^wdwH%5yVY{RY&BJy`kKiWxy5Ro4fOMM&Y3O* zD35tSkD>Bs0sYmINCw0V{Rtm{9Ee(oj{o1Zli(oHs73S>%(I-I{GPFnxWt5833&;D zxKn}xZfE*DBM%hD$rRUMO#iSqtK}rXz!Wxc(izEYFU;%|73B`5@EX) zMF;YpXKqg!96y+UgLR8Gjy#IM#2!GFLvM$B`U&nycDMO$Ta|vguD7PMilBHeoi4_R zY8u%M-RgVRlN)X{b`~v=G{{e=p?a6`w(YLV;2j;XfcZ`!vJxsqEX3+adl`qgzXgtX zL{g{Zq!di*kJLVC+tX&IHK&SF1}9HT92MU#Hq5`r9nOBoD5t(4?ZEfOkdY;@yV3uB z!quL3&QaE3#=iQ4nwd(yte^CYgd>fWt&`J~H&yYPE84V{bD&qev2BwHY1P;*E~gg} z#7Fu;PawVmT0n%rA{S9l&|8^<*kbk!PJb?$*O~W$`U4TDvx=kSkB;pU?@b^lO-bAuXXfFU zV@Z?IeIUvHX^xYoRfa(=zjbPzU00(Uqzh}dsZPo!i{y3qsu^Xh(jR{s{?4q@Hyo9o z)qXT>a=8M&Xe%6w9)ul$Uq;lBT{IS3!v7ZkG-Y4rf!qZJ6NMdfI3Twca(e|sZA-=p25%K~)8J&vnNPa}`#5oYNC4OA8B<)4!(`-e~ z;M|;CLasCCdd|b_ysWg0X%Of#FG2@@JOHC$+z*NAWG-~3i0kWW=Ms`u(phNQMGrZ!8d{f6tZ*Bk)MAZQSA z0>dN}kOS0pjPEQV=P$2sOuFESpkM6b*pGtUG28hId3MfNc9{8?A)p_l_N5e(t;8IH z2m1&875N4}7WyO-4KDNZy?z(jxz%1|qX70qp82F{v}u*;mua?nlx3*ZWZh%iYA<#C z>+0b7>RS~whp7i%1QJa0 zu63cDHysZg`yF=sM%!QW@779f5507R3k{RnQcXuKJM3+s)7vdP4w{CvVa$X^%1XvK z_H1q`?+d?g%)c>q{s8_J-dqT%sa1ZSRRd_ybApSNuiCSrA z+0K|tiSg;K?8^L2Me^d3cIS&@ibVM%a(85*(jO;%j-AR~N%s-fp;ki@gX2BD9Am5# z&CiXmTKDRyxWJGdl*jE4_OH z2g6(_5edVtBP=Bkr#)ky;gQRjH5&M0XnxG+b<0-{=rFi@u19q@QGU z3XZx7%lVQF{~6Ku|IYxvLAGDcx#}*_sKol`Q9D?D)T#* zm*#5oP|EUTPW63wzrN6?!`W4NEJN^Ux-d2Y@_aEE#dVLOaXI) z9tm0T;TRNW5lv6%gq{gq7pn2Sa9?wLvF)~PvC*x=O&eN&wJg-!lho&6l{YK= z6}8pp8v@P$DVDbUHcxVG@k_#CXeBa&@!@00i)c#bTrNr=jX$3ZPY-3j$Vtr)7i1K@ zESg`GQCO0HBL|h)Ddlb4Yi?KiR)P;%5seG1dc2?VV3*C|6ITL7(kl~xqSVAUc61|2wgHy)8 z9ydBkmbxdiIcIqOlY;q$+X_Dvxbm*#@Umv6_eyC_7#*wRJz+m)$f@b%_k;~NDf&JF z2c?8>`f8mvOP97cy5*`TvWMbhqRvg5g*}B2g!h|lqPgN>(&zHts{b^_Ew2qVZ97d# z7PgJ&80E5i+66RW2y8d%U;JMEE#inyWK|aGY z5bUox#%spSCXacawS)bMbG-LO@HnIoswZJO^%JunxCKb#4<}4W@Wl0w3A3J49}`Gu z3={#_D;z=T(0y8Y(tc>+5p>DdkrS$`W-d zd;`Kmp(hbu)L^UvuOwk;cbT8L?PHH7K1$t?iOem{zgO5)bg=k9@!O)b!n=8qtO;rD z5+}r*XU-taLT5l<2D^KYI``RVmLQnjj??$izE^&cUKMR?__wBA#iLTp?;$@|{z&}U z_0O4#A9WHDL{Xxf-8SEn;TY%{9$-hhz&@hvxFvu#xPc*I2l+eV>yuxl&(D6J7gM;f zh+a%7PAKYBV94#8ou08S>4X4+Va zkoXkGLQjEzjcyDb^S|_Xo$u^1w&#|v=I$n@X_9HH>5!?xlwr;_qs-&Yoh(bOWwsBF ziS8M`jlpk`JFqF}t%PyZ^~@aZ^q6O{C*s7hYhwCw(&=c@0PIS{hNwTV&fCG=(FJw= zcE$rOk;!JY2#xFY3YAOJv8ijrvbqzsi|VE|)-*@tzqMs;3v4;=j{cV+AO?p$Mb5!= z#@{E+q4i+FcpAaI1Z;{nZF%P9>>jxVdF%7KBtzx+#tf>q<}`q4Y#;sgf*f5Up$&Q&V2?_wW2a>R+FKE&NknmRqf?|0QaY8PpB> z3#PvIFYbcC_sA6ZMf5_vj8sDV!Yl=DM1JD0l){Yp*}S}>g8PLli*^?U3k?N>^W$flW&(08G&g+BXLgdUw6^KGIMsNWzS%51-e9XE)+uWT z)|J$MYS0R|HusYjDtf6;>dXeRsmZd(KHIg>yE#xDJ`Y_9PN?OCF_dKtItRwTEWpP9 zOjr%7lt)11LyrF(+eg5Q$>k$?J2?H==U5Mzwe-7G1Z6*|kbuQDBkN$Nq8&oL{dYVu zt`qjY);VT~sj_WP>vRLhaNp3bb$)AA>m}e;#)3-ep|!+u&ZYG9^_K_FMli79sDb!= z%6vwEozJI$=cqM7ka#%$jbJ&LCGcq&;uuUGqC2EAv;a`2OrCW266YrSXG^N_T}!E| zP*&3XtMOjly_$tJpK4JJ9hy!^?kl(GjEX~C|d!s0+tQqjwTeR(gkk7dkBElg^T8y7?6 z#;``v3qTJFf=x$apw~lq-+1R~%coX{cA0Xn6xaN(uycd5j$8MkmRQ%VesE)D(*^M@ z*-zyyO;O8TLl@w5_->!;&^Py@>jOph0DwkDI=VzjZHH{82@i-Qv)uc23vQtV(-SNdI!To6rgC6m)~ z)6b;|QYIzv1;w0mv<5;YdL4XlbWw1t@46?$-NRXClbN@+4Q+{69hYnpvg-O(tuH@Z zcD(#d<&YY71G;&({G{fA;ikEVW2fg8c&^pMUZQlkj^uUpTWomDu=vE}?P+zHq}(Uq z^i3_!Y**5*sJK_*ro3xem8lyNg8YfB2b4TK7qtXBEd1Sn$+O$p!S>1IHwd+hm1Po( zFsANHWxKK^fA0KR{HyMFyT5_*k=2vy4NcdiCseOnWX2b^cJ3a2R|wFU;SW%J@NMcs zd(L9>d&DIry-F2k^vv#<>&WX^u%p17uge>lTbcDby*vexgpYT}Wb)8Y%Y%-(?xJpa9L0%Xcbfm1_&0$bO720 zA$Jeg%t3Of+E7jARk4gf#aT)jt`c1#?;p3Eh{yLl?^hPcy-g4dPvRaib(1F--CZS zex;UsM}J zfuv9f_Nld~q^PanUEbyF)Qrn1r3sG&TJAnp5&bF92hA+U!j(iFZIS5~+qg zLao6KCXJ>|V!hzbh&dCR8UHB$M!YEA9M6w`7<*9w6%2|Q%b(2K2)dWA*fy4hIhQeu zmO}YNWZ-q^WW+E?L+GJ@lV`2dW%F33n3GH+jNjVEwXJU(YrF|~Y@aO$tQ~Ax+g*FL zW3=lZ&w3vL@DbHeI%+YlhUB2#VPSYBf`xGl;sy);;e7yWI+M_bQb8Yu&Uz6pmSd%D ztEJiGHcmEprPt6g)|MQ}+gZeYEawy`yofc#(2V%UshT$41}%aC_K96dXq+ z{v;owtzjPJ{NbbGxQU+RTWQctQ`W$o(Yc(wNqJv#d*{SwjY&U~tciQf8_j%1{(-HB z=SFlsyen#bYjU>k)^F53)qGSfQ&dPxfdUIw|FZg7#pJTNfAM8)Ql6>$|@8X@|f2d5qc|a50y^&hor}^2Aa+~#4PC6 zaC%^@SL2d7`q}qcPn%JuVa8!by|LP~3EXG~T2icjYpsn2JQ9=LEuK@p69HrBOY|0O z0dfdNk0()L8ROX>xL^1x!Qr@Damd)Id?mXNolp7~dkDde4)O1I71+;P@=UF*nFejk zW6($XrJASsES=hXtMOgk%-Y_y>e{RI%qEUhs`{z_ZvO6^=-(CT3;&3I4oE;bw9d>q zoKJv9^dvDOb$7<0>`-oHKDzKu;f=zEf`9U9xihoi>Ccm1#}4M+q<<&c(1ox~A*8p& zL9q00``&U#)1)ksUyxWtXknzz4ai=7$~u;A_>*4BDsxsGt9jNyYCa`9t|R z{5vCi;9t-k@e@ghsR>LR=%vg`7@qPzeP32Ir(?dO;9X%u;he&K1(CdOIdz%*G+p9} z*x|ea)?nH*5(j@By%upEx--HL9`@Ru5v$brRo|v50=2iO`C(JMP|$d?;YGu)#^k2% z&5e>T@_;H^mu!FmANM|6zLVw|& z&H=miwdo9~dS{x~S@hOSJIvv5EOf?19dbE(GIlE7K;%)E zfO+L~?o$3P!Q8la@kI%f;uB+${5Nb0BbO|}@L}rUIL`!o$TYAuvE`|zr@F5Sr%aK* zl{^*=Y3x|{t9pCoopNgV;EIZ>K6TJ0oNSS1P3w5;D0c)X+1&7E^aK2M@^<<;_G`W@ zu3PfTbZ#~`?`wgksAs#@cC?ab?RFI3DeRp;JEtsTS<3nNWqd4aAY~eEFG3j^;deTv zmh`q(T|0G~{EcL}s1ta{G1aFkxMi5qE5Ez^=7XMxrF>TPu=?3euO%~;Cv`02FWWK? zIy45Fh?<1UBsEiCGCy(60%~GyN@fNjdr$6R@V%-ntSn3{gcO|2dy>-+oEoLcFXI=- z%;M~2yreh@^RZFnQ5YgRGq}my(;2X6+X$fljaMRM3&lG{3!5aub;9vNnUF7vG|!Sw zSL{)r*6lIuGM=_PwhLVez+2>uY=avts0+u({H?}SIbVnv|w55BFd*l4!04Z#YoPcm)mGH~RLqM_DfbT`xPnkqRFapdR z4u>}f^t0SCI|XHetAb-OLwG6dD*C?^8-6m%8}08uT@&$m2mkkX-I+uo$gEG zKcbt$Ee#{QCAy?pH zL4V>g;}o03I~TJn&X#x(JRi1XUClm_bjRj zXT4(HX3l4lm=NZ2&BMTH+n`{ZyU_&k@7X-4NX@YNuUoy75);2g^Puq z8^6~l)*Y#tQ$3=(qDEDJR8%F;YpF6fx`qZ%Ll>Z@5lSd4=nGi~xl92pL6JNq{YKWy z++GFjqE5xvihCA!FY*@@<$uljlzBESH90nZ0e>>fLrKR|km^Xa59j=4hPPhT)`6P& zp+wru7EKi1Zt&N2uRT`Q+&*+$NLeT8n?78TiYGas9tyKL5?FaR4Rh@F5^0?BV+@>0=UZrW#-fr1t_}RAH zyx;cD`P*~Y?+G#^iI6$4w}_9ZMHnhhg+Bpwh`T6yDuk|~A7i)}?-@u26|C?oik);s7!QWScw(G&37;xv$3E$6@i?@G%4}!9aXP;sRFA9ZCeuOE=IG zXkVyC3YzkiyoWr3bOS#FGZv`nH-)czciAh9*IVAJE&;w@t!QtPPPm{+B%+Hah^w1> zHrI;^MKhb)H;ok?5O0%RQXSM^vYc{14sL;FqZbe!P}qQnMdc}D_QrKiq^8)?HfJ8m z9-4bMZ&W@bzc>$-yDGb5=H#?4$ei2Fz$q(*y<7`!c{1{c~@D_LfGZ9;+Uxeyv`v>7X5_L+LYH7a2w788)9|o;%_# z4IB;!qgdE0cmYy~GGfy30m2|sC&11=L@B1SX%PA*`V_j0wwiXGnn%ee^&}j|nK1?b zugvNJI}3biNs-)eyHL+yeV{qu0>tsufW|KYPG_>;;LG;+_iy$m2l@p&h7!Y5B7x|7 z=xx|?I1I4?aJM4B!Hfgt}mxujwP!RkXYX&TN94PKIL6uEvD&+2Fy)(PUNO9+1YANZ$;}4tG>uDOQ{lb zvqJQ`X``@5V^YJ&`s{jk158*Y>MZ?N*`OWPI>M~9b#qmbI3_F zHRBF@2`^D_F79H2II&w&bs|8z#izw@i2D#*DtHJwflO`=OGq0`zKH*cZjYD@)ko%m zm0sc<@9yhNw4nA`!U8`T9-=qJkA8T0J`o1m6^xFK~3IlBPhn}Cl$AP&a zWq2^aa|dBz#3$5f3>R0A=MaAosel3CAt^tJ7Oig zCkzRF6TJ@n&X<96tRVC-crZ94SRBj)e+~;eKxPj)C=ONu&+yntx9CvF0N^J)4(kv1 zz?UKZBKiT6N-kTPE zTY%*^8cPG-Y$A1hNzx^h#dQ|IcEYOkUF&;csDi)5&I*l&hGp*64PCu4tp}uS@MSg|FO&6%fdp zLXcp(pW{t%PjY^<7upmSiJ4^HWg22yZxWiun#1Nwi^kgLe;p*(AI||_8t^%j!mA?U zXdHAT>_6alT!6|)e+IhqvDjjq1~(7?1iu@ffPaTuhr{3|Vpn7KqF)16ayeovd^T(` zbT4E}^cTnhgGN?|Az^LE8L9-HX+o$RXdC6hywLFwD_j?@k2FS=kT8@EcJpV%5+o8e z7&Q^BXc#pJ@RDAkE~7N4j_A?oZfG{z4OY1ex+mI++J)+i8i(2nbW^WTEx^H?i=KkU zU`&{qz?ZuL5Uwa#9`+rkALc2#7*!9qLuQ39`0S2*=Calv`qR2a+GoaICx` zg1vEf64ocZNnVt4E#=>oAIYPWWl8qLtqJzH0kPRJW4WzND(wZa7V`tHjbsLHy0_Ug zEf;~#GQn`Zr9oS#{-*pbcS>(b*pgF{fYcy|sxmaQbeHt9)}^M)*5S^4uOtu~X@uxt z^AIBBTQmdriLjI0leV9sVh#Yc$r)w}6V2Sl9M4K*Ph=ZdUzslYbHMj!5NY^<*js?| z#zUmQ(jY~V@u63NA%40~?)l@^x#qdxt`kn0^Oa+*V*v1$njNLipDvrb5Ab%L^G^kP z@NMvD=tTHDpbM;qYy{ay9H1meBW5A00JWqZIRbc0ucEl9naC6G>4R+5zToqU8^32NlMtYxf0Ou*fvAV}>9Ex0e( ztC$&RH*yr>F6Z3tTK-fL{sdmj7d>$T8p0A+YKK)K+AB4sR1ok)63n*zFzjWN}6 zHxieoz|*^A{+r!7_kLb}J}!So-o)Jc?3T=%=~=0}lfK7)0Zggm%q+?lTm|AqB-{7K zjxlZ4J2fRLmg2VTKcJI*C@yF|+r$?V8s9gpYRqhU*!)~-P-JQ*w%ln=Fyri#+)n?2 z$V(UpwG{Ik+X2@L_Y1dy(2>lgZDCAi9bx}u^VsuPMXbB5Gi(TVHqXP$<&|)bFoj?$ z%K|r{ez*oq5jqC>7PcF*IkF-&1N5k5o(XQd^PS_QeX@;Y^_U9)1^BCpX8vXtS_*By z?Eg9+x%}=f-f6yL{$Su)Xhy^pT?qXG`wBk@xHMw$xpqN!z)S=LU^KonJ{Erh_W^qc z^8o!5>^}{{43EOh&_|H@(GigoVPg16Xbm{g_l6FI_J`Jmric24CIUvm>M$enC-Mz2 z$a=#P;7#z8h(SmL@&)P#nug`#-s9Q>c4WQ@-YW<;UulOd3 zZ_a9JFPtpg)`V{c^|<7#WWK~Go-fumuWnx0JW8yV4pO;W{H8c3(f=@Fh38?5NULep z%qZtf%$fM%$>-AMXGXGP@)Y@Lg)a)n7WOXqFYkKJs4PmxmsE0cPD0mMJI~6Z(bf_& zP-~)3e94YN6I?Q?a09QYK)gm)rQ~TJ=&u3I z&R^GgfA>fa*gB*I9m3Y*zZ0$G6*M0sj{Si1hC7VcpZA;_!?ke&oKD>L-08fNya4wR z=LrkR_)1wxT!?E$|3H3$|Ajt^E(kjVTYUwd64y0HUwgz_WpSAonepaprhiO4(^wP9 z%(I-g4zoj@i(TJ<9(INAyFWenHFPy{05TEggik|m0TuHZG#^urxdzy>WAPl|5u*^v z#My+Ncqw)(hL66E%ti;K$=l zfQ^{~{3N?EztF!>?NR@r2&lD4Br*lKl|CTGATA;%AzMMscM#PceGyGYj{x1m$&u~8 zjrQMdy>*pJn-nU3C{l<_fVI9yHb!wmIa8%j?NoJCo|fmzHcG?NWW_;sON+~Rz&_cV z87_tW0?L~AEAe%F zk60eR1Zcyi5$B^3(362at|Cjl;kx#oYKOumdnR26xa)gG^d?zjUgM<3ZNdqni{glM zg+i@bsvWP#8&_LzGsJm;p!;*X-Tw<+d!_ zOlvuyGuM*-#~v4f1!WA zzsf&201MJXOTy;JQAl@~5B?fC3jGZ88T$yg9=MkW6OI7xtPps^3y1@VZo)bOop2qG z!Y{=Az`8Ldn9pb~8i#s`xCnm;l0X+hWsnTO!8`);ZVy1ZLCc}jU?Tw2bPe($(udTc z%D~ExLM=sngsu<&@$R-a8#($^4NW;kzD@o{k)?X9-k{a!B07@JqY0>ws17O~$^^10 z@?Xm1nsj|%(;~+h-}&$tm<@fKu$JG{}w0Ia;$Yi3qe~5(nZ!Px`KOo6*%8} zh!R9!MVjUbk^-4keo8q|{Xxq%JY2ggkN`Z3s)v=?^-G z^SImC;}W(1%brl3R$I3Gtvujlq0F`d}DHT6kR`-Z#=S958^s zxu&~<&hO48&a;5c`vo{(7uaC-b`GI)s{0jSxX67H|BJw;;E>P)pw0dOSp&l%&LCB& zU+Br03Jk!S1DUT7^96VrqG%Rya5N%3@a1qGTn&;9PD95*41n?G4xR~&_b>2$_Kx)O zyaT-tKz(q-H_A^4{0y88z68#gwrB(N0^9*S%Nghim?PNBxE=UzgjT{5ViU0==`yL2 zWF@tcev|r;b`p0HcH+#|KbJ#u-uzjHd|gtDX=OViR*B8e;Gmk6ZXw@ee|3|@?Ei5mP+*BJ}4ZGFp2 z%|g{m#aY=$NvL@*=myz^a^d)<)u12LEZHY3QVddYv|sf(CYoL2?h=4Th|p#5`N$FI z9oQ~}+vI-qwXA0xD>s?96XX~)vNyA5u=}zjtYItx^DJFQ?MD%U&x=Bsk9&^sqL|2T z@C#5Pq*r7^=)V9K+|%Bk4;qn5t z0da6pm<8@sO8|ROg3uyAqb7nI^KbM=^kMV}GzOft-B4?gdjKIQ2nv@xkke-L0 z2TuiCgY3}2kTUc(m;wsoH-uGu7)=JY|3RHEE)>y=;e~TpezCXQz(CFK=mAhjQDI9)-v)2GtA z(w*6bI6kmx82lB6L5e0Jn!sh}K08MrH!S-2DhMx&e5sozZiUsZckd#ihXW z5gn0qR6S}ba5$!5W@8=!(&1q2A?!=60oxOh3ohaY0(wF^b}yy{^k(Lx<|1_6m z2N6Z@MWkT}pdDvM(!!HMokE>MsiBUc%^_pxa#$7l0YL+*!BHe0wF8}x<$+3g58*1Q zk-UR4je3GAC(H06hq z#ZGaV1S|U@|EZLL_1~y})OO#(a1QhK3EqqJgx0|{U=P+HYf$YmU2w0!Gax{DOx;4Y zQrc0LldwtfP9$X$%kWciUjfZ)HIj&^1011dh&3vY ztO>se?(w&R+V8HtzqN~533RmEL864r$TzJs$xMgM=PXg{Vf$d`2=@|iSO1N`3vg;H z0I%>ENP8`WpFrr4C_w+n#jL?pVftXdV*BDQ;Vyt0{2aCtQ-i(_NRRyyqv4lfJlIZ< zA7F(Dz*G7!v=i(VEF1m|-VX5&5r-TBZe~2B2~m#t0f@L~5w8%j$fHO(SU(y{ft(1K zrr!}l#4$t!J{*1nqs{&VCCDu)C zhgv>r^3}^!LS>u6ChsqI$)3v|$ok9IDD28J>gn42mR5a5>l~BTigDSzU4mc3dqE$i z8X|)*pr4_W;67v;HiG{PxLln`KZ$9?TZGjFKOv6PL_SD;L(8Lgqz3>e?H+9nElBM~ zokdwn-a$G}oJhdq8?hlwSI}dVqp+wCh@-F<(U_3R+uhk@>0-QX_}0=#ht~2n>(nXg ziRx_4Qmsl5?+h11gzSnU!#X>Mm*>|@uli2)N%dFi!Zquw=2nm^ zW>!9_K3gXdwo1bqxbc!b);BMbhggQ~M^e%Tu`ltRajTM>(|={><_|2o-|kdNS_!e; z)1vzYzjF_PnP+mUFX?>3`PdPB7-tg0Pj=y^BDv9fzOZApWp5iwKU1q$dsSNH9)&}; z3ET-};ydCr$vEj-S-L{3)T*P}$$EaZ|c1gSwzQ^fbbNYT;oN2X~z? zlr);$N_LZ~zi_j)-%M^AAVJ9?v$jma?==C*v^v3spz%O!`CU zi$9G;Vost0h(=g0Bp6EbzjsNk1C0ChpS6qBXO$%ir2M1wh@_u{EHi8+n=mEonw(YMl~ z)a}#|APE6!@b4N5S!7YIFr;G;|QS zrSd>J{ckKE|CI2T)JoY&n?s+t}F zm~B?u2XCLqG{kG{Skg<{7z%VS zvnuU)%E+XL@kxSZoHiPX$VBTPM+5s^6ziI{7cDn53gsesp48fWv*~N&lZI{$qZt)EMK3}9M1)`j z=&wk(&`m$tJJ(fbpJff0&bF;Id~NBfJEZxoA}jaF2g&Y8rJ#DLP;^w+YRBl;w+=Jf zfin28{kE&dn-x46`3qfzs6u66F94sTj9g3oNx#fYWOF!sIEOe}Ig2<;I43z~P6>Ag zcRhC&=v+`aA=XP~F5?U>g<4PEPKqU72Ryn_n8T=zKx+eq{0iR;iv4h(%zeW7(w=Io zvOG6mH|;md+X8J1jeCq+j4q?uq&0s5C)OoE06}_A`x1l0!=s`{p>N@H07s`MrX2Y3 zLnI^hE8WRh!Gdzea9{i%M`s-zwfeT`v&oz1x$oWB|2RQXuB12mka3Pf>R{$6Sq zw&Sd%Bw?rBpG}30m#d^D%!288e{-+pZpw+xew0PY{wI5Kc23r_%oo2!neHrh-tPic z$?VGR4N1n2j`98z*f?T4+H6)XFHh`ND5D0Π20b=M9tUFLUgKZ3f?I>-UV)ntH#mWuCz8cz0q}QBGyxCPF0qaXO>MYyIgj>oLm`E z?Wj#`+@!5GbhqrVKXt*rrGXb=AE5{F809s+fTiPV1;@po0n^{8h*ZfVG!b*ur_~SC zZ$P?ku=-boPnE0uM{!P;Az3dPAn3-M3@k+(7*AM%gWXa%<+#A3{l0TAmVJ>||4 zJIA)!GQ`{g#4u9~L10bG&|d)Nv{++;X{^~`d2PGz`0Z-%E%c`Z`-Rmw5mF$1NKs%8 ze2$*alyMMV5&weFCn^@dme{43?5R9nF;5YzD3U*sKa=m4r^zSCJIDocg8YPRpi}^I z`wuuX=x<>)`qnDYXsd)J`8(k=Ne%QLoC(5avS$(h#HJ*TYcaG<^9~uEJ9d2w42Dy?_UxkT zIHmpGHYZx%YbHpt#FxglkG>u;UVdD(jO(K}C$+*Y{tD+(i$Sl}Jg+}dbG;HN|4`y9 zx>@-3@BF{t{yGZZ6kjNvR?e&>R4=cc(eR(3`I}*4%u7jT}iTdgm5r_ z1a}AVaAP++<_>WKt>hh}H>5h{&k~PB&nZ%$o7j9fz*R86s6fI;I(DMa(q{X+ISHc|9 zJxT_xIk4C*U@N)Ld71oDL9FOsF(w`+sgazKW=l!3#j;e{RX~=g6C>iDqIJUVf;?Uo zw;OjM#|^w%8#p@lXf}mCi@BDJTDU+Df zFYiG9rF>QXxP0RuU13G3v8sRLKH#|>j~WOvYM3>NkBM%}s#Uk5uP1bGzO?oE_Afj4 z@AkUKww`@^T<@CQ8R__>ZDmVEGfe_HEL7lK^ zXnh$-4YsaOmVGM;70)Wx6qOX+E{-eJm8Di(t!!4kvleaWqI+ZdX#3_YcF*>n^S$!F zMY{!y!+Pi|c?6?^J)D;doGA;1B++`2N%UGQlYW!=<#NSpd9Lh?ELS#Mo-3yS`X*m4 zl--t`5_!R?o5r5NECxo1jubm_5qt*U5|W}9Jbj%jZA&cy(_JGAB!QkZMKpM8wpO+( zdseJ3L<&0>b}3p?>@V3}?yF+g|Iu_a71(=w*9H;7J>&~HgVve(nVrGY37OJz`4&~K zdVZ8LdPH<=^us7Y)TPMe$W7`45u;Tv6?&OU+EQ!<4ew=~kt{0XGPMVpM2vv<6J+?E zaO=>20TMbF@N*Zsh>la%iRM*Cm0`8Mr+%5JclrAG%jB=VZ(Dwj z%52Jx&1?UM{#RbOw6L=9-{Rh7(y9*ijk;sDp}sp<0m;dnDOf7)t-J?ZW}OozHoMd6 zLOV^z3tgJJ&h7rN`{-_cyY%kRrOoUXaY+|q*G3wZ?`2=bxPZhD1S-)kPd_!q4)kmH{X$Ad1rjCU!hCW4$y=e zk2SomYgt3C{7@1b4t#a-Kls~4K?)E6_|fJ3;lhtGB|_$i8h{TXRqLW z6-0|`rAHN4RMXTYk>8>|M|FtW9jQ|=WFZyqWy5f{x&+dRHhFZ4{jp<%7L@j<`wu zNZeCgBC?7S#8X8x1!KXvyoBvwEoFUVRx+rJYxGMrK4mq$JGj&NMZdnbxa3zJ{rB5% zt}h8+Cw~+C==AGurYh%jUi*S8g>dok;;Y58N<9^qY8#sj#v;d9R0uUt+j85B_sO5A zvLd&|E=|-lBefdaR@0$Hm&&f=y34!w?V8bfdxwTLH(L}ZzKl_+A1f%bapJLpN=^-9 z2ZewnVb}fhoU!J7t+!!BU8kCrRhEih<;?OIWy{LQWmikzmi{fPsEDqvs=;e#)!%E> z16TP#>wU*Xcf3!5&JENCegwRMEuqW!OTRn$Y|9YhXXfK>$+dMQrWy3cqU z@V|C6!VRzL4%T+AxnA|5qM@um*qDwf&MaC{bi0ULvbAhmWkt=+hCkW~rloeHXHc*^ z!A<;!)|pkwoh3W~I&vAR{K!o)o8yY&w&NR#!PNolp6D|5 z`;E8Ecdfha?VOSBG;b{WILHE2nf^!xNkJV-9}NtQQ#jkXD|xN?5BLJXL4i&pGbxyxC=dC#tAEo5zGodCPAUd(}v3G@uwR$3};0`((l zCnOKfa<B z&}5lnTpfaQkok;KeuNB)xF59^2xpfiMK+Ibb*1g3j^$mBcWc*UQI8hg*QOlk_^Zvq z=4}!pqkpKx^1EW0U=1hC_>WpnJVdw!+`WVC*NxXS1M4qU2P!s}7nNNrTU90pS+rZF ztg`oIPs<$@9jmrg%W8+zn;J1~mT`7BAegu@s zYVmSF>@Ja7Wyy+V%BQMZ5i#l!>S^j>>R#$~>JRE$>XL|Ns>|{PlAz!OcRA}heLwXv z86u5F#86}SH`>#4+DUVmHD#u#l2xMui^LaU($QZ22K)xf(X>MHx7WJH>xkH*~t-s@?=z#WyC6Tc;H zPVC^Amr-ZblU3am{lL|#65Zne<~(Cwrd=oh2H(RWtWRigV4MH8x4}Kab;Xfo%eR!9 zAmdbhE8S=tp+FXJ7Yxug1SNNW*Rt)*)-jhiFrn>)8bE z4BjLDGr@BP`=5$6Cn8^8QgJ^RA zKW;TGmg*#LB6lVylHMXZn2ivSme9q}e$RVzbYo%pkAiO5u|GNA9)4Z-o&D=k=8T*@ z`PRQFC2!02S8%FMRbw^p>J~P3&=Jf+XBxT}`bDeaCCc(5wnXoWEr?s3@Hgp3^Xsi% zwe@vSbvfUa*xl7FqU)Vbo!T94`5E(p@i$s$oucW(WG;mI@Q#@ClR^N%-ADOP+8SzcEU3E(J zQ&pl$SG`i&dpg$*up`)xKrGs>E9hfx4VwZvve~D|DO=pzr%#GdZYijVSbCn}2 zbY&w-k&-3FkBYC9I7-i!@2PxQ-Knm;VTUG8-`6CwEp`0?`S(A#8@^3Sp_bG4v)*ts zgi6^?)w-y!vHcQEiFrw%Kq`89f+KEn?BVFWk^KSh{gAAK&|(_Y(u|GsUSXp z24QW3*Zu3g+uXIz)u12$(b~sy)r1&N=!fZAY3FF#YtCtQYhiuZ(8;{ZYOybKJ@XU- z=kuV@9_$2R9lVTqgv_G7VJu|-OH`a*?9)#6hhV3h!N@qYEMLB#01q9B~jTPyyLW${g50Ijpa{cuK)yteZ;HqaA*?Y0&p(= z3YP|d_#N&ecCtA`ceRmKr>ojjp)LDfnp46o`3PFQ?@J=fXcb9SyK55bWlaJd**M0+ zc5plhS{YhEc!lW57TO}_cy=^*2%jk$C9PL1SKp296-Q1eOjwt|1m1R9v^dhDTA?VC z4iUQrnZQtZl(mR4nbwYCBc2Cjv3B9{f&0E#&wJ-BJK0uY37b2ZN1OV9C(sD}D_xrI zv`(Q{7~UCS%W1$V{Nx_*D?^)yQZPB83AzP*%yTK5X~X-nY!15Q*b6no7Wmkv2DI_@wHs^u)S>mC8?QIHn=&jGq`u5*TVy#6r!0VClg5< zksWXzJd=16m|OG=7u&!aC5#bwk~k%`(lPRS1)^H58m-Dx&IRwrLB$8fas@{*R&J5r z63-UQ=JWs!L@m(|HZLsbFyRNDjBN;B^Vyt#ES371O;_r!RnM!uQ$D6FrF3BlRMNR5 zru1W3X+?+XZ?!8LsG7~X&c;=i*$$g0FK`sEL0(eYFbHfhcL8rUf3d(Xbcr!(seG@J zAJI!)slKbe6Oo|$Pti*LT51sg6~5vZan+nntXu}4o=UZlcaT0KyPyCzHI#?W@D1`D za78-lj+P+(vDiAu5@nW{rWl(HIffV`#WWf)RjOw!6I1;+%QL3DA+Rmgpu*zz=4NhJbWv@pKu470Uv-LLk8>`+Qa$P zaJ@dKBCdGrpN+X$IdERopZk9ci`SG-t{z;^*RP)QK6z zzbqN0JgQEKs)%Y9eJc7v%(}Qk2?a?LnrF4#-+FkPH?7CF90Od>Ns&F}T%nYG2D}Mn z;|oHg&_mv-?sR93y_M}Bi`m!{blGP#Eoi*k&0CKWIYh;d7#k50u|~CDxmGbuo**lesKs9dTJC4oI{Fk!4zUPipces}@JMW8XajoP z!*;k$zqD|JznWIrw|rMw&oWgRyR3QHm9pFAyDE7#(e+!JKIrZmhgs@u@0>C(H!uTa z{J)Vm(JNU7U`^a2>LDqXj+P%(>{51By;aq!QdPs1o8=5?57Bx)gSS|Ao8=Mxs$AbS^W*QgRRQjY2Qj#b{-xrC1-v1Jllu}m$ZA*uuZ9$aobZA`EAJUczR<2Z) zD5Z*FQiA9tPszSO??WLFKN2d#b-`kg`iKk;3VjZ<@i@X>LU-`HjK)5ORs`DzaKFKq z;5*@M@RYk(xni6hK@RDweUf9k^S*1KrU}>Fe^TRsVw7HeYwzxYe@5mT9*;_PJ6$ zi@~XEbND>;o|H;UWnN|Hae8pCaC`9j^9jP+;%r$+*%l;-kht2oCvh!ehenN2?UqIe zZm_mdO-K-T1Mcs0keRy-@=_B6ivl8$y-xAVf#)0iygb>Scb=7=%kHkOPmT`ub=GQg z(DcDnW*TK)Y>BXqclcd;?;A8Klp8*a%>>3(U!a@+qNf;ekuqGvJxu?6E?8^vh%o|1#d+<$vN3YKz1|AssM#-755P147m+FA2SAY zzHHBC_f6MX(8Ap1&G1(Qpzua478ptg;$dtTXa!V;UxpWj?}v^C=LRODz5NNk_TJ~7 z5|Cx<=$8f(LTj-W5CwQ6uTaO+^BG?O!~8Z2VJ~H)>^q$K;CI5|zvO%PLH-p!jnCxW z;e2K7W%Q(xD7nPha3#Jyyg%py-1Wa+nP;U-?d;(oJ5n8kocmk~Pl*@&6wsQ$wP0QF zYOqtV95_{9q36&}fqB7-&`E47p&o8VrqLg={&L?728nk{XULZ;S|}=IO_I}qBE_Jb z3n#eWo6?)6)vPOD2-;fvi_Ik!W%SBt)j#Vp8;RQex@-E+27zg@x!6);GdtgVe*p@P z4!%Iv(Jp{ogOFRv+YOSSj}-mX&!h3UJBfpnHzc=9S|9%_dUC`%*(Bja&OQ1YvJn{o zuY_ojivU9kNDh4<+{9mnw+6SPA>T=FoM*R-?7VMJwYe;6GsoCQPu5-5ZqTM`pKHr? z^@hvl0-MA6)I;%SpzQ(|(O7>E?^-}QUFq88zUY06UI}MHm84&^d#w4O+0tGb1FTEa z)bAs=MBR&86Qz#29~l!lK%J#Js`vtS?iyYUdnrANvYS{5|ADwrETIH5gjNMc`4+oK zwseq@gB$zT^{T0?;#A?4kE*COZg5`;GzE2SOw+An9a>ih?@IsoK*#W1JO(~YtR`1c z0k@x#$&fL(F~_nFu_L)nyk~-bq8VViwp_eGR0ww6eK`x6gJ@->CC1|JR$M5;(iYB4Q~F_^u98wu{kRB^GSC78K06@TO>Wosl-;V*VFWnb9q z^y?$)(#vlBZI{o_o1OPHKkl!h*j-vw!K-OmKd$j*6Aw%;_Zi-rD7LAtf&O)22i%`p z#$3S_3u=Ycq95W|aK5!FZ>sx5YhxDxao3il!-?18Z^yh*Co2YuMZEWnNXmC)G4RKv zVq}bmiLmnU=x}0aX<)VgnYWLJ>n6E6JMTDpIgZ)a*fbWFIcylHSLv2(VXa*2*QV(w z7;l@0+mf7q_X=N2lpG)gQc#ococD$2il@qZ13eSQpuOZUUB!9GFBCnJwo@EbeN|tK z`V}1;qmOPCofPF#rvet7P~KfqA;{&-VSFVIfoEZBg1~j^Kj>5W(!Do5B=-x)W9x8J zjqYJnpdPJ#RnxuZLd~bzJ@xM!XKF_oR-4b-t~hskCi>C9zv1_I1@sv?L>f;CQ^(SK zfa|IfB+YZ_6#5!k8V#X013dLa_F~RN?oaMX?oAGd&1M$Uj!~wQIw6xFE1r+#gmXih zU_szAdd6Smllqw6=k63&*wF{1t#yvDQ|RVA5J- z84#yOU{?GLGzIi-Cs0ageVLK$ft(cXe87ZWBZw4wg<^4(uH$6X{oo zXT#B+L1ug7x~i@vFAAvnCAo?`bN++Bvx~o%_N^FPy{2wkV_&UJ|J5Y0kzBKUf#5^J zWKuTG&f3OnCWOUp0A)E*nkkKy=PPEaAazdU^yqdm@iCFnoXAMk3z-HOx(KY<)TPAv zPzU^QcunX}@IY{Va8XbRd^Qu%UjF&MO7CWGN3X!k_SSmRJUiUYz!Y|c?X{(cxxHzZ zag6btahBcKs)gWxg9udA0>W4Qjj*tGvqe0jwGfG0l7#9eLnpk@ZLRuwg$Ks_mcOL&I4P( zOpukr;UG*wn&9Q|DyRl81gVHeD8;|f`^fEaE&y+J<8AG1r)=%)W_zVW>YD1V^LzzX z^%)@&?t=WpIzYU>&-{nIp3{=sotp`q*Gt*IS$$dGnXQ;N7$X=8hL(O8bTU)vi|9k? zWwidZt5gHX{YuD5q^`sf;N4~`G>l-x(!$Q*{y;}`xIYgN67qd_d@FoQd=q>%Ua5Dk zr_O!Z{oCCh&=hh#Z@^E#99fa-Sj12olo zg*n-VIqKb=ff-;4-V<3%ImQ^xImb^CeG~VWw3al9GXRg_wYZhUDxu2e$~P%&iVQ`C ze2Z+6WUsJ^W6!qvktjE$NJOK&Jt}oZrN|8*agllAUJUxJq3JT2SHX*6M{qIKu7s`P#kW7 zTOl7&N#!z5ut^Dgr%1(ARh5hwX5u}BU}c8f9LFu^q57|sY*EaL+82x$tOf=>@o z0~`IBz+tk(zYrA$q5~(<-Tscgub$yi$jVcsthR?@W;qCFaSS)rsyapKJ9oR0yzwmux4*4t)q_1 zfUZX+=zMT*YUkVJTjB2-s1C&vrXn-ROxgg3gw+I6ks17dfXm>sBvMubGGVP{GU-im zm9Ub(oBNuzoX!ECg(ZYN;U&TDpuaOPkQ}6jPK0iUl0sNuDtg~1^}YcnE1&autKa1dycgNCZiFd*}f+L%QkB!5nE8NCv(qiHPmt zNJ1cdGbl%2dhfV%oeq17?V5#QE-(%;t}?bUWtzv?HajI=4VdC3gY4N7Nzrkde;hK0#Iep1@9f~3>Hg%I z>yw~s1HXc8!WXd%_+;SUiG_P3sl@%jrWGJ(Q1(#g(KNtHgVBt%T=2JvfG{wV!C_`I zC$i46*0a_#S@a-j7GXasaGo)qY`jr@ru=H@lG1Z!jTO-~zWV7}wdtj8i)*ph1*r2E z!vEr%Au5>9ap?oVl!e6q&Hs7;Gg{qzXxV11R03T29_E(6iql4 zULUCPDqSaRKh1f@LPMtEjFD_kwl>)Ht|IS7^eHf5Jr8dIHp`pABY{$IvKtWG7XF8@ z2{}xb(oFO|%*m{_>^5NQnaKYkNET7WapK*gF~aNo6Wqb)AiJVCfFMr4*et!qt0jiVO{3baF6o- z@_zHS@+iFNV2U}64Y3|FrqQW@Ke2{PCT&7s_!yx*9tP}*mZ1f~O@RUEO5b1i4M&wV z-JE8euYapOs3B+yHPQN|rUhWP*%gh(j=%@WziIuMV)h6QnVZJl%Jp%~>}=Le<{X9< zT-R^Nqeydzc4Rlw8##x3A}%8@q8^~XW9r!^?t1<}L9$>3|1I}9JL-RiqS3@z@C8Cg zoQ(NGFF`tCt^c&Q#68zF*xAW3z<%1c!S={TwJ)?29W{=SQ{-;u8RFdwo(5?F8E}P- z$HzlgkSm~3bc32kJ3{L~dkmWLb>w;yo3xcUo%n;eiL@BBY){c{GrX)e+;*(ZbS!OY%?wrKt7`fXKd z#Mxw=vXc6YQb$@19DE+mTv#(FgcsKS9z{^ zFM@MLmcJRgAFV@!U~)Mg{q67V7yDQHuY>IJO>8tgfJ~>4WVt!nAVGarkSn+$7%Ir- zC-8^z+H$kl$$&mrNgF^d182cm#No(f(6GoQj3+P&75Ht?f_sJKg;PTc@cCr9M%sKP zsllavqgexzZjr!6IK*mjWOu4JpKGtjQJi#}RoR-UqW%p$lrGLfgLK%M>rv!Ki4U`H}E%F>Xiq8nk zgW3KyAp7TV^s*Cean>`I#g=mx)Uwmcwq3O;>>KTs_PGv||bOy z*(})&iB@ozHJD@yUUc3x#MhrK?^txB;8y`&m|8leGQXCq*jCYAZ@{I{aRL*+75*4H9oibs#1A3;s9jkQXj+!adMhWX{wnXt=K%)a zQf^yTcREHv$%85TsB7s4=4pOC?^>qY$GNAXc5EN< zDD4ZYf=dyc7RtmW5=g#P>5dRb9f=+m1H~MV>aAV^2q7`zLjGz_6hPJ;AmYwfdi6~@neK#kiT0Crhwhbr zim|(y4E*LyV74FVVu88HdG}9uTQG5ScyIgr2eYwG$N=h2Rx1CoSSVivxTc~AIO2h7 zkt#-|1yg9Ff~a^29)UkaodnytuUJ-k5_JbjfRLe)zz6>Zka`XTqR>%3q9@XM*_vTo zqCM6ytroA^R!OcrS_xOr1hksl8k*sVnQQOm>g$a_tAh(M60{A`kor?k)8{cSv39Xr zaBgsH;GJa+XgtO8&w)JVC-HyMr}7WVJrUXJ<&nE1k;t-$a^)!b3dt$qXP%KAU_{Y| zkf$Ln2{oZPD9LMeitTeP$)?u^gMP6-LLbtV>k4$mx+Wb{zfK?0A2D<=Qo)I;t)-Ri zjpL~My6;|~S(u4mBPihx2m?3^VbU?uHu3|?E9x7Xp5Bw0%}VD?=DGRjglXawX_f4h zqNnO&M1wjqN*Fyp`byMhwNf!hxShd;etV7>Th#R~-TtRn&ZeyFtXDag^V=5AC@lb2 z>HCJOO%0lQtyR~`@Y`rKJ8WNFI^X-?ag0WoO^^Z(&IZ8ZkcScMHDN4?!4U8 fs? zBiqH2|DUlllsiNG`bVIwu z@XP$fZg)>Wo5DTdR^%TvjQNHW!IucrMKi^6$tTG)sX=;DHbve?u>`m;c7pHZp;{J6 zitMAVS4Am11D|Y@XsMu>o4{VmxJf-rlEG84*MS~BhI@=-jIGl02DoUZnv^EKiD4=* zb~3Isl<7z4uj*>Fv$P4?ky^SgMSs>X*JQL*+jCsi-k&HxBnNZ`6@nAjk(($9w4?Ns z%nWuqr;am^+mAPvpC^!seu(}P?~-nj-%(6Z(pC3V$0K4R&qc|iKSr4%x2xx?TFULh zW~>ZEh89~!H*_tH$@PAJ^l8I~BOf|_l7FTCG-jp$@fE8o5I{>+*{H@j|o z{r1K#+I0rpyx#uGwbh&B-xeJC%7Zop{R>k7sZRo zjxomEh-nw|IeJv|)2PD8>*~L%5elxfv#^ZQo$-vk5MGA`15*E6580gs=nc~yCi^(B zgB@f2V=gw{(eKpWY7#eE>P7YE0Hx?`U1Ytr{xcvIRW-hCiqJy(t;TbfF^*H7#ewm7 zIr5E?!WhD)@>U2=h;~V~0IKjz)d=-~C|b;_*sF2-;)~)}#?Os=60;ymAF)tbCX1A; z0!dvf=NoG^qnJu0JK%5lzahVWwI{|o%hubHV=@}I7$+E~8mAk38L7rQ28CgTK3CTP zBq52q6T1HTmWEBnUcmVSIX=0h-gy7uz_3s>=EZ+NTal$8D?5yy#@q)OyodP#a9=MF zm5QExE2NjB<}ES#?m+Le@##O+e?30MqaYu;)q$gav2TEv9IZI?6F8}M9i(|s_1VqL*jh#qQusT)P(fdUy%mIFmWGlSNb7hH+*N{r1wA9 zGe@qy#JA+Er}q(+|S524mW-SjhJpGlTl=RpvScXHD4O9H;isT z8cUjTbl*(_?T}|Px-fi-KtOVd5^^(2f9ew2Q##12vwm`-`4z$fNu9hvH7XL1%87m- zZHPJ#rllpS$I46vO~IFENLPqA3ko>v7*EL$p?AP&QS3^wFSVqaB*xW->4yD=cLp2C zn$V07406Ld;FuujE@*FPlXPA5M-5KnDDz%R59=Q5BWuXI(UxHE;iz)TJ-Baqur+Rn z?~y0c3t4vVEdfC+kUC_wipQ$0>giFr|`B za@MlTVzUISsdkR@DcGW7-k1KB0bb}W!QPJ=ihyOH2z}&1>R!7Scp1q6Xn| zVWjYtpoO3YkSm7(a%HSwH~$>(HrN@k*bR(}v{RI8q+Fys3`4UB#{ka^hq}QrumL&+ zJtzE&MF)s(w|TE7x7u5rk$2$tqVJc#lD<`bfBq{!du2gN*|^#&O)pcHt*85!-y13> z0Q@PvfKw&C99+}Wh3NQfO~nVbgO70Z#grPQU+y)z^2hH zb9}cZSZ0}H%;U|)=J}Rvz`#FfaRXD^b&#bo3B`oSZOw^br{Go(ahJ3OAHtE z+x7hnB+zjh@5uCI0Rr_MVji^>^ELYj*T)kJU?EwQEKZfAOCQVb$Y&|a6@!$El`7># zMF;tFDM2zqR3mr>n64-{mK$JCW|0{?bcRR*eei(4jN!She5k!qn;oMeomH;Uo?l*tKOR__hX*bKE@>;k#ybyN4!+}K~^q5qbN|EQGAm3mi3o#MaTK~IVYLh zXuHV=k#xfHaMwVbubX=Y;Q2?JTN=aqFZwfv9;PFfLH3@mHr~Jf+CXCH26(G!3-;q> z0YzXr*nVvB-}83?Z=YKN?BM(0#?a6(15D@M;CY16a4fKW|3~RVyGQ@TxWJsiI>nm9 zaxn*kXStB^kv@q|r}v~6(N{BG0QS-zdJbS?zNV&A@=4i9Bus%~2nw8uNx+QnF|bc> z4tzkTpfAwN0ef(0cpp}Z&xXu!7IGSC4$sGV!Tz2p)^A#M?X0pEg{J)bd7Jaqe|pRCg=)c~`bG?C-Bmam$sChmz|XnKwh*)v{q2cO=MdbQ|T9JU%-ar0`m}?#(l%> z!d<{lW|We%po5{)zCo^9+X@S0{@3)xw99br<73t1Cy!9S#iBMSxAb z4D6&K?iQ{Soc+dtD|rNW3fM-MGmkMg)6dhmv|6f@nna7FJ*6H8ccQm22iFFUc&9t> zT7Ln@^#%PjeSyBw(AQLM-T|kKrR>Yq$*SNbo^cgi2;nGiep{7)B{wOc&E4f!*8&*lbSnLrNAkhQ6P1kGYgp z#>!!(u$F;q>?nN$Z3I>PUSh21VDruhbZ76!3?G#bHmDzJ3s@hXN`ZKe<65NFrfE>Kf*-9 zK==gl8hJc*Dy@L_lePeCHZlNbB#o3wTuq!z+)XqRCy`1>gTN+Y47r@tk~9qvDmx-R z_yIf|u7}P+L!c%?8$t}88SWD*3*1IC{j>e^{9pW;=seIpZ-;jQ38G1)ILcn?VA>F{ zH=|Oh#N)Uy;B{qKcIy}obF06VA1alUPA(HxvTNB*KMZv?t!Gv+p3t0lp7MnLly#lE zO3+P=N*5_esuil+%9nDlWTue8oyllJp%VuHeqIS&Li|FBV{Bwocysu}_=Vh-Abr)H zybp>GA4g5zM)zqK+cnG;>rVEFy??!1eJ%X?{zK^Az}sM_un+q~m;tXuULz7@Hgp^N z6Ikr6bZoI?7`|vHXx3_4=z1BaSQA_={DkmWNJL7Yo}_POa=`quJy*|7xNImW%x1deKJS*>zwVvyIqUA|p5T^w(!kbrK;S}1fggshAstBl$TmQ%|3s+* zU#S!x#Yc{(tfbta9HmSFpUh?C64FT0Y2p*4814lZLc2j~c`3ny7vs73aC|Tp73PH6 z26qQMXdm>CUx`i%R0p}?GO*#O!S6t`k-fy$fVjq_3Mm95G@m)6&ica53TUwiWIFi*buxVcw)=e^I=M2W&~tq4_?#FU8l- z{}G)Wd;`vBzzq=IAKDClSAzm;0%HLgx(Evp{=fyu4`ey~7OxHV@pW?!u%LRQW`5J= zCZ#sP(8oe?R(j_Id*P{Y1F?|2jB2K(0e{0^_5>ol7v;;<>xdca;93=QVc%06qjz4yZqaTDB< z9!Md{NI6FPL$@&?RyX!Rj*%O|hXvCF?F7sDZ9&gGk<-yE>Zm-uV_ae;Ti z!{Nzzh|m-E!Z0!uj)2zThr*XYF7CU(Be?dbqmF}xFBpelNQ1w? z%;9t4!{KXSbA23Ji*F!I2m8-|;M4F&xCVB^5E2IeW;XH}sY1>I`dkOtOh^QdorIto z9SHWoojgjFKYF6}UV7qd0zU%o`VK^9c>QT0|eC`zS1!5UUeG6DbT zXS%yOPS|@njUIboKH(XuJ$)jp0PHD?nSW`+$vk8^;V5=6yem8&%fiQkYw06A2IfFK z{7q;(*q1f=lKorJJ)nW8CG15;kqSs3h-$#bBcT0V$1JP#XPOo@#5TNZbZe)W7TPy^ zlmR-H0Ift4Nju1ml(n=}kOE%7B?|_NQ1LTK7s+Ou{%a^; zhT!o?fAV?iTUt7;50y#of~+I7#a@A2)SuwMP%v~3@LhXh46se<70M2%(N(?_?@Nye z?CcJq?ZI503yp+(!(Ry;Y+K;0H{W^1Hp$Y$oMi568D*0@H+s6G0nnkDfIKHHqnx4c zr|kxYl~h(5=O*tpNd8%Xb7PWF&X;kHGm0rn;#-0zj0K6of7slbzD26!qYAormp zLLDHdUk>jHpABb*xmbH_05$`pf=6PLu;-bUY{%LAVQDI)_b!V#zk9D@u%KEo04EodUt7W|nFEqF0PHk)C(;d}<`&j{_J_^^p;f}-!<3MR zjwGwuc!!Kc(xhoz8~=50jBj_~s_l8RQ&b_gi+G?itpyui(}l z4DbC-`a0E|tN{H}irP$05X%bzpxa&&Psoqe<@yc8hE_&$)J@V1F2~!gI6VJY_Uz1C z83Qv1KyuWaq641$ft|u{n9F}dO!!~q9eTK-xw(=}atsYE3EHCl;g!SgI;Yr1n_`&) zJOLS^CWAKEu2`Wq_=BfWv)LHq2jhCexes)M+(U zx+tvYt_J%0uloYNQqZ655NgZQ)VFYE=BoEV0Wv!{#~0^0?TU6Sf~iFlZwY_dU~7J? zI7gnUCg?%rB(|EkPBmsjfb`$o;S6mQz6o5kkr4yK-Z;HosAz@oGuc0-Z%Qd=J(WYmT)BzGF@7Hq^X_^boBykUa+Sp8w4sJ+Iu8+_&93 zJc9R-KLPYzVFE3V68np+I9%AsKjPYhHt!O5g|8Tl4Mxon=FYgj{kywy(8pGmNEHU>5zVJX?4kGz99yy+j3?z`m|O^g(@;KH6O5 zD0YfSrtUL-!v|BY8MTZzw=_*PyrY*8`N&*#l5`vLD6aTx!=|r6un+&A*jQPsr6JL{ znLJHtbP2XPXgCGqDN}vWn$YHICJ%6JI?!=s9`+Tf0o0Iq^(CC>d(@fQNWB!Y2oyLy z5J4ZW@6qO|{gjQsAw%S7d7}J9PEc+tpy^V1WwnATi{vu0OL``Km72+<@=ckj-iP`l zLp`sKS1Gl!5+{$721z%i0YKG7wP*S|v_90zJ*YnPC#VeHGF#c9hK|O;rbXttmU`A{ z)?g1Pp=fzv5K@I!sei;4Ux*^OaeQ!2B3cKtlLFyMagFU3C+uY&5Wkv3F+jBLedQl%4&!!6b9 z3C_MDBY>9TwOuu*vY$vdnyifmMa2o(tWMB}U{lFhCdyFDSlL+Bu$s9_sX%=V#Vz<^ zVEjEKo)I?Cpq)Zuv^sKWp-=FuFVnNxUCn*RUCvw8e?3@BfI3)iFPD-OzE*Iw&ki}3 z_lo6Wr~4halfr|G__rc2`_$7qiGsNtZ$^9}^XUzSBj!|4>VFFT9`-P7bZ9N-NLycX zb?~&DBvxVw8inNQ-I2;@HOz>g$6w=h@dzvp`K;UY|1_)qT;GNaLjRxy&`^&eW%M%Y z4T%vt1mF7}d4{{+xWe6}r-%2p&lxBaycPTt+#O_qzKMHq+8=*PR%bQ<+a%74*@rqBfMO`dsoCq#~| z=tMsVgt$%IDSeYe)N-0rZ;4z%|6qM^4vWXSqL<)P?WdhnjzXQK%UzX~3Ip}REd4nW zL``^Uq9WObnonW?~jRmG|$*^h8 z`PStIGr2{-A(iJ_2P=Z#BTRxFEPj@(^7Q)=c)Yfzp_{FFt z(lX2Z+t`QwMZQG0s8=8#`&@twoD6j1HVB`jWM#7&r?!%-3snNg+}?syIZZNO|5=o_ zInDj2ZD#YFYxy&aWlv=YbX@{j*$!$`=Vz>WrjBjd1H+; z4x>t97qlTteYvUJTdAZ?K<;5F#2_l3Zb7TmA!;zx4>A?O%!FRy5}bPDj1qet+~$YS z>RN{MmX8X)_LcIs^K|jVcvtxv1zf@A{4>5I&|yOYMqgP^u4}sMiR+v@)O*7>IzVyD z_;*5eaJ*Dke`)_AMOb(6yeAqnE!`XoLy?Hfkz=EBBYQ?@p-!jQ`rh=6Euh8{{jl3` zcM#zH%+nA(UpudL)^MorVNiYz#YKNAvXd-uG7VJ@*~;zX|l_>Ii>HNHO=jH0W6Pc2K?Ak2d_)Ge-NMep)g=KjoH znLQ}Sof}ag7Tx#s4la{+=yoDN&o+*+?6K8xv~VtQ?sr_Zjez8YnQS7}6`zKb)Ea?% zWt&iezt8pNe+#YTo|+qtq@EaNS#LW>h7XHMjwu_rJI)h3IHpWg4`2_ZTYni{bUETY zvOt{$x7DCv8GkwNZuc%%sH?o|jBCF8yk~^3YoIlU3d6(%=@v|l4@ixqKjLb!2k`Qz z05{(x#mGyPFY0@3gWemdh~9v&cIbK}px@E|)357^dUd^@o}xz~@AWR=)2^jQ>8V<- zHc8(Dlb;39)mC8#8*7`dS&FTQJ=eb6k?ff780pyLI0I>BPR9j%V|z^-X{l;BM^x2{ zx!3LH;fGxL~~WTQ#B0iTCtx<6pL0A&y8- z%-i_pB~wZah(n^xA^S}IiGIq6Uk;2tFXc&ejW4cT z%oX2qxAv6^vcerHMh(%I0;BRYdK2A*Zh%{(0*;gC=_*FI<(%VVC>|k1yoi_=J_u+c z_pC2X@rF0_SD1=+!QWz+F(1|qKaO9*JA*U#C0ZIyMVdjfNfcqH-1Ii~k)fh-k0GAD zNKMA~=wsw?KF3$x-J+;vLDzh9{`~x&1%tugU8gwORRr&p=DFd^4=m#sN%`swG?UQj z^M>Q5`)1L+)BM}?%XrK1lC1&MeT<#XwlmZ*#sinXo4Jqqi|M7Yi(xX;f(qcjQJ-EP zh}`Yv3*udVaPXb4yT|GB77F>}VFSE3?^i*H>$4Z<=1YIHl6VSr4AfjZOwG(I%+t+I z^K8>x(13qnPSUffVxly-XrAiZwe6~`R8t3N+mM%dGJV(RwRQ+;6OkNUHEwTwF3_8P z$L@+g8qp^7Jow2b8a7a0uul3Txw+sD1iXWRX*>ZmPPg;x7py5U~6O0wL0H3jPFj9b^&##+9gxk3{M#Ztjz(UBTVVE58%JO;3sb_|J!1 zA6I_f^?h?{xhzM)2Y20I1?h%Xj0LD7Lk?tje+^5Bl4DN9VewC6w?$0~y=0+iPOHIh z@jNITk$*Y=LQ$Ugo3I@j#jLZg4o!_*8?z<0Z|szqhS7MGGx82lVSh#Z8?hsNS*XQP z+MGdM)f)?vC#9f!PDFk`-s=*NVOx1kx3S|8XCgxJGJMYNAN7Pj3PX6w?BeI)B>)?*+O-^zCtelKq4?&8VtjPW+~o%C-GQo>VdqZ)_w#9rdd!M}bR zAB~+r?rH_f3R#yH$R*WldKCVW`rFXdydM0_v+RxRn{0cmV=Pt8UyOGQ``KGe2=k1d zMH}fhp!scx+tJsMdp2MGEme`HEB&>F$W`n$F@|alDPjYu9Rv8 z9n^Pe&9u>482F_J0|6lvpMfvHJA%{aEH(vt>nm6yIn*X3Eeq%gvU#^n}Xn|d6vRgaa{SGW-M#$QbDj}1d6CAzm3APGWyXC8C9nd7Y zGqtJj_;gg&7AcLS?!s5@9F@}0O+!LYzU*iwi-4`}9N0{w$Y+(A&ypOW&RU%a87(hli|k*BDH^&@C1 zpH5~S#vZ0E=2aGt<)Nj#<*d1_`JxF<2E$x%2t0%gr$S~M%+>eN26{f_BfFBMTH%p!|E>dQ~p6@;saaTniQ0^FQTKIiqt^3TC@!1pLBck8u~kcimkh>xV|GQfaGo~zVm{%6 zkaAjg^}0&xkC2yGG7(9=r&6hbF!R4fZlMk^0b?hd5Yi!XZ%p&J)Yu{Lm$bBxHYnH? z*%LtB)e64lAldt~MrLEV!Mr;K!NLVaJ&SG^HV5WzI(V-J_^NOfq*rP&q@{l#+Cv79 zfH%Zk`dmnS9V5OLZiC)7QQratxGbY&A?>uIG^io&*e+O?TN;@O6J=~}c*34w@36;N zgndlEA*y5lH1SgxAt%rJ?>Gx{6o` z^R4%$6w6K9IL8`ik@J$Xi}RPGl%tM)g^jf(SyRDP6J}Xy{%)#d+G?~w-oRS+HB%8Z z&>l#6_(^@HK2kKClwIi(^kb?We6q92reu3Ehs5X!%vE-b;W>Mi?nUg;+ljlqA^Ai9 z^!hgPL-K#)p3i*x@oD=P2VPhG*!A1RRD1S^f_v_;K!UJHX@@SQTA9{45+WbR4=B65 zB44>l6<8w2T<=9dnO$8-11eXKEUeVwCMu!wMtrL{^Xd8onUxbm*8+ zXP6v*E^2w~bp0B-kji;e^y?;GlK_!WW#%#x; z$enRNN|q?yxzy$OXVHJc{;}^dZD!V!xA6o}Yxe=Q_J4G3<~UuIiXsAN7v#D=8~K3k zq{%x$5Nc#B}wKH-}Sg{>3g^*sA<92wu7AEKZll>?wJ1Z%>AlseYIlDzx+051% zp7b3V{j*Bto-W969rd3P4y!dWl|0Mjv-?>eU5}K|LhXkVqMU(@;~RtT1FR;O0Z$C0cpMCfo`{m-NDSF>r>x|Gx$@?j?IHqK^A?0NZ=Fvq@;@!=k#54 zEiY`67n1GGXq>S!BO>#1=KicN*&}irt%ixYkm0I%$e0ouK zPUfGjKNG&9DK$QtKHmP6^(EnF?LULE&lTjj-v&C1tJM2wJ<4XRZ@U+IIvTQs%iXVJ zt2({v(#nP90`b+ux0wyZSb1dNh|rk^0Lf+Dtx`KEcZxrMpAIo9&h zI@0khbX4T5m^yJ);=*In!#CL1vYU|Ee1Yq2?snK2%uZdK76We~pI5(VpX-milqbnO z!qudBR8fhdI;1?qQD0GmFy6ofit;pFoPpuzhEIU*?rbUA@w6B zMOBO*6V)$b1Q05QTDluqc0XMTTysS*XZp%?W1hn{cR9KWvaP>LKct>YHJ!t1(xZ%& z^`U*LlMHF*Y+xrWci5doCH=1WE0FIgs_;xf$%1bAA$j|9s%4kRdXzaKt3uBA zyqQH_PganUTOhqi)bP|?!={1{yQ5{EaVGPfj3E-B?#so~p(5)AIaV5#PfexXlLj)D zs0F0H^Vlxf-EE)|Lrut97-0zkn%^;lh3Q02!|v(xR8|=*&y<@gN7PBW8^N$7s2+Eq zt&nGs$(AMGh5h{@;P#f6PD#;nd3m?AS~Uz&FaFcW5jv+|MqQ*q~_%)%i>9g0`Gwt6=CtMcV#POFD`h@Es}!$#9^ zOQ`L+eTK6zq;=S{a8u;g$l8&8BD#hD3_aug23)IVMmsx#u1vKg9}*GdK+4JNWmQ9> z>6iJdrK#0noobn59s+<8g;*`{D@UU{s&HV6n%qQ z@C<^WE3kEp4$u?yuno4~v`@C5w_UYPv$#zyjJwzf<{7n}Oe7{j%Gn9@I+CI{)*owY z!9yFPf7gG)4!<5$>h;OnWIDN(%peZoQP@0$)3&Os;LWuv4-^7+3qiCmae#_prZ7qL z7_tLaU8^lV^v`v<^IPWh%v_u<{#lvMWjM1J=VsYpF>OLGDVIxgCMIz*2fH=yDl72Q7lhMJE!49G6~D zX$Pp^Y>K(RLkz>CU&nrlOOH*D`W;%=dX6sC&kC!2uHw9ct@%&$vBLj~j=5TSI)HQi zlD9N?7gqzPVx#-CXSc6WaH{Z9_G-{!z`l_~H|moWqnIB&0jZ=t{5^s@gy%|IbT>JM z9ck)ksc$V~9cig$eq!uv=*&K1t}xN;d-gEskDNw}fo2+z7&u)%${$1$65uO?2CM)X zLfoV`87`R0Sx&;+vmCs(Z>eVZcU_0KdxE%0AcVnu1+H}<*IU6oy{K~moj*74c^*~} zUG&*i)fdK%gkJm@<|k``f-cB-=&{sCVizuA_pw*N&@7Ah#3$e#@FHv+b`)KQ)Yr4s zk4k^YHI3EEA*Zncu=F3d}cCEMaZ&@^NO(hb>&xRLtkK;S68LP~&N zW|wwJeWVo2BY}KTPF@c0wW`cex2fgS5ZLM865NpL281LZ;=Ae1_df8IhbgXA=n8Yu zvf6xoGEx$~iuQsG^r^%RNNwuHbYQo z6EXM{tQBmpOXC{s(^imKkRT<4B6L0xi9ba*A(i#5Dx%Dl81Y|zBo`jM=TG!)_r`l4 zd!~b?tfCk5>ArG-{lOl51yPZ1D?`A$`WUE|U%_?%4jG2zfO;lL(||JdNU7m#ca!dD!eWfL`T|EjvwHtknPb2@MI2vJZLltm`9SxbYrY* zW3iEFF|r1BXRl#9{zcD*ZhtFc1g#Z`?ZXJX8Dy({#77V``I#)BDlvoDZid^CJx{V1 zsF`?oJyvQNDCg>x7n%7r)%|n#j|V?$|GJp!P4AO^Fz-a+7}p)oV_$AyI)6x-s3CYe z=99U)(;L1jdPZ!g*qCT{SWEk2Ls$Hu(t@AlU+BH%{q4v3EmCc5J}Tlp$d^D!cuf9+ zO=%+2!uZ1S!tpe$S=7~-)Yu-tH@+JlbksGA)Gfp<>A|i(lc$CIzPkqO+#-VexnX=4 zz9)Ap;0MLh2oL5t=BekK8X!Q?u|S@q^j2c!96=6pzDAy5u8GB0ikrE0?}Xq0@uDiD zIgn^I-I!$R0B7J8*2(On&XVIvk<6t$^lhe?>C8x!iM)!9MV4v*t5ebxQO(zHg72!5 zp{0ele+d~EwmK{xvbLI8-x?1w8u<&ahHXV|YX?CScaRST2KhAio8rq*i&n~OncE}x z0+9b&x_9{N3-c9GpMVwOGr<2$5wjq{^a1)A5=GzW0eu9bA*0ce=r81hK1-w3yRiHH zBF&bsDwDO9h=A=Os{o&lGhQ$)HLW*dhE~jRY7%(}xD_3VF~kWXK=dT{L4W-Z%=s|l z4mJ!pigolCS_UYe`amXL1#AuW50H0zqObLx>QCuBe=CsSJK)K7x9}u+yZNUDm-8LO zlhRtqIb5r7N(c41x>7r#S3>>RFX9f>m1zs<)iLY`I-T5%*GC^~yA)cElrD-sF-J;N zT56q;;aEvxIk|%xNq?X_GU?1Bwgqg!>zgW@6?1#oRy8$mGe)viC{lxS!}5i0(aONob-eOYzA2vo6;5qE1j$8`;B1P8Gn2;8V2Pk2 zIfS<$@(2%Ur1R++OeDLGjfXC`F(nXBaq!0>PJOUOX&tlzt&_e|FNt(Rn`3*i1DJpv z#AgyZ(HXp%4(bxsi}usQ;r6S>T%eyp&ir}&5qd{|tyWj^B&#$NI4)(y5~3IOkSB%m z!U29EuxqLd>x5X5k!r$TKTLh1HqZuY^|UapP#vW1RdhK|{wi+#s{T^0s8?a0 zHU_zelm*8|5!w>F1?T=Myexr|*C3@FCTo$1A<4%Mmx}jrr~h+mWi4feFY{=4V@strW9?9 zFwSrGoN_gE&-Q)@tP+alT&+E7#UsJBluYJRh0HVKRO@AD+lY5DFG?hr&MotI8B-}L zZU^i})*1^5gWgwi@->3{0=__YFoMT~Ho|vaD~fU__%egH#o6k6WIS$zWM+g~M!qE)!ajch(T#jd ztzu+0-4FwLul3oQbRkiQHAHnF)@;z1ArrB-9;L0ga~gFQ8wa1*piS;`*7>u z=A*_sh9}@!4KcR)}ni*&*}P#>A| zhIHdaV9k9t%jOr5P(0FUAfi3_}&NH0EHUhh~P&=&M)Z$<(w-iZ0 zf1;J)jaURpxka!?cq3Pp9tyX36Ku`*ac8;boX(BnZ}TGG9$XqB;#pvb%mhMLN$r^4 z4K0J8C-#y!RY;a2Z{m4q9=ug^VfWis`Xv4oTSLl%OUBfO+EV>0@(wM)+7quKSGky3 zZiq3RFqg2Fx81d++veN;vL=}u8aFbJNF%-wsj9UG4c-zU3T5(Z`EGn?eldR)2w^vb zXCfyxQI@JNwVg%WO#ybHpA}8u%wVC|;$z`j7fZ z^{G=p74Z;q3umH>usL{NqLAo7P9c-Xy5xDnP9)-&F$UX@Zbat-k#HTtB46~2dINos zc0g^QW+^?CBeGvQ4tkn0paQ6`yinSxDe5{6)jR9^bx9uvT%18@S_tY7hZ_7_ z2=(hW;uBs78n_o|eRLu6STCX9){;P@xJ~V?Hc=V%w{lA9to$dpk}pVAq@Ut-=%RLm zrXf)rCXN*6L!S8q*vk%+?n&k3xAJ*msP9 zQ}Y^r7yp9~B}8HoRP&vwH;`Dok>==$;AmLD^ku?tceGx$ z^|D{HeY9xCUQ9YZRqHNP^_?qvnY$vh$DbvszkfGK?Ut7MXJE#+%pTdPIn(oc7Cb77 z^h^v~5O3&hsSl=mj(*{BQ9q-OMXn6nV_$7-NA}cXB%GV)-|vg{p9p*c?|q#79?s}g zZ7S$ri_w4O%>(DmaQ+zR zzTO9`2WJIV`>Xplc}lxmxxB@_UFY2%Z*pJi zPjU_QH1bd5u8JF!-7p<3iJ*`voS=_|3TY9Vh;JuX&?uYE)-zZPP=zvIs7mB09OfAa zju;RNS`}|jrLxn^n{DqMB|^xGxP*Ly@o8Cg=)I8M00DEM2Uftp$)_{nWh9JkLDQ zyc9A!8kz?I+I=&qFkX@e@C3B1{zAo7moiTsqm6)Fz8@)r<|1v74!{a`DVybLK+9!> z_WTPjnft&+^1b<;{62mHUxt6lwdTxR9qtMDnO`YR2hP=JJrnH+&;LE*0-@rm*m^V! znW1^Xjg=>jka~eK?Y%53)qyPa89^Ys_Y%IBSWj-Eis?P zkeEtj;^%<(y-5$MiApo@E#(5ucDcAuyd(Y)Jz^cuGg#z<@+_cj+}Er~8?+r(11E@6 z#2~VO>_`D+jA~3J14Wz18N3b#WFzz=@*ZK){b(I*33d^CgI&YMVlmiZ)QO%(W+6j? zk#GblM5>|fQ3_pvB!dHJyShS|Ctr~oNIr49=n^^!T?D_dLaZj%6x#B++&3hDEq|$OZg5%sSJ2&&V2%GBfB()LP;;rXd4#P^c=8 zq;=vB;Va*hFU=3&Q}`*uEddcH!ugRT-Vi?WW~ieN1-AyK_@Ni}p}vFAAJZ@qc?5K~ zoB)vZ`1^uG8Y8b&)~dg?o1ln{g|oFcWrjJs_kUUivLR6hAB(t%)HN1&KhsI zV_d_uA|`3g`A_aj`R_BQr)B?q^F8@H`t$d%W2t#*NB`7FFHTR(C=Cm(R{7V9|MuS$ zdE^8WW2+xFFY0NG7Ly!BgelgZ?0)QoqVr_%ArRUe+)!bnlrIzN1@);qO6?1u`YhxV z-jz9P{@`pF)x5-@vXv@!ue_&npyH}>^Gc41ei{;DNug(BRWuXm{Nsc~{t0&@*gY`A zM|=7gTMM`5Bl*koD;8cZPWQ|V@O-uuP}0?h>ON(ew2L1TnCvCp9gBw)%`AFQoaUYi zT8ufoS*(MZ3mwwA{W zUxF9?c3*-w#(Tp1!nY#u8k`^wbs{naF95&h877gfXb3e{H4TRC=q2k-+X--mc^p>A zTy@$d%OW6@_NPaXKk&O)1m;2=*leh{m*Y?HXW+RQh6%`U{Xca8ys0y#m*NPqAH1s@ z#UqdfzXsl$u23I;;Tmybuq>Q44|!VLER}#a_n!6zrVBNYB~X*A%38UVR2OQ9uEHH* zBP5aTfTwdPcmbzs;rciICh`J&(i#y$4`Lq}YgzW$PC`5!9$Gi_U`R*j5WC5`)?_kl z0~Kx#W_1SW!x2AHC?S-bzR$BL)`B@pL}fa8@EolDcx7&(S|S!8Owe)%H|AE!0&Yo zcHs8Ete?&OOh$u5wIilsogrDmrMJ@E+EaZbnuA@&Pl5vQB4p7#F@3Up2IBs6=ZTPN zq18fx)#5zv2-<#FdYL)`_iZrva49uk`YD9)DWFGv8AuIq0VU8i7|T`TTM13Y4$?X~ z3*5>pv{TwaZM9Yv__93|7ShArd@}blST{I4kmRrGf9&T2^|{6TC!v=VlqUeKI7@e+ zov~+lV={rd0~)Fb+C+b&22fAPZlsl5PTU7I?+;AEN`PnZ6|MkHYXiNV*~KOrFk^zT zwy}(Hjd7vrlev@iJ2=754jjiZK{t0sSS(4hS1C|e=)ckZL^j>bw8wrt{A29G(iJL9tn8{%t4hO) zE6bdUs}wQLUfXD)I$-XfxE<|@w~{%N7Q`n zAZUorsAl;D|J47(-LdFp{?)wF`TrHvDZcCO?z<0J8~6EL@Tu>>a)dHMoT#|87;v4GjO0(EV) z)*o2TebkQXJ$0>?q}N88AXfdG(p0(%xgmCc53l6@?y|Uk7Eg4co?h_0rts&a3Tin$ z1-dj5KTFo9`vSeTgQ1skok=xUvXZv`Hmfbd`UMip`Wd#tG-nLihBycB(nfu+#qf*NAjon=|Xup=}$`Y z-3>kiK79!;2OJZN#1f!&X|FBQS0Lrk9%xPUJ5(|(B7$Gc1`50fY5E0yvED*2 zqelSYZI!O*yO9xSPplR007lvnlA@MU55ZU60X%k*cN6#_!`R z;ZN&9O;iWoxfxhlEQmfs=YewY9kLigrJm25=5!21K`YnA3x>nU}`9o*vo`BsCK z11bImfg8bD{40@BmZ^%?7f!SD)KR7fbTXqL6>*_$p}mZK1myX)gt=c58=wvmv3Naf z7y1qPqbqQ8R6#nS*Wv6fjn4y3{C(J!=Rlr!eZxvaTO(>JFt#vGGYn=WdNkFB7=rH9 znkr?bUV@K%7Ay$31FeF+!I^b1_$a6auXD+8&vpRP2}ey*vZ%)>+a;nDcZ2r$Ym@6!seH4sOGe#5y7r?u<-QA|t7I;3keE z{cvk6B}x+i;wA9oK=3$@PC}2PDq0U)2Rh9e#6oZ#FQrORiDWj>lvs#6@mt`;wbBN* zmyxmbvl;DctUF9HbCSUI7Q!BH_o4xLud>di|43Vw#{P*;ubFW?V^hY}j4_#Avl6rW z9z;U$p4@hnH^Rq_fc>p1IcOR+iI^Z*zOYZ!#u ziEYp}N)2FoTI9?39`T;`KKIu3HTM4-n8+O#-b=NVH=yn`szr*RtOpiyrdAT1+;6qv z;Evm<)Q}TJBi||T%=_NG+SS=r$^Fyw&<8=@+$~{^G)n2AHA8&pMEo*wmpnr4q^~g9 zu+#k4SZGXvTS_(5HB?~<<}B5W`~=hEcW4*1E1CTMk+X&B;w!PTG#&KcnJ@)eFZF{8 zb(NSS)EBn!E&1W_Ju~20?kLrlS(psJQdem$bxqHJbi5k)bK(MZnVDhuWptYo&4bO4 zO&^U5VTUk=enL8kxmXsmNS~=CtLaKSWb0IrCFp)Kq&o61`LuEX-qg*oH6DN;BMw6b zRs{8l>`v~2{niTXBxFY{)2jpHgH%3Auf!suv+xaEAItced=kGIdYQq3T{M8x`aSGX zUg?F%8uSuOcu;f>lBUg;ff~&V+S!qiWiuZ-!3D?)&w%KjPF{i@YXZ5LoCuERmoSZ*0`p%ZdP=XWI*`pXz@eXvIC_ZO|#Vk)eCxibOqK1=Ehfv{p1{~Aw7`B!KJs6Mwusc zBxt7VQ3*g9ct$=V3UD5OORNMH8x6Xvj?4}AiD4^j>JORDnp~z4<^$#p=9cF3Cc-qy zcoXsrUcf&58qowljXu=(sC(pSDMi@E@8Pn8V`1KZ0jj{h+&1WtN5Ne1F#n3rZ+WgeXJbxG&baKVSt~Qo&qkIv(9htEOUGd*_0X=^?mt zscnwAjiDF)nCO93LY4y6GGv|#qW+@8NR|PgKnQTJfbb~n5>U!q7=9WB3@V$KluL5k)6zmY3#Vr$> z0UvV;P*(nsrRfYH(Wb(_#K3N2meU1fHDWJz8oi6Y$F>oRsWRaI*=IOwd}7Km7g=(w zw;-!}xjn)W(B6uZP?E+AL!laXY_uxo>8Q%nN(6i4o+|%5%!!yOZ z5puIH2aof^#UkmP@>tVBztxi*P1j=I8OE7{=JwXcwvV2Y*v z&~G>TIgq}~SPT)yi^k8!Pmk=3Xb)D@t9*8>_tJe^6kr|Oaq@g~>>q>_FUXua*^ zUeakXLfkKygueW7t|iBCxj{2*1e)-v{2pPo*i$meKjf$2UHA-sxf$9S=*K2%5!zYR z0DXJ5d|5s&7t0I5G4WNMuaWwCy&Q51sg6EGH)3n?yFhjF0M&T}bBDRiGy_e@0jOMB zlHXzb(-=;zBjgTp7IbBs;Vlb*w{bN-AMb@5@WYrDTLL_WdB|I!`#jYgT77kfazcI} z-2-azJ@EKOKpn0H=WuQKl8}+}R6HZCgdG3{?1mgQOzWrpqkY$^>F4!4or5z#(lbHB za#vrc&w`(DvR+D0)9!1Rv=^XxzXeY5kEn*Vfr>JljHCL4;%V^z`)<}!N2sk-64jZ? zB3qE_h=1@ASX=NqRYeNH;Z&%j$Zx2QOX%N0BeNY+1;;~YB&v`>rhZY+sfU3?o}${d zL~XY=8*ZLx&81FI&nkIxSNRd-pDd69@H3ZC?m)`U9Ce5qt=?B=D3jrYzo(9blj}R| zfEOaOk#R^@WB@4PjOcT8E1bt~@hU_W;yHA&4lDvaggk)B?P+jZQTh}3FWpy{1Mzme zJWakQ*HD0`rVLUmXdkr-dJQ0{T-0YEo6$7P2sd0F%;cJqPI4LX0zUD9FrQJ;YiK7> zf1HE<`40963u5h|L#{<^A>v_TaTvB{d%%lykbVqbx9Kc6L4VS_>0Y!Md?t}pO|lpt z37NKAp(gvJHdOIeLmNAMfN#2VrT(Jxk$hD*Dp$I@p> zm!`@td6JR>Op7CGjJ8aBr7?OR{f6#?$wm^~;cjiE#;L2+iRwD_5bQ|>wTZS(WA$PB z1n`~R)dvI7qZa(k^N1bfQEC{SM=xcnfTlBxH5n=aK`eA9hB4CH@fL&cJU|z)-N-!8zh`&WY=q8@Tq@|?<{C!T6;siM?6D;(|+1h3fKh;{7RrNaLQ3}sT854sM)#+`-s!Pp{fEW z%rufG)(|2-0C!=JU~9Pq-$mq;73dnw4N&EbWUU4x_^F0l1Z%8avM+OdaYQ@o0t@E8 zVFPz5SgyIL$a0D|3fcw1Y@8^C+7%VEIak5!(@z2rBN zQ|b;U(iEttjKT}ZylBT)0j`dfr}*F8C+;g}fZt3G|6Gv8(K4-ifZZ?=lVLWM4bG5R zaJqD-6mmHkMSdmL64i+;`~|)h?}WRd2KPOBgq#W;z*eR&o5Qv? zEHUghEH!j9ykXr;0q7aW!Q{OfDDo;=RCQR*eXl&gT}Y`3~q zOV+IA@7mJEh+)tVbtmoAJE{q2KnZ#S1&Sj=!Xd#5s9&j|iJ67X$J%4jSPr@l zwV=Nd9#LTrQw`EoIpiE{dkAE@{tH+p=hd#jUf2Y0Frw^`TgW_6TngYk`&*0?qv4hx zD~^VzdNBNxU(kf^&^bivQ-J2zK|c-YiZ|57>Oi$QFfn-LBUHZ=mAXo4n6D$sLpcfbi2uQ@aYbU` z8NMWAkgl;``334kS^1{y1g+0BWq~puw&qdlZ1tDg3;f>iHCjKaCnE9a5%9d0$2x-k zVm7>Gt6{zph9|;4f`AI-B0dPOk84;mP{=fxzOO>-!YBFz{%;n;W;7mVLo1+m_^nOT zQdO(^Tz)T#{1n~`MDV9vtKffu#9&LV6ZbZ_BzP>?6}DwFg(6|9cvV`e6amGphkjbG zhjd3@0E?ssyzBiTb87~E8fIf7fnSr2UdK-12FSf_O+=Cmb(;!@E~^`)BnXhZcf&B- z_}rLh>}a|QgmnqLXJ^^f%p*F4u0VYvdg7lzIaU*?4%?Jt;2p)3ub|h=lq$g+wN(<} zc0CC7#vHh7J3%jhT^uMX!d+p9&`7w;_v1V8WBHq~PtD?w0eeg2+Y0{*RmE#?DxZ<2 z$nn4$`CARuvOt|U2OQs*pzqAXuHusjA5j%ffXZY8auT_k+yp)7aCoy4nAt36xMEst zxdo{s`>l5@K9k7qrQYMq(6`z}`IB&l69Ut~HQ2+WfbaZh@rL4*;w`Q>?t5NSU_AFy z_zOH&7m@M!d-4t4ntcqa&kA%tF#~(6*H&ezgUASxd`E6ba6;gUzpJ117y3H-7Y1f= zk|4;#bPY?S_ONSA^{un*@y@0p?vOH}Cqm9Sr#L>^-dd7PV-4jPhU!6N00n+Aa!`M- zrKnq!y>dr+gq$yjs@JtKNIEE90(czp2=9)E;2*Ju*kVvbAJj`~kCX>;E+nH)62HTz zcZr__6A^~DK=xPx-vu^M!yxyivfM_QrgqViwPD&Zb&v875WJJ5DR54eguKpfN(5A> zjrC(dsw|5)AZo*j6hilgtdc@QDU;XK(LCHd!@SBo-yCD^WQsR-fK1Ty#3AfAoa-V~ znn^In7!A{lcCg)A2B$^|*hz21XAvXG64WUmHeIC81Fxw7RA2`Q3?GP2hTO**atCoQ z-=3QnEEW72I1_ja*=Wat4M1Pi2?&DirA6{3B}1k3il7szkCnuup+2tw$t-!q8KMr< zyFB5n7VJlf8%ca7i_cdz@&Hs_6IEkGmc#S9Mo_=t&jGf+F$*qn3Oj1 zajBKWfv%-5bWb{*Pv_*H;0OMpj90s9J9ID73R@1!VgwXP8ANZGf&PJax)9xh4u+lB zNtk4VLt1|go1@i`)_Pov)pzObkqV%eOTsh3fmoX^1&XPWPz#JOoHzV7@P4s;( zZ9GXYr}~k#h?017Yzyr4CxQ|_9_Ykgb-mgJ&ZO%w#S?)^bpUAs4*FztJ=zv>P;X}DskkY%a4p`w=Nl1q!0sFfs&wz!p+lxAwV zE3wYZz304N{Nw%12e{14z4zR+Jj?I-JSKoV`$;LLsiLA z-;?-)J-jX1sqiiDX>W}0BcDQ7bi$W7?(b}u*e9L+$bhZlRe4#4DYq(?=jE3~8aK+5 zaEPB!J>i!{s~GhYvc9pb1$*JRxF|fb6}7syNsFpZ8EDuEDpj>mx8zxwE4v_F{}2bo z7@8npR|LWj_fRV(rKo%^nQI?55{|_ij3|sdx>e>G2N-Ev|W4v3woVcMBKF0 z)DZDvm`F$Sq*6z*orn<4MQzc7%1ay3NFG@ePS!*?@r~py@i7`8mr<4`pV&}6y&12q zhO^mDw42%$ur!11jvP<6H!({k{;>lJ)y7GKlh#C!f#ggDWE^mc@pi|%YDUxKGP5nHwoYqC2tv@u?I1-fKEv%@d$!9tG^ zMU2mJbIVj0Pr#`e%zDZat9a^ej87COz)aJNC={uQrUR`V&2>7PwkFgZ#ZP>Lr}XJa z_<3=rROe7>E*kb+C!RXY%r%?w3~!hdT%jwv`-;i7YpQq6GPp*O5Mhcqr&4HyxMB$o&EX}h)HvvWFSn_G}9jj zXa)NuR>j#SvUV=;Qy|teFK_Y;J6XLAvA_=BZ{Iml$b6gun!lYkK1k$e1x)^DS$E~) z7H1ZSeINs$i1}D9i}^_x^H^s`#4^#Byr6!>H>30(XOI)=bbvJ(1ws%9I&u;QL1&)l zvbn%$j5fv0&sjPH)JK?+W+BnQB5c(VB;tF-{eMCewPQ}*# zF8?)dMsK62PQAYAa)ykPmx(+4OAq}9da{oSm#yK?{bE8yFA*y`Rqd}RHqqi&ID5Sb zF|&0nIL=~bZJ>Fdu?fZAos5h)#R%sz^A77T^iQmjQDz2K*;n*g)oREQ2gIjh7rk?a zYo#$h@yw+O+&PJUj0L4nV2(%=#5^i8+Zo+qat#?5mGU(6v{>v0$!|#u>SBrRLvDP| zYdv!H1uEG@GFBFR-7We@#SYv&;IB!@Lq7ZhU$mj4V!XA4o>L$rJ)R_`ja4HPVj ztMsQAx*_*sMFQWi(gbtprx-aIt8O8d`&VKtT#^?}gbAjHB21FWLV^~6MUgVW6*HNs zb&T6or?Ss0T=g883L&Dps3n@gguDy)evo)lJj@-GSU}9Uh_&X0h59b*&y9@A5B38so3-jJ$zHwBo058`(HJeSfQ_iV3q0X%(hA- z+fJ;jpY>J#_v_ZQ>#BK#CmM&OtShP^r|;1_@0veM46^Yv)|#c(NHxR`$AU7G}<(a5iAt7vHg|Y$hh97H{UWFK%pv;Pd?f*(hQ)=(NwdV zHR+gcVz}syZ@2)@AW?^E91$e`N~*F}m;ub^G`Z zU5i~UT??%cI76$H56M&p*Lx4~q|xec^{&;`^(z%YySr1|Yl(b}_k@Cjv4kOH#L_37IJ2GEIcx?PVeV)7e3D5>`~MUXEP5hgLYN zpVwEMKF)T#3s}|-|6z1-Q~x=lz4PF-CHPwSy5OA;prUDAd$_&G&aua^W9mBm^Pky& z(+9^j9G$p~cv(Kz%x0g?{^qpl!s_i!z1=s7gUz$*P!qkxl|g0ETzJ&usT^Ix>#u;F z0Vx5i;O}>IrK@-`lKlv$`HQ?mD$kTpE8AQeQF^Z=h5f_MmW=_$9!rhyS^f^rzj`^0 zm6@R8wcPXFN8JVB&cDF5N>Ee87QNs8&KK$pW@qQa<;mr7FiaCGx>XMMp7+hMo4__Z zA}?5$=b^y!K^?0-LbdPZA=5&_LbBir9SfGhy8{~qtai6^{h_AF-Xg`!!~&ecj^sV@ zq~|$>PIdHSB2T*3tQ2G9-^31ksy`X2Jkfx9eSPtD?zzrVIU!d?SMJ;a&dlsK>JS|*U(lvm-I zz2b_1@stema*T?wE>Cl6AUx%14~IX|J<|1r)lX$1tE;oC?J#6pHEK1trp8bYR`oDZ zM;>4dUc<6q;95e>p!M+DV_oG|j%8W>)hhWZvDo3duj3-CrGsxbJJs8jmNyve<5B8_ zE%R1*r;u;=wSOoGaK5t!gzheky*AS9Q*D|ZAl|xp`5fFrVG8yaJBlobP#v^;iv)0l% z`voLWD7Ml}6NtvACckbCrf|*4ah{?g=BM=A0P?9Wz{T)jQ6Bb(+G+G*4>0?D=epCA z7>9*?TY|=$VV*(iyp2Wi4|x7WtkPsB6WrrG*mEWkgb4I<0+`E4c2UVE>f#1jZx5ok z*qsGK<6-x=t|Zq zoU_C%CEBr*YZTzw9fCpH3OlS2Udslsrkhythsl$ATrGy#JQy@2kJmm`1kSrtJ*zsa z;l!cGkinfsGh3A+GIz5&al2&*?9jW__? zd=%PZ2paKmR!eK7@pNSQ`?8fSzYmp`bcmn z7vYVxk#*z|WdBqoe*`+VI<~+lto$z+<)&sMtFtS9#~{Y}XCfs}VH-Tm`?vL0y-9z@ zD_cKJY-cPI@Q#iqA{EQrwZW7QV|gyri_k@RSi_yL2M%FTcH=G?Xwu;zaWk-nj*37T zLJRuHDRLLF(KYmb6Eze+Xe{-W;=#fuNlmYH5%qb#WUSEFc*<1q2wLn%ba)2#&k=0c zJEo3^M2}>H1BB{tk$Pu+6~5N~y}knS%CfxmeDC=zf1&>!`z5kJ)|wR}m-@NF&Wm=eJRQy%Z7$(zHZx7!Ma3glN zW2~3i*X&tj&+Ml5&s=Ii+?3zJHrp<)lU;t074$M5Xc!30W@^>;2Jc(vbf728&Eqms ztySNVuX2mr=1FR{x(F9*0^YCJ8Lf+4#ja3ybFzQp-6PzQ_{^g%Ei=fCuBQ#vb01^Bm`LAqz7Nq|zxtBEj{k<; z{wTZlf+{a%4yK4p%%>u4^b5@XRHV(v%%B}& zlDq>Ry^?y|1=QP{XN?7!>}5S+MKasZsPU?VUR)w>;7ROfl_lU=9>5-6gnwCpRdkeB zILJZ`7%Ro_RmRIG`3v@S0(Z;1U#D>?(%~bs%&fs*DJND`WhXZhCCHq!Se31rjX|uN z<6mskOA zRtp~UdHD|`zXeOX8r4yT;-kX;HQV$n_>tS`tsv~F#by)MS_oEmA-g^pqc}Q+?=}vr zI~>b*5KlT48R;h{CtMhOh)>Kk-pNEpuQY#}e#p%}+@raA9gHCf41WVP5KdvqO~I!N zXB-Y;;UB~keNHx%e$eSGu@~Q@74go2SlRz!@f{Lh;~{-dk0r}lcrDN0{~aVNuum(A z13U}Lkqei)9xI?6sTrYjPaXO9H2ypah zT~pW4Nyv<7`ne?%eg+oyTt?&!7H&DYK8wUvq;wd4{3D*o0wltJ=C*Mm6;|UXbe36o zDmP^*((ie-flRJsxZ*>s6sx&)N-d?ozkw-!gS{4pB2zMn5md!2h9XI_@x!*`*&f2n zIzzuTFh|IgoQwVC*V$O99nnjDMH_Te8SU^f1KU?IZ-txe;|#2V8rXm-NN8ii@EzJ? z?_a{c9%t5}tH}@_eCl@R(v(?@1{)->@uhuSl$jXcMZw`?8mzy_){MKy7{Dn zZ+P#wU4n!JaF(ArWb>|Lg1DXsuhqkORadilX>57Q@^Mw0YgWBi!8;|$*qikDZGQj9 z_3oH^T(gwpd;Bivia}iGLG(x9{rgI0qTy~;cL<=pAs_*oZwYv`rL?n>V~J;^?zhv$ zk&Dj*`F>SPs&S6w$HmWpzJro$abDkny%PKO9+>3eIC1hzV_p|8k8azfe$^)lZ7u!? PQ6o7%aUg&H|CRp%n!>Dv literal 0 HcmV?d00001 diff --git a/micropython/examples/pico_audio/simple_playback.py b/micropython/examples/pico_audio/simple_playback.py new file mode 100644 index 00000000..36652fd7 --- /dev/null +++ b/micropython/examples/pico_audio/simple_playback.py @@ -0,0 +1,8 @@ +from audio import WavPlayer + +sound = WavPlayer(0, 10, 11, 9, amp_enable=29) + +sound.play_wav("pirate-arrrr.wav", False) + +while sound.is_playing(): + pass