From 54aa3ae27eb78c6b2a5d6757325f23df3cea4216 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 24 Apr 2017 17:51:07 +0200 Subject: [PATCH] LimeSDR output: documentation --- doc/img/LimeSDROutput_plugin.png | Bin 0 -> 30886 bytes plugins/samplesink/limesdroutput/readme.md | 126 ++++++++++++++++++++ plugins/samplesource/limesdrinput/readme.md | 8 +- 3 files changed, 131 insertions(+), 3 deletions(-) create mode 100644 doc/img/LimeSDROutput_plugin.png create mode 100644 plugins/samplesink/limesdroutput/readme.md diff --git a/doc/img/LimeSDROutput_plugin.png b/doc/img/LimeSDROutput_plugin.png new file mode 100644 index 0000000000000000000000000000000000000000..e32978b2105e9eb05d81c300a4302346a5c46a60 GIT binary patch literal 30886 zcmb@ObyQVd_wSJ|36Vw)D4^2P-4c?5bT`u7A>E;LH;8n1cXxM7ch_A!&->o{yJOrx zuVZY^IET$SXRkHaT=V;x-)*3bl*mhD0%RyCsFz}*Lb6a$FM7aXj0g{2NwMog2M_Q% z;vz!e5&XLmtoHy9NS30?Hc(I~SkK1`sDvau@FIe(nB-@KRaiXqcO*~F`I+D)eA~}T zwt^OBX8Pu~P=eO_+P3<7Bo5zgjYveqBxMvm(Qu)lNT9@o_`f;M?I$}pzMj18=A9kP zdG9jao;9_&-D8G(UAuF-%ELj=yTi9Y{J#Vl*6b#JkcJ!hq$+fW_i^fs8`> z7^LS%g6Ku!!wfAwYyyq%0jGlYQvws5;B&UOT9=ddtKj);pVI(7WG`?cV%GE7|9_t# zzKwW(YZB;>;K%>#$qE@4ISOp+1O1_c+6*x_nFky{Y#H@3-W%M@apGUiUh1<}P;b#^ z=o(&Nj_?Yc%3}zTP`x!k=n$HtYY2l$)Ai_8Y&{er{;?ChkGphk_55+r%6WXkZFJ)Y zxJxBF|9t-Qj|rwlj+P#m)v%P2BDmMPq>l{y9I&ZHKQax;!eRMg$CiBTe;l?)W!uro zvpO9X#M zUTHYJ@>_<3NaA?DhQ$bXSLx-Z0t=KiVZ6-bII5m5asVk!U3#DsRA6on-Vn#Kd&yQ5rEFG`dQCbm zrO5S5mi&24WifV1T*4@WpC^7uP$l3$5m3Vd^EN7+Xr7Ua|9LiZ)}c1vbzh=NV-WE@ zA?kzpgdG!up4C)_ZT0<_KrVs-K60C67!MAFs!5N~i~kW%lY(_hi%~By8FpnbeEI^p z(x|-<^^&oA9J<7K5WQrOf`v#vlX#|ZyJSr7<-55mD8VYP4w-q`9g9P!>06T((u&Nz zR(N8uK1KGDVINFj&NLjR&%JxtPW2EXQ4f7O5Bqajs_D<&QoXvKOwgQV(oD10{)2BG z_O$Mnd~YYP?=7Mi#=iyBrkB96BFma0)Fbn7v65LkNGhT$74*+6`tj4&@V4f6ofwt3!HWg@72a zd?W*z)#mO&i~Y*{&(Ix`MV#DyuX4bQEvgqP(xheIm?2m5xIY;_d4I3NhSX^Fn@{-j zXEA^<6_kQC|qs)OUJ)9&{6DrLJ6;dktC>`B}$lmIyT`bBw{v-76E=XWA2Ip6y69wWYH+$PY7L^m*!7JmaWj zjOZ=qMUfuv$vVEOi*K-U9u zDdEpJMCEY$>EwN$_-7Im(pvZ03X^%XP!&O)7&qYtrehPn#40nkWcvg@!>n|uGL(TM zml7)2yOvQh(LwntX0#u~t0U(s8)4*v-^g{+zRDkTD^Q+UiE!dgph>Cu1@BlgquatG z9(zrZVqn52m^i%kNb%kHIt0> zF9%=jj5L66io?36b-91pd<`)oA@R$2OU_2bI+5o@yv3&%e_xK|c$USj%Rp0eD_QNK zwy3ICLR9kx{6`VpHAc84ln1I7Jd?Mz4y^PSWg%vSF$K#b-;^nJAI$?K%QZEyW9r_b zyo{covUOtHYp`a8fM6}`m@=0)^i@_yVGuEKUyg~4$o54GO=~J1lkJ@lFr~b=dl5!1 z|E4Lt&X~7KHa zZ6m{c0xh~>vf|;EAckiF<8Q8SKG(i0xhMG<7ct^0<^=GW>0N6H#d4HTHXUjTII73f z-~Js=Qb}c&PPU=$yLqD2us`P3!qg7or}v|&%&%fc)8|-N~7+PPNj4A z-Se9-y4AcLx^*6%))v#FAcH<-MsMw;Cuq^KG`$YHd%-RI z3UAqa3Rx@H;?o;2%iR@==@X+)c&2vw6M|6Pw1d#+bi} zl6IwDe$_cqyH{}fm98b0)1^9BB-gU80x4U*9Ag*m`j=+fx{fRdCwkZE#jTr~XoImF z$17IpVg_}%I)Ng>(G&eYCZEFAe9|ZP=%|ef;ySB-{&JPhn)%ek`AY*&y?ycomIfTC??r|sC@6(2@GRz&rq&* z2`}cGcE>Hx6xeI0v*kR&+K8yuA;E3aFWrXuk2(jbqu3RqAqu(e%A2bpXMKyVh?NMK zJto)d(o+0rFYgIJsxXeFC%k4R$t6MXxKIA&7gQGxW~Jd`;0+X6jvj;FZnfSfC8U!x z)-gH`<)hG}1q3n5cRMZ)uV4_ zE{By>9`7=U{;r|udpYMS&@EBb{n;l>ZNkIdmhFx z9?DFovn^`%x~Rv8JMnB){NZ9Bjqne9(k>H9Oy6W*O~W#DriS3vV`$NTJeySTh*lO>3D~1>WJ$_OEbJ}=X`&D zTM6ZvZgF-U&*A=J3h4t!>Dh>r!jpT08g4!_4?|hy2JT;~3QkALpWGsJ&?DtGHIq9Z z)blvr6%(zt<8McE-j>9)wD6%3vGJ7~3`$frU(T5{TuiA-yQRQ?`GgqxHcyhTr_^H7W;_D0} zxAmYRWlJ>6?6mpklq3AhrsvXM?JB~?I-Wm4`P}uH2M7OtYfD28yWI|m$34G{3-e6CuksYV3!Mmp#nWIg{2 zl62PJo-HQ9i-=x620`fl4y6hsgEnsSGEfZGr|ei3kMdD4@3DfX>#LCT+YjXo+KUIm z8^>hcKrBLQleZ*yPi_(#i9#DCeiSQ;p_KihRUjP0e6`Vkz^wvfxxcS}jtwiL4uOB? z1ABux#TMXdMjA_N7?D_9Zlb~dhbzfSqc#&=9FN5mPn!3E3G2NS6J}2UcKHviN`I$e6h~zbVDrC?P}SBm-pcuD_5EdCc5c%mx@9<#Z=Ri z=!{$~&^Htk$X6G_=O;1|q)dW}ZF^RMg#KbhR#w>8p?3S#Sn%|`A1l3!+Rm)#xm4Uq z)>{Z`6^j1YyT;mIDed#YPamcmxc$8TW_!yflTUe^!(&HZh_&t+b>tE zwf1dk`C~DNORd!61&0#lSYg(m@i};=Og~ssp9lx1>vXgKYu>l(>+9ori{{nM>;=oi znNn|do2?QMdvg`v+v%F4xIDO>PRS$_SvrS@r655NdSZ@6v~iaot;{^3Z=scge;dU_ zMDS@s$ugXc5c03*8C(pA)Hb?^Kc1}<=Xl_Yg;hl)H9+6HH6o&&eX|ufWe!H8S<<9cke=l6S%?IiHU_RC`)h#9@1U1sFKZb^Jr|RnBVsl#4 zgZUs18Chp2iG3iMGxqOaqr^To9-b7CAQ;{69j&dcm8wkf`(x=0`=UOQk&|OXwzs!M zq@;S+bNBc6*RE$JGN+DbOqDoc*1~Hgl2r`h80Zh7N=o3}<{_2HT!X0fr_ECjziB>n z$iZD*es71Vwuf3t{sg1cV9(q8eb&g%`QDARWxC&#%~*cZeLvc-&sD;?2A7-D7t@Zx z)50T^k|*c9l#()B({4PSfzgrn6LavkL80OJa<17aCca%*wrbe%^k}f!m!S{l@gX&L z@EWca=mgTt!M&e_c6*s}d6y2Jk*UtVsNb`$Gv4a9GDV6OP$YOH{nrqD5V zj{Lpmjn1=D-2ABXaC^ZLdlIYZE;e6fc5-(1j*c$;WW9TReZ4&hn`)-ngI6wB3XX)8 z71zVVBl1xFM?(V_q3+5H-Db}YylcA{@g1Q;j2=JM>sM^_soaAEGITPkG>OjlaQE_z zn1{AzrC#?+%yUX-om)F!oj&hanR%#LbHICJM)!GdRG608oSuA(ZYa<0!z8dGTD-~h*q`v_3_c!7O-a|C^d6)l; zl9NVlWcZ&E<4TDHrodX8?O#8Cwk|cgNM7dV+Mc1MRzi{ON{-&+{xWhGt5Yno69RKtlq&& zE3{pg9DzLzdhRy;I)yj15$#n~4oX=bwf*NWoZ1N=5bFf{H3(#iBg0e%Stwuk1gX5L zy@9)SbXwcn49rEA(x@4Lq4N+arX5s1>;81^yg4*Gt%}6TTHHde8gZsUAd!~J+Fwn) z)eZi>PjivlY zCH&2-BjT_PnAUI!RW3I;>7y#P1ncGxA#uAOCLUf-nSOszb)j;(AGvtUj66y6{b|2- zx9Mz|FAj~$@n)=M#;DOugH!qJI<@fndY#=LLAX;(;!n%Db2JTMOuuDG&UEFCbSEb$ z8dUdAzN=qguuEeb4J>q~NQ-7lD#5f7PBYd+(&UXAf32^}4H7HfI;D1fRd>d|Hd>^{ z`vJvkAywpBJ4T;Ew2=HB!2v<5r@2|@s5IDKvYWSCTsU@Vp_2XmF!?NZahdgL@bun| zQ?1%RB1;4kZM8E-9;s{#N{kjTbwN)eLQxP&UK530n_3XJ>{&_8x4Zdk7w=OXGuqa1 z=rjh_I)e}P8Zu(EUse$%zl~t_WKodpVmVTY&T;mxn8fNquEUY;ps*1cwuimB8)2dL zISbrezSvz#*Q4;p+KyB|#Lw#MGZ8YQD5}b7&;O>WA_E7*VtO%JpxqnsG_cPV>q@Z? zipV!^h?Tz;izt%d9ger^Ty{r)CqkM+xkfc6Bi%Vt<#@Axx__a{)*;8{4!&jFMUC{M zDyCYn5l4u*S9_fFY^}D1jgqE5;IIA|W>v}jrg~|j%<;imB}eddH$^q-YZQFuPpr~F+8c?Pf66dGV$5_}a;M|(uS^Qs zic9@Q5@D{l8)08LY)|9~%v5~GqH8>tt&OLmrX4^|`TQoNR@BrLxv-sp;jlGPxsfJl zf8iJ5&oG)q`fD70rGs1E@ULl9B{%qb&E{s;#vKcLmME622kM4A-D)vP;N zr9Th*Ls_3zc97>rqm*;(;Mw23G@W}BTGisJHqUI)vC)0|LPqKL_EF|G^-zAIg;8gd zF7AlpvBAx_ptDW?%R;Dt1&@UN1+G}Ce`8p%1WS6_HL^h%mf^yYcH3icrLR@3V#gU; z)zNBwql@Y9nn>>G%L9stc7Jrkza!}tX7e!@d(&r2E=TeE%cZ&^C-q!V_4WsAow%CR zkIS_-hB;EnU$%#md;9uyMl(JaXf)O(rIwV?gPKR;>TvM{Y^&EN>#nE0?~}M)aAa=J zgO|uD*LvTlR@}fX@7lhn#EUyywCA~NUiD!?)VV>(yxy2MQ{C9g*ZeC8#e3_WX|CTouT98#mfSCim+)ER4qT+I zk2lEIevS9ijf|$H@VXUQbP9Uct?m`R(CQub_?Z%K*2MfZF#IaD8C?@XS9QqV`cv*i zO{!nOf_{Xng6C>!E_%L>%EsGZbBl3ruaH)ac!;fdVc4I9Ml^ATz4QExC%zPJ|LH?u zeX~WVCRXU;{c{cFi-OBwxzd6h?zHh!Bp_IBP4|PH2;|kPHc)GH{UR5?ZhpGsb#-;6 zOhW#{?+xG4(QyohF(Ns6u*PaVj@N?+RE{1e^>T@<7F&xB%QRJ^JNr)@L5Ae&W*+;T ztzM8vtueRT5tA6uYH+JN-eWJT!^17H)OQglCVEo zGPA7iT?DRUGK0i$r)B?%wo+nj-qdnE}d=v4xYSe5iQIe)5g3}6)U$P8rcs4&%t3F%Z zn+j~cRSOJ9kG%&ug=4f*k}-h=nPOxap|a0=AjwrqQ`DgQQSQEiJ1B{(@IU(gl=K^! z(L?lSm57+}%hg+`4iN+P$sP|DKMS~^lIX?i;Pzu%W} zhiXDAJ)DCMh1SwNHM$b^h7dUJ#YLSpGCi4$H8A2{p$} zAfS*G!)Q{(F?i$;aqsDke1CF!ssn_8>*LKf*X`fTjm^!`8Y^9uO5@HfvB(dg>wtrhd0T4E7q&N9TzSADm zjO(ok5WU@rJO$pwZ!T-FzP(WAL>{+f)@Q!)<|;8^+5xzN*%@ztl- zY{OSugNeb@%TC*Gsw|d=E~Yhyo80a|{k1<=8I1KliY|~&ttR3nAqxfuh74D*n=%25 zY0uN+6>kiUs=+J!uXt$<9~QF2unudtiLpG1fYNM!daRd(ao~~2)GsG5mR*0SS5n0tt7x zp?G|Uo*;C=ZdyHw&B`lZv3Lw5?G*Rh?+Qg~-(O9ipWCLm9J0qyD+_3AlPt z{-!3J(UJV0STKZ_PwW1L{~i7!XV71tl(!L8BabJyw#18w;7Zb;C~T}uas=-~0B^8b z@4|k9Fz6wI#h`zAf_&6D$2y&Gui=Ryku)K{DRu{S%p zsn>_~M}3{FG&G?=gOod-=pdt@Ik*`|nH${^p(t;Ijwc7z#ZaVKK*N z%+ypN9AmsAP`TAe}I23OH3GAlp|(p+^O zjSVC)_v^K-mZ1`J)i^!?&5ugRGO&v>(eFuaEZgfCgbwiQa}NcMwH2SHN5FgisI3!l zQ^n^P8;p8bDb<2B5K%{HOjF|ji%0*#xwN4UCfpbB-%ZpL{@5kGzcwbqLznKEWS{yc ziuRvzG|Nki^Xzvo_X#xQuPa!-?ac>PV)D}UOmni_=R1X6JOfJG z_UaoVWx-cCcl#X~@q#$7sYeIo_Dj-D(x**J+W5f)E5mZwsxJSjUFiOBc|~W0{QR_& z0tJ2}D4$91W9L4LmP*d0_P}EkiHoBMDuAr&kAqzAmk;Fq(^*@(IrkIM(9s?La5AC% z(MXY>_E&*pW$_IQO-tv!R@+0C81^pz9+bKOJx%jZ26`sywjX7~Hhyj%v=4I2Dpy|B zaV&aK7o=tE&k~uNe{B^@gZ3!i_0^1qxGe3=uVt2$+^zdBS_C{CWi-=`WxSie4jnXRcn$J#suWmUG}iw-;JL0m(kiki z%9eu0Ltl6OWb%uWQnzu;JpZ2Y%L^;)IEbRJu3e|QTKYdCCNg|youuNsKlTg#YgR4}g{BH3i1;h~Uf5fX+nFWJmU@lW@cvSa^8oamkJwAGJ!x8%7LA~t-Z zlZE>{e&exSv0TrU1RuTEVqL7hBN zukqfnapjkg848JRVzr*n3PaC(9?-*sO&3;;i2gdt_{FK|Fa7DWEYLp{O*c3(FDx!+ z)I@sj24sZFi#x=~tWOYTVSBy?QQ%vFmn^KK^Xk*rykD4J%5@G$wDF*QI+fEwgi6FG zaMZoPaLDSPvSI)9#!;XBkbHf7u#r7@%($VPn~UkUp61h3pM^maL%Vn?PDG*a(}Nku znW!6tEqd(N<;!84$+p<>{<%w2H12lNtssWVgktzQR&NT=lG_hNUw+S2c|s&=lmm}0 z8FSoEZ7~uJl#@iRWDJVqo9j>6=6`9Zp3N#((OE8|fcm=kTvKzO%UR!p1TM%?(y#Hp6iks}D!w;PR+Gaw$xU~zZm$=X!eYA!IdWnd~sU}cu?5X<-Xkx;VxHmewKrWC=Zmp`9GPY+v1y-`pC)W4Tij^$VtF znx8)p*#q>e@{lho37EKtty@2sB*vilV-=JyV&+p%%_OWR7lug}7vAhksPbc|eI|KQ zK{i?Tt`Hxo!{utkNU;Bbu;epLTuRyVqXq`H%uw+iMx%!~(Ri#d;T z#V|#N_s)F?oNvTWLnkF3ptWf+jr@_PnlNULrPH*pC4)ym7zfX3@%uFkF1+{V$(KI!pmvFG zo^_`MWM#kpZkE1e?NVw7QB`bRI@;@ViS=?p+6dm$>h~bAhy3P>zL6Jk|Fh3oH|y*< zK?uGkC@-mK<4<;Wc9@JO5WSo3J9qO=$hf%|(|J&Zso=(BPED*fsjAF%sSv%W5cR4_ z`($JCk&e&iSr9Ck2o}qP0gAVSYDi@Y71)v!J&o-h`j$$x^e6Yb4mO^-(BQd~2~&b=GCy z>pM!jr@Dv3)lLiRIAnXnw;vVn$tk;PNh4(-!IgKB(+6{jERL%%EHfAD=K78|ASf_@ z>?oyJGfjW|bhu{zaSsOc-iZ=4R8PSY(x3fTWxjeZonm|QrEtZ|)tmn}4K)6lf7t{S z3N9@fHFXH)JK>0*>8@t?RrBV$9RZjj5KV?vKCrnu?U!~NE!HvL+}tE_*ahkL$5`#p ze9D#u3J;VPW0fX~V4eY^(LGt~1aqx|`zh1u1Qii+1)#r=IMY#4udB@FyA(CufmiWaFowDEZ#7r;jGf zHoT&7+(ev*bG)h!79Rc;K7MZmsi3In2dBJ?%4v=E{{G;rC6{5+>7v@Nzh4p$w?7GU zJ9X;?eNV4K%<@(>lCK;CRS4MM*`Dr}pCn+j|2iD6v`Qqg{rnt^Q))O&e0qBNcdC%k zVae&eNH}q}e7?dn_?^sGJUi)zz|fn{(1VJ!`)rtZ7}S8&=KKVoAV(Qy(mXe0Ad*3o zg~j!JR3wSlBL(zblxZWTDFrLPbVj|uE!B2FwV;u0o3;AO_1^uS6^pnjK6cC8(s6ou zFZ^nKW>)Xsjfn{j=|eS0TE+@IFe#d*)&t@5;nwzpR9x;3te43F#S_Jt0g|G+l6n=B zR#i-mRU75yW{YT*n9E_lKM-oWLDk`a)e{EuuT_Mz#9)xX4;?ZD)`FNMb8>@f<|w`S z0^2jNsk7S)syPDVy%=J)9$bzf*@D?IYT;JtajG5VQQP5Yz|OEJHGO6yIq!(SSij9FU?#p>2? zy>vWmV%QD!?oW#zM&HEElexgF`_$N*{7TWWBk0P$Hx{^3Kw!F+WrO1BZy+UhEQwfSNkyNyBZ z!+f=cA&?`{x5bv4aOws6s@34^Y>>$ALE)@mSBfL=2Vf19<(ez9uQTHL83mPMe{XQ! zf{VDz1f_IEU7PiygD;CMdrVdGSz9Buvcr!!lsvppEv6Xs`nRgmmB>;)SE5qZU0LHC7L$Qj@FG$t{pf z*WgcSEPP{jbzUML%daJ6Z$4}v>h&G-oF^VLE0&*~93Qs~4=3*DZ&GQB*RK!E@-UR3 zfPU2GDyw2T)I(P5hJHxJ3BVP!4*ak5Y%ladCe3RUr$jbD2_Jvf|Pg6n1? zcB7la!Fjh|k{M-giyuW>e#av8Nm2kp$8iJQ`7toHVzu zaAuyRN?nkUQZ{t430Bl=Ntwd0g7)S-vrcfYadsuDaNp#Aja^ny@0)|acK&qaTOWV2 z2?0`hJsUpS|MYWUnYQAF!&!fy7wo~Dq5(wr~NQ(4n7uJ%=h?9Z$AsQJlUVL`)j6)rN6hC(7vX3JIX1W4#( zphQaDADrtonwJVuf5W8FW7~=`#22g>K!3MgNm?c5{$u`GAvgL4MDZCouyAn|8ypS60OtYq{>zRz832}8DO)w-EY;gs1+*Q*x zZPdPe*>p5zSe)}sAkrN^pZhgDRK?u=f8;f_cntN&Y29B*YNw%Ppr_Q(&=B+_oy3L- zfk1#P*1a-mE$**8oHVLk#$Bj@t6hf@A}-N%gn66h;q%ZY4g_+$-^*vJ(OG`<*Omi^ zR;{Na5bF~jYGySH!uPUhp58x9-v{vroU?FYzz<)D|z#l`j9^2Nl&o>oDV4XyX?e?9cHYREZDWiUCM=*EdisH z^Sl3zhOzN+Cjc;%%Jh(YeSIll#wm42()fV@jRR;+R!Pa|sxJHbCbMCQv?iZV_;V{XrP*wK=j)8*0FY>+g>EF!o1hdZy8|~#$d?_5MLdL>q zg12@$W?82XgCri1+r^2X)F(Ebx2Q|Izn06qtN?SaDf;eaPaHyiXnm7++BfHZe_)UE zbgvk1-RQrT)}#<;yU9^@8Pc`@cFo5omZ>ek47{`d9JX1;QC*X+2Qq;@@Mch`mhq}{+0Z8qy1P!OyOafX8wN;&XbPB`mt@XWw-qpBZ3T%7j`R=2- z!0w|!t-Gek4$Yx7jUVXfi&j{xq25k6yu6A8+vyMW#~W_kHxH?DWVr^xVl?JYXKSnU@wpr=Pi~{B6hWjaoje5uoI3mg-VjQSRHpC0+Ka4~O&0T=MpHgW z7sI9FAa6(>tPUEkR2^dcMYxl0DX`FPAF5OQfcuEFyd(Z;P!RCj8HatYvzP~|v1lg$oacO(Q&=xE(U{<% zrV=hdgWW^=pmou`BEPF!SiO`*E&sAD57oPMWz42jg|Tf?BMMveNA{jWx$T4bxOrQd zfP61w?e{13!HTCM78Av2Gfb?dyCM~LT{?=>+XZ=p_TPP%`<)#+yfJfg@BXQmOc#B# zp034dXeTs0ObM$$y zT|Q5~qq7qe2S<3lD^#6!-NxEFAUs@TvY~-**OsFm(WMkI|C@n1NkKm9!Hq`ROkGi7 z{>q|?bR)k?z2AF8^LG(f3mNzBRb@g%2c9a0T}DjSkM~ags5I5=>)hNY=jTEP%1y$3 z0|P?216bXRZz1h0lzs=+poC{I-y)ljH=E@lUf{Zs4&72y_NN8tPb+xQ&E?ax+ zNH4!2jfYB-HV}8{e<(zxtK4~f>s3@q@8uT#vm{1qNFm$nOmS67HeT0FqQ8luIfc?O zEpp6QHovcXKFRFN`FP|aA_0FiiwP^jw03zr zRaqqsQ)s>?Kvh~8T@@5M^>I7BA@&2HWUX=*?W=P11|KR+k!PKbyWJhPQ8t~jv^+K* zfE6E>6+^V~1<#|D^7HK%!1-=Tc~fdULvce=b9@6_`d>*9gg!vns|+2z^o?}6N4xsC ze}da0#F6xX%i;5*jp5hE|8A09$X`F``LNPq&@|_hzu+6)LEjjBkDP zeP(osn_tCno*xAyD@mF^anSDPa%a7U%l(Os!>>>if`J8VLxg&d*@Nj>5f}Fc1M7S9 zF$da@u!qf%*GW_ntC(aL#B}(ihz4x0V_{8Sdse8CyjzXkxkRy;vBea926Q;UhdaRl zy@rN?(X7cJ@OvD%)hy>Nj_UmR?3-W?T`^S_5cxw%&luD=pjEf|&+XY^;HF>q0AMp; z-*dS7>_Oi`M$2@$I<$XDm(Kb&0&P7k@OT4y-0Y>whknVc_Nz#(J41Q+$k_r;P5(s^ z0Sl+6QKDyl7n75FJS1WJm-YQ(GN4E7mXsx3>z_8TdT5xZKPNu^K-e(+VL`9vz-Uyy zT0Gn;qhy_=={AyL9_UbiMsb$!(?$vfeS>eHs`cshF`XPD5 zm9(6@#}hP*J763b3#fh)-Y?cy9-s1K_zZkMADdm5W6=5; zmE4V9^+;K<#i#YVc0K(vQ*v}IebcW!C$7JIM6wHOKpn@~IH~ND)$cq&ayQr)FSo0^ zsEWC+Bp+hdSDhcHs!8N~tbBc#go-}sqiM+RoH6Fr@MNd|l%kJ=@X`CdL@(Oji%@Zg zckm@o-+t%~F#iMC1gpe5Kl0{pxQ}L_%pu%26qe)8&sqHQUi5H9UF|JM^hP?pmr*Ds zr*<=3^VXiWBP)SpMwKf6Ft#Cm6vfQZv{9p#sX&?C+WSYj7t|`t1yb9A!kHgu*~nTq zVPzBZY%`T7NymFQTuKXJs=N}B$oRD0AsWdDZxVc%SH~z+2o}yv2XGCvNq{UZg^m%C%pk zBu=sv(o#umt78sDw*va~q0IJEbHQedC3YN_DW3;lnI>5kZo!ou$@Lw@>PBG}Kp~Bm zY_3{`>`~x#utC7 zQzESN!+fHdr9-qswNW<;=UR?M=sJH}lg_)H5vhEBs1SD0C^J-4@WAS#k@mg+lr^J$ z&Ye#~ia)z5reiv(u+pkXY<@09Blc|tj4dRGy3ob*i~Px%KxOQyhU;=}ntL2Wjm?!q z$tuiVo$7)BiHAF3j;YVykso@d1bX*B6*pcIXlQ6O z0N%7|n&R>3#Kp}W&+FkHO_N<#m<=e=SsM!72xzteq;$O=&Z|^oNeb_s-c?qefuk-e zib&Ud&(P>{)z#hYe|_!fe!By((1}R>Rxc1GJM-0aAhEq?W{$Son<@p|0}3FUE-Yy- z{=3VAkJQw9fZshgX@Rt@)u*Zky|#w)F>%}d8O%nFVPH(V-Y*}1cH+UnqiO;3;*YU6 zZ*XzDf#m>Lj%<7vwX=(F5W26l_f;KE*YDMZp0K(FhcC3ZP5~V(iMXDbuwFFEJ_v2$ zogXgw9>4S2zE;^6@BEvw>cLbX{=W;>jM{oHhYzE^C9Q9TS^Iy zo0#%uxrX`Pgu}dTtctk_xc+pHc;2x&TfIw)Gt6vGhfFufUBpBt|J$+YqvB17BN9JMEII&VcQt0@^3d7^^4gY$)l$Wddl`{{j`k~Ky^Q3?$ zY>n-Vwgc3pe#?&+LPA0%t~b^o&T7G^*RF?g&NMaNMrQl_`IUjj=jqv*n5d}M)8j*h z>FgMJ{qeKm8Uf@)g2Dm2EH5n;Yi)?Fzn*@WMmPsu_8)Jcu>HEz`$+~?&S)> zXY8V>7ZMZ{L_$L|xH;VfWiNCI*pp7xZJfEC8&jTbdbfMU<5gy=<9DNl zhTU}UgR1qjHn6ar!ct)76Dr&X>|60$ji93a3A|eanntv~R;M$ohgEgd=9un%ai-z6 zP^~r(RmdkNCG`Z@>GX2mV!Y1I1mI>)`+cni3c@XW_e_(EuzKZMF~fHMFPVRSTUD+K zI-b9)(buEF5yd58VE6^r&NHC^6u=Rvfe3Putu1NJd16+ebeWmU7u{K~TKZ=X#0OckB^l6mT37X#d-01m4;70L?z0Y@U%!5dN=a=cJ1l7*%vBO`+J_7b3?Qo}K8J|AyE`cMxC*HWOdr1NXor!y#~SvU zuCms<>I|xXN#m*^KQ$G@HXUWAE>@hqZ3fo*Y^4b<6p-Ir!@N%$@rEg_ajhd|D01yJlW@cPy| zp1cLRa;?P^#(og%2R4;LiPgGro$Zc5u2gc+(Kqq&OcC_Mx;u+AHd#41-)H*VSV( z7fUue)~%c5)TAqbFvn+STgLV`$Q3>AM_c7dAz#SINrR88NJAVe>7EwvU+dmcub!uq zl}9(V`WafoC!1LneVniRr6E2%4~Sx^(N6|OWngd^Ok~Xk9!6l*{@5thm`oDU`lT34 zu}_We^V6PxZ9U&*^^V(XRmW9dTnP=0RC;Z%LG2hb8qnh^u~rB z4`5AD&;AzRxF6&^YG}6^=0^B1Oaefm`~CgBBe16I%$C0g4i6T>7?n)aIT)Ed@v2RO z?Z{a5A4M{TWsQH8Ds%3uYURF|zrHl{cbgwRUTodQzfsXN2vN~pD=#p!`)Fb!o@CNj zRg^XT>uhRyITa9e;4vYE0(`9<>`ThP?GB*J^953i*$I#z9^~HRMAeGX-5zajcR}CS z4oY#x0LFY@Q23i15K(>H=2{dBm+ z^ItSHh`}bd2|_y^m_ERcGNrA*3UGb70r^>r{mz&#KBECW=tqPRbMG=Z=}>+A`0?2X z(*U-E&CAWLEe2qLMqXpf*_?!9E&G>hdl^9s_qggv$kqX@mSs;U zUa0VC<=mQXFjc$k9&Sbhfk;7E$`v72jQ0a^aW%6mzEYXWL>nF2!KQwpW2uGzs6=~I~>Xz{^eUTGT6*f zQ56*ec<&e9SUF{6+!{A#6LYpMqfhxKhx1-c9LN1~#N5UTM8P9_7r^Ng3Kk*2kkV=6 zJJ;amVNe@shYr!oDdX;e6(t6?B{(=ZV27l4I@Lo)M%JApL;J56U_aqKx69>5UT#Vo zsGPF0$RZt{g5VDa;y$&LX*evqIfQNm(tw?73?wozLDGN-K3h?bmKp~VS&Ib{Q{8U^ zpWB=D4i=y~FqsoLq5VFY#2YOnY>Za@az|)GMSl(Ti3DQ4I~~O9&Z9Gje9lsNb^c9G z$)M~O=YVkZkBx3sF^5{7*?04XY;4KmeCdfHCED)jrw}3K|CC1Ljg#CK++18Wn=z`_ zAWDP7k3diH**dqhw3L;Ta|+6nU#ZJ&C)mpSydxFw791fRv2{BQCp?>1NxDK^--k&Y zh<^0I0ENj1dmjG#KCYmE`t9332$RWF0kRn|Yw6e}>FDTC6YI&!J$urgk4cWHIj)Z% zKCDbCY8F~Pfu4ri{eJsm@4$fG?fDM&VR%Rg83V(Zo+?N=4|i9^B`C#N0*obVXUQQh zd&FH0>;ZA!v3M+72Hz;r-EW-3#X1%1P^1oCKKR?OKE8J;JGzp~A~zgm4NNin^H}WYeEZN=Bv=Zoh6^#*gPoX9lB{Yt#ypEhcU6}G}8IA@Aqoav zuN!=sKV>w74d3(QS-$U#18pSdr!LPGo^KYKuKU2_flBNs7$3}B6MuSQ(Vv4LKCa=fV$SC5KH>s)R@kGGIPzBb^bMJ`P=?N!k+qym&9 zVHK?}xdq!_l$C9Vs7__pKg`Lztd;)B;v{JkCe+C)t^2XBS6#QbaU1Hd&dFF=V^>zR zK-)mQ>eov&GzxGhj=Wp+hFCn;$+_*p5SGc(AXQoU6i|_Vg)73)H=}x=iK>shaShw! z#Yd{x2Rz`qP<<^}TT&6!sm4JCY-MHT;j{;f` zpzIFTOtb6#GBu7REiFBfV%!_a;Iwvd5K5JKQfY1-k@01m;Gat$!p%!a{5*J|8u7;@ zG_g#&DCqI((AX&s-03g+mu3+r`wV6Z_vvVqhtQ8qv@2=|T@g!^N;QH2LbCj?>K@AR zGyH1f;<*5MS#9TUkwc|kP-->8L9`_)f60noDS+`0XXN`J8OSGW+e48dSfv+;vi=6q z7jA0yr$sWjuotSWjj-0YZ)a}t7iI}F#N7&p|!6@Zyi)9_RUXQARQp^H`437D7+RtYi}7fJ>2=Y+sxUn8O>9TQ5K_YI zI8x+IA)G;g6N<{^X9^p-*Bq9!IV7D{$)+K44*!> zezu*^DH$=>Rh!4NLpXV70eyN_^RlF^u+!eJGT~ME@RsgU&s;?lZ44v4Lg?OqL1|L? zfK$4X4)@8o6+u8PEM)7+vrj$&F8Pe!z%Bth0)T$9qKI}q*gq_>FLn@SUHTxUOV5Bc zj)23|2x_T;ZxQT$CBWD&u9|Mu>G;32E`0ZAIIya_Zvk4KseO3zf=^V9D(`Q@qnV|a+X+E~--t)82@ML%=hO9a>UhsEsq ze0}vdS6BN54X!S}Nf6<$6~kodLNWcF<{mamrz64K^FqY}Mb1*HcA5+BL<`ezo_Jp3 zji((uzShFPeL&2uwbKNu!Z%~*?+Yi8QX}AE=-w%3{Td}6FTXVkY2vQ$Mz z`^O%&tW7i@SW>NRycKODMapf!-$}#7`6pO8>heKwx*?mkmYyxe%SZ6-$P24l z^fi{1@kJYo??otYdg?xgxn$!_%&qsyT~*D*Y$g{@&2#k^vz$xVkeoRdxk#y+ z)vuM5aj*>8Y1TyYd+Iv`EAkxHl)tATVLqd+K9}>Y?gC3f<$x07uy-Wv0UwTRhV9NM zZz526Qp_VGZze?Srx#U_>O1j&GZ^e>T8G)0Sx%#8u9U$0^PgJof8U-W?=T5BN99tj zX)*x!2tj+O)kiYy`^SmMrJhCvR@RREg}W_xU@d2!;K~(4m0e6MH>QKiPli9}qjLnln_z%-3;E zf9^HruXeC%{*+8lXD^pas;6-qTT@>#plhDP9sXK`Wz2e{;IoHS%nIJg}ag zcgOdXqN}4~AZj?OsQ8sGwx!}*=h(OY3D4+w`54K)ajSWKmF!%)1WUEK_3`Z6D5LmK zR^-`6$T?|V1c4~<{$2+|jQz)<-f{-v$*@hw)B8CHC8ZI6i<>i#%hMLN2bvM)fazs^;ANpNFk1l)O^Cx!pWJlkq zt$)@AKZ*`3QS-=a&UOMNB+|!qCtHr00d{ z#D%GN%DE29L)0z}yu^MtKMa^kL~)CYcKAEex}LY3GLZf%ttfmx4T5caaB)zvzH=~_ zoS(8Pc>eJFXJd1deAOD>wCrrps#N1@2-3)*mB}LhU)P>*K3Hx#-4L5qu@Bfi>{dmI z710I&tZ{#SyarB$(vG{Zu-8zPM$-liB=>-WxGSj?83kjOC_)X<3zT&xFTm%vGNiIA9q-f4ZtDP1whi`yw<)$h2* z#>Ql1WN$g`KE4a?Dtm&;>xPCxKt#f10L{mbv*jP=f)C}63K9vlt?Jq#NjEOlcrVwI zdwb+YTknyJL-}NirCoSf)D-gJZYS!SNAonNBj6slgiNG~*K(bIeqer}2|2h6@LEaZ z;W$TuLA?{Chol%D-wpfUo9kC1j#0bkz3^nJkuk2jcf)#<+#=+BO~r0O>nSH0-d=0? z7t`4WcDaagMO=j!7X4wQ2VpEwTw2;_B1dj!b`~mO07|ibAdnD~kf3JoFw0Op16HXU z%VQ>^;u+YMqV|A}=VS70J_l|F+S|f~6EP`^Acw&51XRyJ|NQANX~*-zQ%4olv_9VHTW?mH%!|2%iS21v01b!nieg&k)({ zqUKDjj3fSThV$rd`*1uJz)ziM?>?);C@U-50yZnqJKx;j#}eq#vGTM3v~E~Px-nF4 zFkH+kp!rJ3)2`W?OuLVameu~@b15BboL`>_g5TH+tUk!xljjfo6QwTa zMt9f8+PSW$(5wZId#C;~>t$Xo&_le)hum_NC#E##6v2~FebvsXq>bw%iLqvVOErOO z<8VE^gHl;xF`wm1Czj!OqbT*TCXqIJ_IUUF(NnIIYW;V$fW0rhf33%As9~5Z9ID^H zLB9@@n^0Q7x}4aLJV*vm;CM5d~-P#yHn4w z2M0v8?xz-&LIqR*%}sN>$leCUE~SU`m=gP6Y}G9_j-VVU8R=IZVWejvt!r51pR=7}tIz0lvl;C<|{MV!65Mnv1>~h zY-6}vQvHc;``7`GhqdxYS$F>rSy-hwXzBr}3KXCb$;p~lT*b z1+Bc%8=Fcx?$#=**vO|RJ8)MzL)lbAcCW?GTjGV52UaSP9$oZ~WXMCVUFZAc6K|)S zRiis+O7(96CDMmoy`AC~5`@Q~<|&iP+h|}SoNEB2jt@YGnDxSC62dW*9Myx99HHEF zA_^&f^cp^@l;pU&-b#O+*Rk=Z>gwvZ_G$|mq7)z70C)b&UyI(1SFJqJ zDPw89V^)zz=;uceEm<(B%g;dfks ztXv!|CIa_d>|9JrinN(oo+0SNISDSBpDq~=4iD)vlJ^rwowf9q6au!a5}qq41=eLL zZ#8=R$tXYgCH=)dE2CdzY&??SZT`tl((Fabb@5i^i?^Z*MCSW61NQVIek@rL-tRjEkwgQNc#$)IYDt_C^ zYP$=-ErA#9Qp>n|(Ib2|G*u|g>vnmmBbCWYX;a}&kWOw@+jd)M_p$JDHE! zVJXqwJ+PW|`)YM_EdP{WItiyz?-H_+ADZj!8(1s!om!n*i&tM2ayT3a`c+NS`&u8i zblh8IWfZH=;`yrmH)VL3nVElpLu3IT^|c0UQx`E5YR=im4NJZqUsAmz z&3C8dwbH1a2OANespb7$OCR5^-wP+9xgBfv*ytj-stB?6YnszvYj8^eHAXAT>?pwI$`oxec0j(Dtbwb@u%0l^+ zSFD2G1$_qVScT^}Go7c;dQ%op1frE_>!J%?3K@5{YZlZB+eKuzdaeNu)7K;u9al*d zXoW>#lq5TUBvIVXP#g$35_&}QpGnE-)_>oswINPBY~_Dfbbp`Y=e}QF@T*J67NzXH zM;?VIEaN|Aw=F)m?;3Xw)}pCLhXbxmtD1IasB3u9!OTh(MJjk!_(ocNWZRepF5+ro zXk=k|W76ej>sm^dw6_N%m!?I>d^rJ@ZM6p3!}nDOuWiWB5#ugTxr{s-ioVs?^;I|Z z_04@U*E>td%*RH1q;9gKAga+KC1`_~t>M8WKJyH0@nOU+f6l;c&iTHz2>V{)-@cB` zIea7Tm~?x1;g%>*nS6mFDZJ1?F}CR|IHA2pL{*&nJ;0z(TKbK>z2G9$Y#`W(Rt}+0 z*+D*I{AB6fCjVaP^wVh&wJ#HZFplZ17UG;i2MoZLZ$``Q1YA6)%mqxu!J@ z#UDPfU}Y@5#FI(2)Bf^ZnNCzwfEWpabz-Ibo1eN9k`SrQYGg(crZi`*k~ov!(pu%} zG+Bu^pEs`tFQ93Mv=?FixjV8@;SIhUrm(J7x=lrXil*aXXVqR68huFRtg{Myw$`}M;eu)}zXD22ZEFamAf`~_6Yr$PLmRDp zFnb>roJ$5b)4bWz;anSz$0cC;&8h^~O-9w|x!Bee2D=#ExkSk!oW0=47ckCAS^U30 zB4`O;bhW0i1{$PbV)mDen)X-|qgXxc;DT+}1g zRli^mJx^pAGHwltG+NH-*T-#s?Onm;t*FKFUR#F5WE~l=Y{1#niEU+9Wo}4VbFK;a z1~gZnt-L1)XFR%S6$_JF=W93CjSOd%V&;abdHW@(Fnh3uzNXq#)vb?RIR0)DhRdaP zp(p5r5w8elX|kjd?g4qEe(y?8{j<6?zrwJi zWDYO-(UL<$rE7*~hQrEeD|{%rp4*2!{ST~o-WFJ2trAH&+kHk5thEsLxl(~Uko1+^ zIkgx{*{QAhwgpAiV_;%sxSf)ptI#47e!bGWPyPg9>(${6O1<*0r4~ufumZ5W5fq{v zA7F*$_IasD|9CEbzF04qkQXT7V#A>mRM;U1|&KT_|1&lZ(PX-_Y~$bUbLj4^2Ws^OAo5Y!pifHQ z*!Yh`R@;=4(KkF0u}E!m0NI=U;>5tiIKqW&40SoZW%4mjaS<_-V8IgQ=H}*dI`GfP z(68P7A4^`6iT5kJqkNb*NFqxQD850ZBV_?su&Ar0H?1_(RZZ@GMLlqj(ZG`76!HN` z5TFhLFE1F>7x2czDImPX6RIVDi;5!?PC`H+X=PRPLxQEvgcS%APOh&-v*c}oXUcB8 zuC{jd_*llmf)?oH4Zl;~V*gV6TBuZR(2EHN2WR8p@R5lL>Lo98KGu><00|JMP^UC7 z!l4s!btG}xQx~jva&U8Fy?LX1n+#GR08={%e9F1YE(LqBT<1H9-EH&Qf(!9|^94z0 zkjRzAV)N~{BB8{C4KC+U%>xGC10%@o*aq^3OzY*QAFi%TBTomjWe&UYP;33z*w~NlWaqr7?i{&{n!~F3x9nDgKw_i^YVR?h0*n;T*DqcQ*-*VT zTU7&Z?mzpKD2Ydh44-E3H8HPy9Jon!PYj@F2MpKh{=TG=5^lay;o8sVdlFgZjyWJW zP%2dG1Xi<7V0E{3a@qp#0~#z~xIFl&V&?6c_)xf#uzr2d%*+goPTiFwIgSoN>Z5a2fSz}Nqtncqb zHCccnZ+N_#2Q8O9AVB366nck;8CcqY1fXpwnH!%`2WHe(>e^k!kN@tzH62gqDAtBG z&FN}3OA=2*Lu01N!_5ym)^4wxpQZHl$bb!nR=w&ka3;MbAW)~a48q+K73~To2?eAe zG#ifF`RL=PPq_}`8rm&K#;`AC7{&L~OKm=h$}|ge#(m3{Kr*m>$Ii~KNF5KHZJe{S zvoYpUj!<$52^AFx5B&I^A0k2SR(x^!(-R?|=RyQMu*3rk%){d&G#dc;@1fa4kQCQI zzzy);?R)@gqi*K&lZy)j@JzsU_`sWz#74exMJJT}b={QP_y~q?+W0Q?F&5l!M9S>U zRnou!?~NhI88}#OUM~AWPagt?WHLy=iv1J@gloVi2OpM_G6YKD-Gy5Fc)0k8e3)tU zFncYYCMG$Pl2_W_5#)0fB}g)5&E@_koB%P&`oY1#N~YcD`tYI|Jbyzun~lvOzx!}9k_HMSX>Zi0evfD2nqdjha%*8tL1H@^?XgtSQ| zlqmzzYc{sFrTzw>AFQgX0*DA^<=lhFC`crMTH5BStuf-bGk}v#-O9WiBvPHJ=TF9P z_l46;M}@J3Zt709hlK@iI+=w0mAI*@=N z4vdQK-rn4=fB`WE;tG@5GVAx!9 z489oqKU%EY=HFBQ@Hid31#c7;pZOO6rPT%TrnM$uK*G+KrkgbsHtVIofJUaJEpU2A zM!|ig5hX2gC471#;&g4LudlF)y8%{^Obq!P9NUWO>f%X{yW870Ab@0d9J0IoY-T?U z_!cm5q*Hl=gMv^%@*?>G&{NcasaqTDm-_Q59+*HdcXvL*sVdLp?;AA((FO=Oi~?p5 z*erQyiVM&uq=AtI79w?e3u$R-U=~FNioNP;cEIgh%#@^U!R5*-_$Q>p8VG(6D4vdt zja4@EcCfV#=M_s60K+pAh_ncK-QPy`cEmC1o6J`g8p^H#WkDR5BQ>}LA%~3@xLN2l z17s5*_BS>*7=iW*+G&Gm2>6%i6|D5Mu((;61Ox<0NlE{u=9HC}OQLPO@h%YVGsjn| z-uywgKV3`-G9*VvWC4^R93??+Je0)r2Qe^ZR~0Dl&bNmtX=s9gUI#Oy<=569`P{Er z^5KbzLExDH=O#USVPYZy7yNm_3{dtA)AB)x~k^{ZaRW7zOmpJ9PG? z$e#mwsj!iOUdA^g;{&o^`aq06P)p#^YqS_JtKL;0rqwbzX8wkVX2XR2cujm;h7lef zeBam*K#-O!gOyyM@!HHMIhjbUFy_}UgbP=X+TFlyT^w8NU)kcxNCr}r__5-Be!s!C z6m)_Fl6S{HaFF7Om~9*YB4ncbQVF4q^}WDWQ_FACk2w#P0-6a&C_K<$aS_rmU!MVx zR1OWm$JMp;_%%wIgzx&gio&H|73}mTFn81nUr7tYeJM3L_K|6>`qzm-C4wfPqy45w zM8L=>dqN3Z#m0Ek6H=Rkt*oFsvf{3dr5p33dF)lcI;k-Al`)h;pI^Tvw|RM{F1I zV;Q=19NPX}oS)Q?1x-BRX4eE+=_1niES_sUTSxZxj(67S{JBQc<)Wl)_;*cj4j$2J z&_7{Y=X_wDt+spbT!;PZd#MJ3yh%2In}sFzO&#M}lQ8*YvTxpaa+Hj10exe&yEWK% zqRWa(55Hu_A-=f>IOUsrm~EqgWo?5!@Gc61P;O4VrA zv73+j;&RctU6AqFWuKC{)^XfafOsCUo9x|I54;emO;}Q^nuy!n?*gJT;*Pl%NB^n{ zehT5$`k#K-((wOwC2QekN7xx~0;)$$5SigTEFt&=Wsb#eK47^GP_=VHve8%qf~pWlEXQDwTL3vj*{t& zSL0aWa@vd*)pvG}(!W1kkoD9_6ngxxQQfU*r}#v80`Gg72iJ{h461tDxkoCby_*PJ zNswhDP@S9p{*O)Vy3U!p^UJKVg{QWIDvz3(b0%apCz0b7?>tiYKNSiUcgCOTw?AYt z3X^&}hpKjxXgDo1&(&9MJ8YRwbrm7<=gR7_;?q>nNSCuY(G@S8B0n8H(bikzv#Kyp|ogZ_K%=3N!jDe z5sEcUwax+@N|USqCv(7=s74$h?PM*~q+2DVdO^v*8qo=cj;c^&09t%n%J# z`qA+8^aKPvP#1o=LRaT0P=-as#i^t%f*d9&Bo70YX@HyAova7|U92c@vnD4kft?+i z>;nf6-`mrp1E6s7Dh7ZO0*0Xf*vAL%2xyn=uGxX6hS=jm4umfNV59*A@$6i>_Fn<{ z84HlW0!24~(YJt%3hKUwfqDg@vZ0#V+EM@#15920=vk}W2n`sB|GxVi2r>p#rixWc zeECrgU(->}q?C17tcNR{6{Yivry2Jt)>L#NJ^2qz7%irK6QW0)Di>31 zuF8*D!ym`2J;NqeApad$z;0!A!pBZ+gFWOllr+H6i&4r4^O~2JkU^9o1VUo0sWFS= z@onYpQtdvG*3LB?9iIvGBaFvIE)G{a134{nw1N4L`j*p0L@2nlI-s6tn1^!~Nf3I(Cb!CL| zsu?AK68Q|IU@h5bUoY5W0O2hZj5aVfJ_mV5jKJ0&!=R1cLgc*AD#_5;0k|6=J52*P zH7+bvRF2Q*$pdu9q(DCgjh6(nXQ);#HgOqfr16>b5NMR*UK)Uq(UtA(Zs7fs$dvpa z{XrEi0Tup2Bj!LIHe0Iyha7kqA8&!kHeb<6;$pxh6H9|@tOPw>QQ)M1L>EB^VNkoo z4VTJt<;ZYl7Hy*FL@G3&ZOC%aLdBbJ1^%)z3pOz6YT9cLhWg>$o^)yLxElvMWmU`uo{@Dl9x)Kt$vP=n}|)F}0i6?Vu~flv$VYZBK9Sdr+4G znkr3^x)wag{SC#=t}aYsVrdZ9TWk71>qc2rH}FOe16qX>WE6vn?E%#3l@N+0&ts^@`W=-S5{V9K>G$ozGrIfDZ#zBO-)q|JTMr% z8-yDlku1hvvBN4LfHS{qPa7WCN8{qC!(&kef(j-`1*SE@#J%Kxg$(oOtKJNpZs?E-^cVa zNQS5=3|lIz@?5tYFM5kJ({gx5zpm`Pz=69Sr9NCYBZUnrcj`>gdEGFzTW0$k{zmpF>CM&W^uCR=W9gQB8e4ls*M@;E%(~XOyQp5t!92>pwj*9?R$eDX-z{n}kHaWUu($W!Xl&R?mdX9RA} z-~4B`C6#|(w&gWSM$7yC@qGycVV2g-C`rpwkVL*f?0|H_pJ*&^OU&XF2gw9M__g^Z zAu%&l797#GeeN%JR=nlq>N~TQ@=MFh*MXoktIE*8U}an4_HE=afn6( zanNkxTi_kph1$(ciHL}L`}@lu=+Tk5IXG4}H~r*up}iZ}CNSTIDDT5W!;7@M%< z7`#)E17mbwuL&V_ezizurA5$W^(CEK%Pf)IXS$FijvD)o8d^tdxlqUM{NQ@Y+ zt{~_}1(@JLj3%(SCIUOjTkvG23RHc81>y7O%C>b-h7o`kM>tEq)Kp=%m<}wZTR{K+ z@*l9ZK*RN+OFRbe4GbkEC3I~CdnN1)Fw;ZrKVbg^d?r)~-^8sXVBV_o>i3Hz(j@~p zZsQT7R*d%}Wt2Q6xKHe_&H~%Eev^4OTydPsuU;D$JvAM>&78lu30;}mjda=OB?k@_ z+hjEKawpbDBO4|v?CtV5f8YLNB#_-Xd&W&l>IKy4;PC^cDTr8VY%5c*wIj#iIe`J}D>*eaa-ou2 z`^)z7vNHdGfYJ-TC4W%2ltF1{&b{ek5|9WO6J7jEgR8Wl= zZ%_P9gyYKh*4d2JAQ|!6D`L0ET0pDb!3BZ!o|NWIoy^8apeU#N4I@}*EUWM)E{e7Y z@|?K0R>I=_$5i}@WQo%ZsJE%Ir>GD$K}uZn_-OF)ANyYa zz&TieKx0Piy7L}%r8dsa+hAM&$jjT*7R1v6bY`HZ#Q+lP_Qgda3=9llH{l0U^cD;& z>zkioC1qn{gXZiMY1U)n;{F~rDVXSNR>Kj^?HC$DkCyNgOluh$8e*mrE>vOxHW#%j zi-7!m8t7vMf@?hh!N7oH9un}h-ABpdfQ4rbM1y342M#bkX4|!|Y*q^ z1uO0P?rty0l%>75v$ahF964y_?av3DNo#a|09uEn6kfC}`^FGWSWjobu2&(ue4rwPw*B5q>p6(SEm zBdhcM8h<&^J_P@=72#YToiO*QQ`39|GdEx({3!I~YcXY9vm0;FHQm-Fw>Cs{pBQzY z^{=DtzQ5RCQZlCWUxyPf(Q5XbFI4-IJo zv88EXZw4iHnaOB60r7D>i}5QI6n$_8K#Vamh_H|UY_61*-TMyYm4i4_5y*IWOpFMy z69wVYQIA$DCjzE-{wxlm1;mg7FTXMP9t>2f4?@7v)Ya8NdOH#d$~r(*U|WDg2MLR! z1mG+HH3ojC&Fn-gJrGPbGdBmK!EvGSo3qzo{dd`nR=xp{^2n|O@J0-lEw;9L1KeQ* zfS$}OEUML3npq_EV&dZO$;q=84uOR&hPNAlTmXBz1usmN3L7e^0NCO{#MJb3EYv_J zxCRZDWny|WEuD2e-!=K_Z4r8mDV0+b%(Xj`0E3s7IeM}Y&ShsvFwAx$zb?E?S0c$S z74anU$WQu%WVE}7bYw#5lk?S@?YdH(Rv+-b9L2Z=nuh6;h?uv{{3j&K{p`3$!>b#1iXqJ84Q6Y7M9m1|>3 z$Yq_8p097Jh9*R|B}Mfs(U3(M7Gl&TSAqF7jtuv9{WFSm@IzdZQ#BUJ-MHgmzo7dy z9o8g3q~MO15QS2_>ET;j5$VlIDG1pHdvQ>&&+Fm4AF~;PJQnZEw3fa&G zW*J8`%BMp)+uWc8;0{(NUJw2akm7j0XY4p-dkPd(q?=6b$>SS&+grPeXH zBBbdd4C-sOVBfrko*Aack58+`;%Nc=Z0Nt;xqr!dXQ<$+Ue-Tt%Jr8j&q7gwTsnZb zkcCBmWbAlYTl-DQm^mhn#f)`hv;1eWuj^Mp=+l#!S)eS9fuV74JyKy5Kr&c82P~0a*@O45i|CHq0{XG5` zj=khLl2#dX42PyTbK}&fzqtg(Q49UUeENwlwgMm7+~gzdv9Bgr_+o~K-Uk1a;^x|GeJGUrzY>);R^ zg`pylQ}AWw=!hO}HVz!f5u*kLhPoBE7W2u%?8X2R29Ebz75Q4sVS>~BhV@d36aT+w zu0#>ht^V3EUD$Vnh*0Otu+h>*kt1Pu?XF!{AF7W`dG%Vx6z z^KkdK3unpPGU<6g!294nsZavI$>7i=ZhEjDeH6%)!C%g*m`vXxzi(t~3vN7uzZjxrv%Gh`F@0UVgjP$sE0Cu0f5b=!B z*Z8@)qd#pb*nft+3N${@RGwa*`us;LImC9Fb>?1X*JE*d-nFkY6b9h$-DKl5(N$&L zi{|_^4L0i&SF9nT#0>13I{zr?f2bJ}y+LSo4G%|Cl5WL0ht#7u{Cs<0&HmGB8N;cH z(b|=T?k(cY1N%s1y;-o%2CJLsT@aj))uxSa&0E$l?q z)^IU6`p58+kL{&^%?ax;) zWfHY#YY}s7Ee!jk`(2s!ip2~u!Ne%5J-bOf8AkeHhFx*(y#P0Zk7(_odlYJM@OKGU zcC}9Xh*QpJpUE)w|GW=7?CRGvzOAp0f0}Fk%7^=up$xq}>;%^7>etpCB$2}sX-Lpt zCJqV7hf@J8ZvO?Gj8Wrb8)zY%?CtWCrl7@CLnnM@v}`nQm(lyMFNCLit5k^4F_KA& ztuVHm*E{0DwRgIA!J{{Q!f|8F;3B7vPv_09Fm$1HJO s==$xWEh(D|UTGj0!~(A+&YnO0Gin*L{rU|Y9}FWdEd8}eP{-&00P^KyLI3~& literal 0 HcmV?d00001 diff --git a/plugins/samplesink/limesdroutput/readme.md b/plugins/samplesink/limesdroutput/readme.md new file mode 100644 index 000000000..139c08a78 --- /dev/null +++ b/plugins/samplesink/limesdroutput/readme.md @@ -0,0 +1,126 @@ +

LimeSDR output plugin

+ +

Introduction

+ +This output sample sink plugin sends its samples to a [LimeSDR device](https://myriadrf.org/projects/limesdr/). LimeSDR support in SDRangel is for Linux only. + +LimeSDR is a 2x2 MIMO device so it has two transmitting channels that can run concurrently. To activate the second channel when the first is already active just open a new sink tab in the main window (Devices -> Add sink device) and select the same LimeSDR device. + +

Build

+ +The plugin will be built only if LimeSuite is installed in your system. To build and install LimeSuite from source do: + + - `sudo apt-get install libsqlite3-dev` + - `git clone https://github.com/myriadrf/LimeSuite.git` + - `cd LimeSuite` + - `mkdir builddir` + - `cd builddir` + - `cmake -DCMAKE_INSTALL_PREFIX=/opt/install/LimeSuite` + - `make -j8` + - `make install` + +Then add the following defines on `cmake` command line: + +`-DLIMESUITE_INCLUDE_DIR=/opt/install/LimeSuite/include -DLIMESUITE_LIBRARY=/opt/install/LimeSuite/lib/libLimeSuite.so` + +

Installation from binary packages

+ +Packages are provided in the releases section for AMD64 architecture only in the form of .deb files. Support for LimeSDR has to be installed as a prerequisite to installing SDRangel from the .deb package. + +The following packages are provided with SDRangel binary distribution: + + - `liblimesuite17.02-1_17.02.1-1_amd64.deb` + - `liblimesuite-dev_17.02.1-1_amd64.deb` + - `limesuite-udev_17.02.1-1_amd64.deb` (if you want the udev rules) + +Alternatively you can install a full LimeSuite from PPA following [these instructions](http://wiki.myriadrf.org/Lime_Suite). + +

Interface

+ +![LimeSDR output plugin GUI](../../../doc/img/LimeSDROutput_plugin.png) + +

1: Start/Stop

+ +Device start / stop button. + + - Blue triangle icon: device is ready and can be started + - Red square icon: device is running and can be stopped + - Magenta (or pink) square icon: an error occured. In the case the device was accidentally disconnected you may click on the icon to stop, plug back in, check the source on the sampling devices control panel and start again. + +

2: Baseband sample rate

+ +This is the baseband sample rate in kS/s before interpolation (4) to produce the final stream that is sent to the LimeSDR device. Thus this is the device sample rate (6) divided by the interpolation factor (4). + +

3: Frequency

+ +This is the center frequency of transmission in kHz. + +

4: Channel number

+ +LimeSDR is a 2x2 MIMO device so it has two transmitting channels. This shows the corresponding Tx channel index (0 or 1). + +

5: NCO toggle

+ +The button is lit when NCO is active and dark when inactive. + +Use this button to activate/deactivate the TSP NCO. The LMS7002M chip has an independent NCO in each Tx channel that can span the bandwidth sent to the DAC. This effectively allows non zero digital IF. + +

6: Zero (reset) NCO frequency

+ +USe this push button to reset the NCO frequency to 0 and thus center on the main passband of the DAC. + +

7: Center frequency with NCO engaged

+ +This is the center frequency of the mix of LO and NCO combined and is the sink passband center frequency when the NCO is engaged. Use the thumbwheels to adjust frequency as done with the LO (1.1). The boundaries are dynamically calculated from the LO center frequency and sample rate. + +

8: LMS7002M hardware interpolation factor

+ +The TSP block in the LMS7002M hardware has an interpolation chain that acts on both Tx channels. It is composed of 5 halfband interpolation stages and therefore can achieve interpolation between 1 (no interpolation) and 32 in increasing powers of 2: 1, 2, 4, 8, 16, 32. + +Thus the actual sample rate of the DAC is the stream sample rate (10) multiplied by this factor. + +

9: Software interpolation factor

+ +The I/Q stream from the LimeSDR is upsampled by a power of two by software inside the plugin before being sent to the device. Possible values are increasing powers of two: 1 (no interpolation), 2, 4, 8, 16, 32. + +

10: Device stream sample rate

+ +This is the LMS7002M device to/from host stream sample rate in S/s. + +Use the wheels to adjust the sample rate. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position. + +The LMS7002M uses the same clock for both the ADCs and DACs therefore this sample rate affects all of the 2x2 MIMO channels. + +

11: Tx hardware filter bandwidth

+ +This is the Tx hardware filter bandwidth in kHz in the LMS7002M device for the given channel. Boundaries are updated automatically but generally are from 5 to 130 MHz in 1 kHz steps. Use the wheels to adjust the value. + +

12: TSP FIR filter toggle

+ +The TSP in the LMS7002M chip has a FIR filter chain per channel. Use this button to activate or deactivate the TSP FIR filter. + +

13: TSP FIR filter bandwidth

+ +USe the wheels to adjust the bandwidth of the hardware TSP FIR filter. + +

14: Gain

+ +Use this slider to adjust the global gain of the Tx chain. LimeSuite software automatically set optimals values of the amplifiers to achive this global gain. This gain can be set between 0 and 70 dB in 1 dB steps. The value in dB appears at the right of the slider. + +

15: Stream status indicator

+ +This label turns green when status can be obtained from the current stream. Usually this means that the stream is up and running but not necessarily streaming data. The various status elements appear next on the same line (16, 17, 18) + +

16: Stream warning indicators

+ + - **U**: turns red if stream experiences underruns + - **O**: turns red if stream experiences overruns + - **P**: turns red if stream experiences packet drop outs + +

17: Stream global (all Tx) throughput in MB/s

+ +This is the stream throughput in MB/s and is usually about 3 times the sample rate for a single stream and 6 times for a dual Tx stream. This is due to the fact that 12 bits samples are used and although they are represented as 16 bit values only 12 bita travel on the USB link. + +

18: FIFO status

+ +This is the fill percentage of the Tx FIFO in the LimeSuite interface. There is no flow regulation provided by the LimeSuite interface so an automatic adjustment is done within the plugin. In practice the value will oscillate between 50 and 100% centered around 80%. \ No newline at end of file diff --git a/plugins/samplesource/limesdrinput/readme.md b/plugins/samplesource/limesdrinput/readme.md index 6cf64c6d4..a191463fb 100644 --- a/plugins/samplesource/limesdrinput/readme.md +++ b/plugins/samplesource/limesdrinput/readme.md @@ -88,17 +88,19 @@ These buttons control the local DSP auto correction options: - **DC**: (6) auto remove DC component - **IQ**: (7) auto make I/Q balance -

8: LMS7002M hardware decimation

+

8: LMS7002M hardware decimation factor

The TSP block in the LMS7002M hardware has a decimation chain that acts on both Rx channels. It is composed of 5 halfband decimation stages and therefore can achieve decimation between 1 (no decimation) and 32 in increasing powers of 2: 1, 2, 4, 8, 16, 32. +Thus the actual sample rate of the ADC is the stream sample rate (10) multiplied by this factor. +

9: Software decimation factor

The I/Q stream from the LimeSDR is doensampled by a power of two by software inside the plugin before being sent to the passband. Possible values are increasing powers of two: 1 (no decimation), 2, 4, 8, 16, 32. -

10: Device sample rate

+

10: Device stream sample rate

-This is the LMS7002M device ADC and DAC sample rate in S/s. +This is the LMS7002M device to/from host stream sample rate in S/s. Use the wheels to adjust the sample rate. Left click on a digit sets the cursor position at this digit. Right click on a digit sets all digits on the right to zero. This effectively floors value at the digit position.