From d5427c8a68bb5327084bce67079d7f54472125f3 Mon Sep 17 00:00:00 2001 From: boblark Date: Sat, 4 Feb 2023 12:16:56 -0800 Subject: [PATCH] New CESSB test example --- examples/CESSB1/CESSB1.ino | 218 +++++++++++++++++++++ examples/CESSB1/CESSB1BlockDiagram.png | Bin 0 -> 40634 bytes examples/CESSB1/hilbert251A.h | 253 +++++++++++++++++++++++++ 3 files changed, 471 insertions(+) create mode 100644 examples/CESSB1/CESSB1.ino create mode 100644 examples/CESSB1/CESSB1BlockDiagram.png create mode 100644 examples/CESSB1/hilbert251A.h diff --git a/examples/CESSB1/CESSB1.ino b/examples/CESSB1/CESSB1.ino new file mode 100644 index 0000000..6caf23e --- /dev/null +++ b/examples/CESSB1/CESSB1.ino @@ -0,0 +1,218 @@ +/* CESSB1.ino + * + * This INO tests the Dave Hershberger Controlled Envelope Single Sideband + * transmit generator radioCESSBtransmit_F32. This was developed By W9GR + * with the aim to "allow your rig to output more average power while + * keeping peak envelope power PEP the same". The increase in perceived + * loudness can be up to 4dB without any audible increase in distortion + * and without making you sound "processed." See radioCESSBTransmit_F32.h + * for more information and references. + * + * Your microSD card must have the WAV file W9GR48.WAV loaded to it. Source: + * https://github.com/chipaudette/OpenAudio_ArduinoLibrary/blob/master/utility/ + * + * The SD card may connect to different pins, depending on the + * hardware you are using. Configure the SD card + * pins to match your hardware. It is set for T4.x Rev D PJRC + * Teensy Audio Adaptor card here. + * + * This example code is in the public domain. + */ + +#include +#include +#include +#include +#include "OpenAudio_ArduinoLibrary.h" + +// Normal input is from the WAV file with W9GR voice. +// An alternative is two tones. Compile that with the following define. +// #define USE_TWO_TONE + +// T3.x supported sample rates: 2000, 8000, 11025, 16000, 22050, 24000, 32000, 44100, 44117, 48000, +// 88200, 88235 (44117*2), 95680, 96000, 176400, 176470, 192000 +// T4.x supports any sample rate the codec will handle. +const float sample_rate_Hz = 48000.0f; +const int audio_block_samples = 128; // Always 128, which is AUDIO_BLOCK_SAMPLES from AudioStream.h +AudioSettings_F32 audio_settings(sample_rate_Hz, audio_block_samples); + +#ifdef USE_TWO_TONE +AudioSynthWaveformSine_F32 sine3(audio_settings); //xy=231,444 +AudioSynthWaveformSine_F32 sine4(audio_settings); //xy=259,345 +AudioMixer4_F32 mixer4_4; //xy=405,427 +#endif +AudioSDPlayer_F32 playWav1(audio_settings); //xy=111,51 +radioCESSBtransmit_F32 cessb1(audio_settings); +RadioIQMixer_F32 iqMixer2(audio_settings); //xy=100,300 +AudioFilter90Deg_F32 filter90deg1(audio_settings); //xy=250,300 +RadioIQMixer_F32 iqMixer1(audio_settings); //xy=250,150 +AudioAnalyzeRMS_F32 rms1; //xy=300,50 +AudioMixer4_F32 mixer4_1; //xy=400,310 +AudioMixer4_F32 mixer4_2; //xy=400,150 +AudioOutputI2S_F32 audioOutput(audio_settings); //xy=520,250 +AudioAnalyzeFFT1024_F32 fft1; //xy=550,125 + +#ifdef USE_TWO_TONE +AudioConnection_F32 patchCorda(sine3, 0, mixer4_4, 1); +AudioConnection_F32 patchCordb(sine4, 0, mixer4_4, 0); +AudioConnection_F32 patchCordc(mixer4_4, 0, cessb1, 0); +#else +AudioConnection_F32 patchCord5(playWav1, 0, cessb1, 0); +#endif +AudioConnection_F32 patchCord1(cessb1, 0, iqMixer1, 0); +AudioConnection_F32 patchCord2(cessb1, 1, iqMixer1, 1); +AudioConnection_F32 patchCord9(iqMixer1, 0, mixer4_2, 0); +AudioConnection_F32 patchCord10(iqMixer1, 1, mixer4_2, 1); +AudioConnection_F32 patchCord13(mixer4_2, fft1); // Transmitter output +// mixer4_2 is transmitter SSB output, iqMixer2 is receiver input +AudioConnection_F32 patchCord14(mixer4_2, 0, iqMixer2, 0); +AudioConnection_F32 patchCord3(iqMixer2, 0, filter90deg1, 0); +AudioConnection_F32 patchCord4(iqMixer2, 1, filter90deg1, 1); +AudioConnection_F32 patchCord7(filter90deg1, 0, mixer4_1, 0); +AudioConnection_F32 patchCord8(filter90deg1, 1, mixer4_1, 1); +AudioConnection_F32 patchCord11(mixer4_1, 0, audioOutput, 0); +AudioConnection_F32 patchCord12(mixer4_1, 0, audioOutput, 1); +AudioControlSGTL5000 sgtl5000_1; //xy=582,327 + +// Use these with the Teensy 4.x Rev D Audio Shield (NOT for T3.x) +#define SDCARD_CS_PIN 10 +#define SDCARD_MOSI_PIN 11 +#define SDCARD_SCK_PIN 13 + +// Filter for AudioFilter90Deg_F32 hilbert1, for the test receiver. +#include "hilbert251A.h" + +// This provides information about the current WAV file to this .INO +struct wavData* pCurrentWavData; +struct levels* pLevelData; +uint32_t writeOne = 0; + +uint32_t cntFFT = 0; + +void setup() { // ********** SETUP ********** + Serial.begin(9600); delay(1000); + Serial.println("*** F32 WAV from SD Card ***"); + AudioMemory_F32(70, audio_settings); + + pCurrentWavData = playWav1.getCurrentWavData(); + + sgtl5000_1.enable(); + + SPI.setMOSI(SDCARD_MOSI_PIN); + SPI.setSCK(SDCARD_SCK_PIN); + Serial.print("SD.begin() returns "); + Serial.println(SD.begin(SDCARD_CS_PIN)); + +#ifdef USE_TWO_TONE + // Two-tone test, multiples of 48000/1024 Hz + sine3.frequency(468.75f); + sine3.amplitude(0.5f); + + sine4.frequency(703.125f); + sine4.amplitude(0.5f); +#endif + + // Build the CESSB SSB transmitter + cessb1.setSampleRate_Hz(48000.0f); // Required + // Set input, correction, and output gains + float32_t Pre_CESSB_Gain = 1.5f; // Sets the amount of clipping, 1.0 to 2.0f, 3 is excessive + cessb1.setGains(Pre_CESSB_Gain, 2.0f, 1.0f); + cessb1.setSideband(false); // true reverses the sideband + pLevelData = cessb1.getLevels(0); // Gets pointer to struct + + // Generate SSB at 15 kHz + iqMixer1.useTwoChannel(true); + iqMixer1.useSimple(false); // enables setGainOut() + // Following if cessb1.setSideband(false), otherwise reverse + + // Compensate for window loss in FFT as well as x2 for mixers + iqMixer1.setGainOut(2.76f); + iqMixer1.frequency(13650); // 13650 for LSB, 16350 for USB + mixer4_2.gain(1, 1.0f); // 1.0f for LSB, -1.0f for USB + + // A receiver for the SSB transmitter + iqMixer2.frequency(15000.0f); + iqMixer2.useTwoChannel(false); + + filter90deg1.begin(hilbert251A, 251); // Set the Hilbert transform FIR filter + mixer4_1.gain(0, -1.0f); // LSB + for USB + audioOutput.setGain(0.05); // <<< Output volume control + fft1.setOutputType(FFT_DBFS); + fft1.windowFunction(AudioWindowBlackmanHarris1024); + fft1.setNAverage(16); +} + +void playFile(const char *filename) +{ + + if(playWav1.isPlaying()) + return; + Serial.println(""); + Serial.print("Playing file: "); + Serial.println(filename); + // Allow for running the WAV file at a sub-rate from the Audio rate + // Two of these are defined above for 1 and 4 sub rates. +// playWav1.setSubMult(&wavQuarter); + // Start playing the file. This sketch continues to + // run while the file plays. + playWav1.play(filename); + // A brief delay for the library read WAV info + delay(25); + + Serial.print("WAV file format = "); Serial.println(pCurrentWavData->audio_format); + Serial.print("WAV number channels = "); Serial.println(pCurrentWavData->num_channels); + Serial.print("WAV File Sample Rate = "); Serial.println(pCurrentWavData->sample_rate); + Serial.print("Number of bits per Sample = "); Serial.println(pCurrentWavData->bits); + Serial.print("File length, seconds = "); + Serial.println(0.001f*(float32_t)playWav1.lengthMillis(), 3); +} + +void loop() { + // Thanks to W9GR for the test files. These are intended for testing + // the CESSB radio transmission system (see CESSB1.ino in the examples) + // but work well to provide a voice bandwidth test of WAV file reading. +#ifndef USE_TWO_TONE + playFile("W9GR48.WAV"); // filenames are always uppercase 8.3 format +#endif + + if(fft1.available() && ++cntFFT>100 && cntFFT<102) + { + for(int kk=0; kk<512; kk++) + { + Serial.print(46.875f*(float32_t)kk); Serial.print(","); + Serial.println(fft1.read(kk)); + } + } + + if(cessb1.levelDataCount() > 300) // Typically 300 to 3000 + { + cessb1.getLevels(1); // Cause write of data to struct & reset + +/* // Detailed Report Uncomment to print + Serial.print(10.0f*log10f(pLevelData->pwr0)); + Serial.print(" In Ave Pwr Out "); + Serial.println(10.0f*log10f(pLevelData->pwr1)); + Serial.print(20.0f*log10f(pLevelData->peak0)); + Serial.print(" In Peak Out "); + Serial.println(20.0f*log10f(pLevelData->peak1)); + Serial.print(pLevelData->peak0, 6); + Serial.print(" In Peak Volts Out "); + Serial.println(pLevelData->peak1, 6); + Serial.print("Enhancement = "); + Serial.print((10.0f*log10f(pLevelData->pwr1) - 20.0f*log10f(pLevelData->peak1)) - + (10.0f*log10f(pLevelData->pwr0) - 20.0f*log10f(pLevelData->peak0)) ); + Serial.println(" dB"); + */ + +/* + // CSV Report suitable for entering to spread sheet, Uncomment to print + // InAve, InPk, OutAve, OutPk, EnhancementdB + Serial.print(pLevelData->pwr0, 5); Serial.print(","); + Serial.print(pLevelData->peak0, 5); Serial.print(","); + Serial.print(pLevelData->pwr1, 5); Serial.print(","); + Serial.print(pLevelData->peak1, 5); Serial.print(","); + Serial.println((10.0f*log10f(pLevelData->pwr1) - 20.0f*log10f(pLevelData->peak1)) - + (10.0f*log10f(pLevelData->pwr0) - 20.0f*log10f(pLevelData->peak0)) ); + */ + } + } // End loop() diff --git a/examples/CESSB1/CESSB1BlockDiagram.png b/examples/CESSB1/CESSB1BlockDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..b6e90f0def28fde04c5a5c0fced86ff1c4c2f9a2 GIT binary patch literal 40634 zcmd>mWmnZtxb`Lm1wlZiK?Lar0f|kgG;F#-x?5r+DJ>u%EiK(G-7VcM-QDnv|Fh1U z^A(<1tfk;){bFXW`@UifR*;jxd`kEf0)b#kNs1~#AczhS2!aV3BKXO&YqTc>LJpA< z6;g3a-dk|hR^GgU9Bn4Yh@sKr=k(wihx)RqXxG*h70nhklGI$fOgDP(?-yI|A6;Cy z%umi5Sld%PH%6zSdyXfHXKec>>{~LW>D>c&Vh#eLzaakM<(NFQSIXfe(f>60v}ySE z_Ych?RAeD+WT63s8Yd+1C${mKpux-keu5gH`tP4uiSS@Az+XD76x7B3eWF6>|I-ho zW)u04H|pb~Lh=g=O0?^gG&MgQk>DV+9;IMV>FF)~{7LTW>MFy9Ec9*Bz@ln))LIbR z2=A$wi;Iha!5hf5`rMr4-ji}J#_X!9DD2-a9EE2VM`qK_P<)n`mw)`gU+gjG@ePyR zlE))BsQs}+;~bIjepsAh`+^5tvZcK7u&7SMhOs*C!)!uTxS!0(jQh?zl=CjUCPgCB=i-OpdG^LMI1mXGa7;o}cKs3s>JO&QChrqez+OEbl5 z)$^eF;TU7wghz9xQ1lEA+$dMf6xFwkyq^=p=M9L@K~dn!^09X&nc!YgE< zFrk!|p3<)HdtP210ytq;dw{TZfx)=6h2*RW0$TzGgpi1cap4=QY`TJqni>};XB4IR zc6HbrQc}|Q@87?rvb3dXqmzn`XV$Z^wk|3tP^OC&If}>(YiMX_Y`o8sim64~{V{qu zu18AtIv7n_cFc(^P+g*Mbad3;A6cfxa3GyVI&m`&z?OS8yg#}5-C#;GsvvYETQK7Zv+Gc92^{kzGfD$`w8(e zz>h$JTpH=KLNHjqe8W~h?vbz(z`fZ($mtiG_odp@yf_@Q{OnNS&c9}j&kDp zMYV9$pD;$^BFSh6Fk|K&XUz}wwr(w}ud=$1os{JY)V+=$3XcU5I% z3M6R=sU2C=PQ|gAURUPiyyNF5(J9o&M-#0T>=?UGy%Hv7A$O})5H*|N$Tne^c%Nv% zVG$l1+oOajh}u3;pk`@lxscqrYPd--wz>-0!pb*#>Qw@87QZd_&gQu=osxRiRIJwcA|eQI1iX`Kg3#7 zQBm#h?^jn>LzY)oR@T?4aKfwK)(WRf%FCDJ<*giOYH5*i-?2j^_fsg^42z12STWX~ zp_TmzS`uin*TKg}MSSxH?*&I^`Ku3RCOM`gGP0i^7m8lFyBdG{yRq@~ieioRC8W^$ zn#2LK{ihEP&HVg)<2&TYnuI@F*c;)b9V#VHhQwOS5*b=kN> zhy3{9oS&4GWTUT|u7HP!H$E{D8y_#9$k7|U&t4D_5fK;nN=9T2m5-=WwX~oYQ)4n%-uGu4 zMVj?a6GXQBG8W(E1s-l@tLQcKYrJbY?U&?2(sLw+?yTnGJp~RwDa%-DC3Pdq$2{)$ z*ljHTk@@feqL2U8`YJ0V$9(+$J&l!>6~fQ_d<$-}GgSU-vGHAUTvSg1rt(#D$u1=l z*LLlo3{{G#k3U$1;F+Qn=;-Kq1qJj>OfF7N#C;dvC^hu-ppv|sOdSpUFJpU+ot>RY z_V<-MXj}H3vYG4PUvOAWBFSfCYI=HFOp=fr@s5OhWM-yLzxQl+T`cG# zH)W9b@oxoIk!IE1-nOGu5S+J^S%h+Vsm^fEj0qDn1&{E9`E7H+1gFWpm!9$X z@-aHSmbYmEA;|!0`&XJRehdd`4G0D<8hZK<2^R~-g+znCuCAP2aVC=D%1Vy6Z;gHt zahMU4kaUL=nf^t`%VuqQf`Q~4`An3rDA3@BXJ%tWR(@_~;pW#=@#jC2U9;fJ==bGX zQrgP1E7r0x$!L{4$&l-%s5 z5%hetWUg>{zjVOJ%U+@(BL^b1wu@0D&!+zb zy|?}C-I!z<0j_k(U)z*j$LUsXs@hqUoapHO+Lzj6CsogBUGvCTJ|F|m?o>rs1mm@k zA;4fI?sh{KKWpBKE(onSsNQoSg9sgwbn_rUQ0EItzlMf--<8Gddhe5s86u`#b!VPz zyg#iZB9N1e{{8vf0tTB5#-+aU^mbl2KaC&y9;c@kQxiwsYF`?6WW9$x53hDXB<@D= zAxA62gkPmujc_!6URWJ79fNv5?p7L^>P??aHa9=$_dCjCUEF@kF>Sn_wDh}Ydd2a# z^BL<$npF))sHn%6@J0o*&UO}zZq_efu{AYL5aDBMyVr;hWX;5b($E^4eLwKX8R=zp zbEeWH`(RpidYXF{Wcxq1+uw<96m8dSo(?xO$bXaUxc_{~wdl$J_P#@KHquW0m099M zzIn)wD;M!(jihIVRFhe2M!OWjcHSmJX(aUe=i{JgAZIkC>)~QbRFtB+y1JTLkiie7 z8ATn(#?q~Uku#{~+&Tn;ABc-Dx6DT>cVy=qw97UsMvva7zQyXy$|luoekis{1BJ+ujmxMrBpdQA zHYS?I)!brZMK*~H(TCl%JlCHnXAa-~`eefE$pg2Y+tl6_DRq_w$HJMX1Ke$BXo&sO zz}D>?!JAm={XJ9@^VguDl-0^_5&&oo4h~)@R_n2@tlBm);Epq?vd}Ebd1CuZfS=QP z({}0ZZjDsn%jvbJlHbmB_>R zB3_+z1%b;|W%tbrZ5_Te&$|Hk(@lurQW}r==uO~4q4U^IBBRbm#FmI&mOlv#6~Z5)K*umUQnla0Zo z@Nm#r#G+Cc#k`YEd~dA@71(-XU}Ay-0sYa%#f6-loc0F0m?HSt{6|>SmW$iLfka!m zpfZNka~rX*6P9Z0$wNP4u+bqg?U~?d*Owb#8@`z5(N<9S=B>ycB?;=FimvYB=%kFv zCk&*Aeb1?XG0^w>f0ZkDU8%UBw-T z-jC<_rF%$NOZHoTzOU2A@zq{O@KnUXFPF$dOP1V@Ryc3(B0Svc{dAu$iX?G`h)yP$ zZ(3LqaV^&Hk&`1sEG+2m?~yPT`T6)PTvsDfXD_ax@7*IVhvXX6RdrmKa#U?>8j$?% zZXX6%qbE%h3MNvQk>6EPa1aWMTrdY!6v^u9XndwP*EU)k496-wNyEp6dc3<-2ok>j z>xkufx=yA{A$+;df7G@cX-W!h&|l2Ie}dC4tcT(w((V0dI2VbppZ5E5u%d*o-1Kp% z=j#u#XRs3WCV%E-q!wlQ$D&0=^MLYS-0)*K9MLCR<~5^E z{npv_K`FW*P|!LLeL* z9LfA1?>RYRJ=y}Ey#|Y+Lp2UxfD)&7JWqKzh1d1wY`Zw}#tl_NON+>zr@x$#vxrKT z)*vRuTi5k=t!U1v2J3)7zab^fwLtvXbgtU9A%^5uTg$;#(8cQH2mSq2)6R#@exc`pd{smiv7^_uavw$w@=oL-a@+?~7cW$FTs_ zGIb}4^$fqv6qwA+^o)JF*~G~N7PRc4N=>)XK2x|rF~}boBIsnLvTda4O`a=CQbkEAE;SX0mmdLQn7NT(Ddu#kmyVg{kb!&*XvSeExeOcxQbb0doENS#lQ- zZjDiTv#q{?qJV3XOsl22Ip}`s@h*dLk!t;ZG~D`IPK8j*olU|oefu}5Z}8>NO#uHT zBqFr)F)7&CsqXF`;JQx8oIZM501?El74(Vm4BIx1B~I9bE#@>Ic0ey4vT=fW-m32QI{PZa0y%HnRMjd1|bF#P5yl^|| zQS$q~OJd=Hg0)51FDIElK0YPsrprXs!*O$?d-8sXzGQ##bZz6w!{X+!Ki5b%JR=ec(PpL>JYRCiyxcx-AmJ4R%pgdPuflYTxb^OJysq9bsCj?s?@d1hteObd}D$wG{x;a{hW zSb_ZcGd<8i(hq>OOn>@b**tN?3}18Zkm+|4msTy2$xANda%irUaazxe$8s)Ga5om2 zB>YmZhOTNApA>4evhud~$@9l*oBhv_TJNI2E7S)DwvkiE*T1h%<1NPt7nq~xif_db zTf(;d*UX>L)5-WEAwl$azJJ}N65H00Fzpyb@hQ?;$~C`nJIQMdmN;nMWIdq5z4!9@ zawikeIrVIH)$rynL19WJwH43!S!$>g!)WJRdu4ttLEVo zpbkNf2rO^aUsY-b?v2yE)XWwxP%^8+>n|5HC%}|CcP*x4%c-oXIb3Rfe0(^3WMgCd z9FoVDFwjFtOF}}@*z_zAp}&;wrR@2mLQcg>@om%H#r??%U2KTwqu-^T*BUKGDdz5b zuloCju$(Dc-Q^bRzMAd|7Rj6w2Q z;|@A5CQb9Y2}o3lk5w&J=WNKx$k!VtejBK!ZlV!4%4YG>M7U^YYRU7|wyJP$IiLaCMdf!W?pM+Le&!6iyd*Amn zH{T8M9$L*+@2|(}fz1>+$Ju;VRar@c_w;q{aXlk{_^KtXc=n%iB$@^&C);YUgs!{Y zX-e7gO6L?a{4`AuqCXST*&jdO=(+z}jQ*4V6EU0LrbwvMSW9=_Cr+Qw2L9xx&Q+c_ zK02hd-v}&RRKW^TIjL8p;Pbb4%C?R~=)Tjp-DR{fnQ5LbV}*4uy2oNjz4c{8Lb2x(SudcHH5&6=y;VZDmor>?!;OIzK>^*pZJkC?kt?A>1tzN2G6 zFb4BgE2|$<+_)pU#fB4VXkPi$T^@9A45bx$m~D>+Jc-3pRDQ#x)v`n2HKOL*|Vf)(gr;Z06`cL9#cl9@Ppg2N~Mo&u~_k%r*OanYVUkRN5 zrDtxsnQm&7Du6L-)oc{&G{YSq`LQnV_0-&`upl@%I2c1e>FMb~uc4-)F=H9T(qB$X zOB;kmHfbIF_3ICAd&8wUecI>GpMwq}D}+NACB{T3GiQR%0#7aMtrQMKTU(o9;ae0P zKmUEp7o;04@I9dZZoop&ekzw@`T-UT;9ZN3p~?(x}74F{t(jLNrGRFyq!G()!ziZvU<8d^6` zQ{e}7n`s_$mw!Mb&C44L!6xFpZ%Kv5oO3Hl+#WXH&gdI0rS%e=n|rC(;35xFP*JU) ztoOT?+{@gx*nebL(V9C#PhAOM>o2v4-Z2|H@2tX0p8W6rf+R)`v?|rElL3QmoHzi1g^-_mZthm zp4ERo-$@qr9&vhU613T-;_;jnBPKrn61=fpHLC<3$Blf|g3o>FWHz-ZCd}G>4y2oVe;glk zHN}KnPl?6DCt=rhcMN6fdz+i4Ku_ia_kF|a4Ej^c$-)sGzYF8hEU9^dFm0x#I!9AU z{mRxl5&*qa*}TSO5JPmbZq~q0cuyHMJ3b8%o_y4gQ;osvFU9|2&k7@_^oJq$`v!8D zfZh`O>6KQhTc#fK^pP|C}fFK>trYu6%bYq@1Odyy%k z%pUHprKF@JMjwtYpPe3Kl$KTP*6*#G=>W@R`?*+mc*yQl@g`EsYGcsCmN$K}>o5uAmL#*Km|?`&(Nu#n+C9PE>%_tp-shbGr^20e3g z9&26U-4P`8jPwkQ^u$-sC06qfmGU^=ylMTbp=vY()`=5AGrQ>!huX(=mavt!W{g26 zx|_yHX0}8OKXyF~9}`X>1c>g|oc)?h_Aagr5C|8KNlEeA`t!y{sd@--hRwkwE(%oT z1{^eGCMG7L_g3Hf*R@fIWopbMf%MJ&;ll@R?w`9VxW82Bbn2Mo<%eVG)e?WxOV8!@ z4d=^A7lN^tp*&Ze!6)NEmakmAxN6tWLyTMd2+*N}c^;LKMZsiXE{cnbbM_@Dajvhg!ODq^jVFXAIy;#?aSjh+jiBru+hp%FEbG-< z|AXIAN{Eg9Eiv)40MvAz+cYUvChnIi9xDEaMt0$Mj+)%I*48?z+u?{*dEa}DwcqG* zan%F{2D&bJO_BdxoTWK>$C1w3;ph}4|n99!!pj3S)m3F0!lvF?m zmm9$+9kcr`s`$!N$V((PTEzjk`n$A=jm<#>2`@%|$qKgs{NYZc;uC@128vJ@;(Zvh zO<{*IPO$Mpy))Puo6MN!f;$a?BL_^iw^fNjk*$~o!s#rOlpVvv zCBJ|F&d<*Wb7R?ylcfgG6f^-8QCna!dt4rHy5XUyAaBD=O>++}Ag=}g_T{1>`+og5 zbaCRpvD(lmU5HUc73-pp>T$^Gfretb%*ezfaDw34^C3el)X>N%=vorVSG`01U`Ch$ zZP1^nY24zxGxRkUnLuH)FkScLq)Tr!)r%J|XlT)eK4<8qkLkbT^2H#kyV?+|i7%zz04e}f<3ApjA$ySoDn{q~kw zyY^3izh#z6uLO4g=E|` z_YKp&k!b?niQDJTnx(8g(_h;10|>Sc!JbQm!XM7I#}q@DeSZi-Z)?iSaZHXVM34eh z`}Og2GBPMQIjc%blc+R|*=C}tWPJVnB+TqRkqMsr3#a?}`Drsf@u62M#>g5H@I51W zS|Acm*$eJAQzFs=gsr^XK9P<`iFN!pWdOwCIbarzxZmfsph)Q3Ub?_>87zV(U}(N)A6+#Wp%zPW!y>@~yoCa;SnqiZvK_j?VQ0IgO8uaz|kByGj%SuE`Ql4%O zM}~!oUN@q#O#`Ep&7?1Z-4r6o6yLw@@Z`x88Lp=U>)^L?f%*zQnwyj3!pMaNd3bmL z-(4Ob3!y|~8~6AJ208#*UaZ$FU_HyxU;TvO9Q+P1`F7U-W&x0jKPZ8H0idj2pl|ck zbT}2ziy|lwiO{!nVAy3hq$DMUw$ZUoE2xuT$4Wb|v;_dt@5-wcC?oOo=~Lk``4=5Z zz$E#FFZ~?2u-|oCFd&@SPo14SQ zJY)ZEi4_m#F+M-L7^H*gThb#_5#@1nhPZVYL1L3WM##`_4RFh|L*QC5LOr$ zXpEhN4bJ7k>j#qngmYE8SRJx(AfJbaJ3Bgx#OI>1;dFL%Y&pD@OZiasX^`;WbQUS7 zqa^0g)6vN#b4R76EuAX@{01ElnE0mwZRxf|zT_LL2M5Jk-kj9bra-ZwF(M@t*nx0Z}-NfITBKGbK6s4?c!(7$SZkqh{sSlpgS#0u4e!Lcpf_cZ+z0 zp$4%z+eBP808L%Ao-Tn-;9$NE0RiC`2aazT8^B6!brc_fGkCD5R+j2E3s5k)KIbdt zVUVt#UOR3Mg@=SVI5|~H&S4`HSW!et#@DJSDvpegQ^xc%fD2R-;2Okc`~vSSEG%qw zbrm4c_4Qx^d-u{386#x`d8V$mb~2MaEqI!VeAPH>EVi4l6T#8NMQ_ls0njRr&xOHY zjvE8PVDs!UQ}j%)0Bxq=cUnS1o!hbD_wcVjrnWE&IAr6$f6vOzb@gy3#K*@cBRkyO z44UK@`&Ne9Ub@~N|9A+0TsugG!Uf*F>nfKO7Ec&?1q&bGkCmjHU#F#e5<+gIp|Af_ zfkvfZ0%G^KCkm{+%-*f91mV%8(qm5U?(X8^;zB|~QxffMZJ!1c*VoqrnB-p|uN=Dp z;NW&UB8LEW4>rv8&5b75EL&gfbFJR00XzcYHjr!@hWOW+a&j^%Dhk{W z#BP7K3OL4jDi+(~Z!$Z2o&nVV0EIsGM7`C1!R95LZU-iEWMstb3{MDqZFOy}uJkE{ zT0T{~+A6_h&M%DcEp6d@4i1oy0D}d?=;&Kb&E?(o>Bzh?vd~S>!oostZ(dp13&`l$ z*lPxLA8F*bpI8xnvBeaD1rL}P=u=R!j@^EP`T&-37!lVHg|!H_v40zj6#x~`0U?8x z#-vk^M?hfy?+#l_pBI4eKwVv(xw*N{X+GdzuNc&^iHXDHSY9Br%1TP2MXYHbsyR5E zfbBR^PuSCf*~+hJLc@Fn*%{r5KhL6Bap-5Y?G|K|Ba zXn<pIWPUZj2B7{18|~A;kEoOsObA$7H1_BOKi^;$fZ|9%K#(h!!Zsao z^h~gT!~Mz=jFqE3K6AXuNuNI zO9XvDlidm;gj+g=BztJmkT>QsN3kFPCTvN6EScw}xTNk}k z092i2%f$a9>?YZ}wRLqx>Sczj9lb$3;R8v*;{Qh!@$oLv8lzIDZ63{wtnBn`9*HBVZ z$H&E;TxWc1q1m(_LYj%y%uMId)XGaSa}tAPD`~(hE@sc~IyyS4ETT=kc-YyM;hA8EHMm%psQsdpii?j|Q&sI?=(h1iF3d=KFAU%YJh7$cYcj1sNP{{|qT@rmF z4)PnkrxJZ%BVK?E6d0gQ0PPNeo8=T4WqL-A)~2`v-b>=Q zZ~EKSP9#73F z4hI+aux^voFYG% zq9p&Wt*sp#2z=vL##2>NQc_h#fjHFNf%oY0{=$ZdR9G>RADK@;PT5M&fl3@#AdMOu zZGYeRWU^}s{+Ob5-Lbg12&iZzoJ5BfFNELYf+kk_fGH4!Mo+}WUO>Ko*G}X&nxWZk z=4?RF?b~A3Q`XfLuwNBrud-Co#}~)OpFg;HV+UzL1IeuoWz9kLTMy!QpRo$0vrnLp z*YeKJoUX6CkAbWSknx;G_5U@A!k}h;<71qUy-2#y0lMa9tkcupk z$SOa1eh4dwwWGhvbH4uzmZ?^)UAp=Glg;5Ywf_<#sQodjYH9!-Ug_I&G@rqw*oV!#Q=XkVi-CW@%yhNJGIv z;aR!Cgz4DmuNo_T-ui@W3ssp4r#D7kfX8OO*1J){(UBc;_3?=7fdiu(g+ka&?3;AH z-Yr=YUP?$}y+g1loBN6JJ(7^J@))4v!1OdSH2k<5!$3<5f-FD^0EMWYUjc7odfE+i zsPt;5^_T^o2nJNBfuo~m>f5%piuNK!2giP(tg6hR_H%-oV77?!;nX!R}!{(&uYPD<%(@sXWTfIXKOsjF*4%Szo6}essB6DJO27D=! z|Kf-G{NWp5_qBHoHC;|(|4?sJi{aq?3k`T7k*$L01JblYIbk2)Il8(sGcnm%Sg=_S zYcG{}|AIhBBR4lT-o;8cCYNDI`E`As=!X==)naf;sb^!JB8D*yxtqg~zNslaP68^PeBM;BCXAQK2) z@Zxotdj(925{D_wW$>}xPMe$(IRil_TLI5RSol0Q&D-Szv*U2_8e#a&b^PP?hE_@A z;{hyYjs=I{wg7$rnrwLg#%x^V|C@DDvx?~7|*dz<8XlMgOe| zM(_;#>-)1gHCDw_i(UF6u}OlNAXU0`U-yDICY|#xt>I|G^_a-!CYOEbSJOpgHnQ_I zF^0dkqu8Ny7gTA(GJ||qqmH(bF+7l#xLjS2ow}eWXF_3uUBWsxHcYO5!xs`sjZtNb1;s=nwlG8Y!h;jK_NnQq=^5Olo0q)(*iXt9cwEVil{k4-X{Uuhr;A2BO z+Wc%{uIkwL>Lrrah_x)T#>b)&uJwKB*&GtqLdjgTlUe+M%-&S)Leaokp;4Zc$fUtK zXyO4gZtes@_SxAR&@$mo7B7LQ+qo~5b`Sq-y7~R80@BK=vg)d`3;e_Ts}0jDMDLG# z9MP1jbkT;iMKEP8WujNFJSll%c+;xmXAyjW@e2$Q0QNWM-AL~qam8tj3?|0LVs?>1 zv-|+MLIC(nmpn*76ybM0NN(+loBa2c)0OY;sCJB=y7;R_Zz#u(7&q81{M(;jve!aJ z+Yv*RAd4d`MFj#RKv+XjV`F=}oqx7l zehzXeJ2AyYMNQ>(-)!ypiFxOcG|W>0Xkf2HJBNngv|KdUXnT8Ms*<)K*u=;PoC(y0 z{&~ge)?zri-&gdrDQ8x9Lt&uB1KJPlZ=i&Gc{L^^PD1ffxxW}73qqf$Q@h!CYUzed}r5}Kb^8GvB!9_2ibE$mWTU*>fM6|WF1uDf_MHVntsqvng4kl*9&3@9* zL7|}RmKRrl_6>@+@rYMM2>S?|qJf;Ym8XUV`sK+syKu~9N-dyL5^2o|m0aQEN1J+{ zLtR}5Al$`BU*NehBSCN3=Zi$$e0}p|aS@l0FzLKGFG-fM$l96|x4zfzeOsrAu&hp9 z6qW_>VeV(&bc47QFr%rcI+r!$=5h-v;?ZwKZ^W7tMd9>*;H(f}Ya&69vdQ#ni%n2|0l2P!DVB1xaE1AZ7T5a*Uxp){ZM-`0M6(5cromqi1T9d5f+Ks z)s`O~J}AT7c-Hw^Z|ehnVp7sS*TKWL-5Mym;EV`G6d)E+k{!-TVPw$7Wv8U>HQ665 z>E-3o84pV81(s9Lh&99)Z%SA5ZqvG4GWRTw{z4-oC9qN*h^bM0cq-PG9sWX+HBlW=0J#1<68~$CoZM@N0xkk`{(|mhBWz)Y0`Wfe#7*CliDJPEsu>=>v`RJmuXwM3N$N| zJ|olh`uppz*Z%%Jo3$)4F*e?kP$sFktG}=w)wFhYPDoTKX}FE3+MR^7 zT=F)5UM+iF$F%zB*`%DUg5V=AB2crg(X`Aw@fC>JHw_1rcAgUe?cU3@4&!(jjdh{*7enuzrR0Vkkd0WGjns7Wk2e`$*s`N!NEbmBIe!M`^$k7 zqmmyTjRV2fBnVZlVNzA);QT>_p;n?3>-fP)PM8w%@p8RK;89*d0(lad9==4uVt#INFFCOW#+(R*-!#blu>Fe&!=#hPcMA2CS-8MB15 z%0PBqorY`GpLmL&fIS2B+7wQSP-ln$f=fsUVGkk(utQ{}r2(WUO$F`k8`}(Z&35VJ z=c|54-_%U=F4y_LL1@WN)42yvw#}1kZ>Q@pX|MgI(SZRhEh}s5e}QbeSRm}s z<7?^Zfg^?mu%sUib1(Z5``HLFi&T?NRp{RsJY1A4g$^gY<}^Vya0oC)oeEmU~o~FY$4d^eu*tK?* z`jDEQ7YYO@UW$r}NE(dAd3m&4T=Bb4-=eK*ZeLqwZw7cq#k>A2arHU2IGi`5&(5y0 z=&RhN=Jn{_$(Q~Y#@_n;QKQ14J@vkMM%qfPNPTHA6oIa<;B+XZyt<6vliTEY71>m+ z2IShBuXj8SM#{^jUz=()2%E>*0`cuwX=Ns7L#q)52-sj4mT^;1P_VH4spK&SByzqU z4;{2Zj^ zzDY}mN*8MR(!zn=4#vXwj~V8g1rrt^3!$BwoIJo-_vf6)%ky=Jp_FQ~hfla8@ut3| z(PL}%l%Cs-ULdB?mkgS?fVjBHVd&%4C&zmo*Ww9&>E$aVxYlhKeHw#0i#!7kD~6f* z=k|KpG#j|3rV1s*%KiG-x!^D;JvPBBOJsx&?xQeWp@lTsS(AC_xU|t0~9vx(;7)icer) z(}nK>3AJ{8`*nR&TuwqW^nSTncWFal@jmrdZ7|vWbJsvE*P{EoQ&Bmqv&zE4nBm3~ zGgzWQM7=p!At2oHvjK~anmWh;e{AwygWE9$J3H==0xq7}k737b9ySv34EZP=u z0XSJ=BB5lOLy}A>_a|5T$tG`qkXb zjO7QVpdy}HePZ{m%%;|ql~SMq2W1g~e_CgBfa~35Ls3~-U}v9&H79XgU5H=3`t*%nNO2qpmnAyGn{5{I2`vyoMU0s| z&N{^P99gVM6*UGe5@wv>hidcwAhPC+$6ulp7Z<6L`6}~g+(^7GcV@Qq>nDw`hqSJ5 zh=$=OBNw)hr?)aCkC{0+^AnwGx3(8wJ6E3v^i@`G7g+uZNQM4V&XqeSgjH!;PgTel zKewJjy1`uBeD}Xu0Kn@&5Mrv>Y}dfFa5^z}XFOtcy#-YZu1e$r5;YRq7KX@W^=CfJ;LdMH1>=*MpyDp1#5;S;& zNsS@$N1}$Q;UsC@TziVf8nA-&x%I@) zBcsfM@(%0Dni#2$>ed*F+E$*0^$4L@s(;&&wdhsHbb7W2ZIUPGO}>mHA2^%E-6omL zG<&*21kKHq#4zvc3E~X@`rUw-ChE4VJu$A#6*AV^=V$7#YHfumDO6zo=wqWdzDWdo z+(R9~TJ0L3GypBDxSOk^m;Y zmPEsG=~D(7bAs5>j>^EO)lV{+m00xkT7BdjQ+6@P%NOpG^%F^FWdEYwe?nYZ&_kY; zB9m3%oU&rjFpAJAAun zlY9b8rAO3q%Q!?$|L)mvdHoH-a%X&6XflpRH_3u_sN*c}hZ?@y%h32?5NUYAB~WI5 zD&jT6C>3owZ2DMtceH=TpQrNAM=<69?jAoE*OWfu%G*f33@B8gU;?J10`QMe#qH?$ zc&5^P?9a!(zxj`Pj7?j6l`TDEW{HXgH2c4r-kDoiC>4N{hq`e#l97Q-)>ZV<{R*Fh zEhsEgV}HnxG2~?_2(PhpmltYEZAX%QEp$glu!x?Ft|S=#4o;GSwC`Y5&592_3IqZK z-1=~^>+1^^K_ZDTkDC0&BhTllsv~O15ejfXl%KZ+ZwvN`82TUxYFccx{#|$w==yZF z_}DV*Y-j-tM_^Ie+aCjAy21M`J*@Btd+udmLMTvg z?d?IGX0CN$r8IMpm(S#25J_Om`;?{Ng4v>t&X*v#E=6HH&oZEPX?)m0>(-%*c?pWaHJ=bM@{T zw#g|eFQ1B;o9E@`<}%?c;HfGqB0zA0!yjTWmAYy*i4BRG60>d_h^K)7*?f3kR+iUP zTs%9)wY)zi@Ok?jJ~;{N>}Ga0O$2>7dBMuzD@!aVw*;X9Nn*@Vr|9(b^wsHQ4r|EY zC%jsg(by$kw;dQ}-72k5P7S{FbWQI~?(A$j*p6^Ccf^`(98Pbb#bVllASPR+zCn8y6j{j<5Mss6MuSt4a_ZOv9!5e)$t2~@)n zb>LR;2pf^S_+TJ_;-@8@_sMiwjTrF~@y05eKiHS-0c}?K6bP$+f$Qnl`lD+7>0iH~ z0Jdc-nY$@PlZ?EYG{j?O$0mEPqqFlf@w^b7V3|hfc`6t3qqTc9Qo(`mqn}^#+fD@o zZM3LP>5J{D2(cu>G}E+qp_(Xd)t|CQVk#|@eD!GwoNM{WN%?p8_CT4ZIQu%Vs8poA61;q+fT@@c6ixHlM>lfP$ z;}mQxr81dLc8?wNRq#b?W@uJ0TuF}qo7(|lV?@N0D$7mpA9FkWc4I34hx)6_$$7*~ zbo>INTCn=aReQ^BH2$8t^+Q_B>D`t!aIi45vDsML-@*$1)wVf5&uj8M$p4FqFi6hg zc;r%4^c#KZQ&LR61m?w#K78||^@TSZp2vR*+fH91q{W+a6YC308TyA-MF*pzL)`Q682~-4-sw^EmcOn^(sN@zGN7i;N?XlSwYL4h%M`-$*9z}gWRTELmOUaRZ zjIrVPvVD)Vcl4*G@|(k@&CGOakryvUr+?5-ZF)^s_Nnn4ZcRp+d>3l-PB+Swjul+o z*iafOe|SfgnFv%e0*=$&eSM9d2e}tADO!0weOI5QO^|q9)k~o9$;!RiKF0g-=@9S| z9>1Q;si_SfhcWdUiQH?dzlTGA>kYcw?g1w3vptmRwYt^L<{%>iT4+#to#yW}Wμ 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