From 754fd4c3754aff4b8c03e28841c5789db66e9c4f Mon Sep 17 00:00:00 2001 From: Niko Storni Date: Wed, 16 May 2018 09:43:19 -0400 Subject: [PATCH] add/update readme --- README.md | 69 +++++++++++++++++++++++++++++++++++++++++++ img/filewatchers.png | Bin 0 -> 20983 bytes ytsync/README.md | 4 --- 3 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 README.md create mode 100644 img/filewatchers.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..c315a05 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +[![Build Status](https://travis-ci.org/lbryio/lbry.go.svg?branch=master)](https://travis-ci.org/lbryio/lbry.go) +# LBRY in Golang + +lbry.go is a set of tools and projects implemented in Golang. See each subfolder for more details + +## Installation + +No installation required for lbry.go + +## Usage + +See individual subfolders for usage instructions + +## Running from Source + +### Go + +Make sure you have Go 1.10.1+ + +- Ubuntu: https://launchpad.net/~longsleep/+archive/ubuntu/golang-backports or https://github.com/golang/go/wiki/Ubuntu +- OSX: `brew install go` + + +### Lbrycrd + +_not strictly necessary, but recommended_ + +- Install lbrycrdd (https://github.com/lbryio/lbrycrd/releases) +- Ensure `~/.lbrycrd/lbrycrd.conf` file exists with username and password. + If you don't have one, run: + + ``` + mkdir -p ~/.lbrycrd + echo -e "rpcuser=lbryrpc\nrpcpassword=$(env LC_CTYPE=C LC_ALL=C tr -dc A-Za-z0-9 < /dev/urandom | head -c 16 | xargs)" > ~/.lbrycrd/lbrycrd.conf + ``` + +- Run `./lbrycrdd -server -daemon -txindex`. If you get an error about indexing, add the `-reindex` flag for one run. You will only need to + reindex once. + +### building lbry.go +clone the repository +``` +go get -u github.com/lbryio/lbry.go +cd "$(go env GOPATH)/src/github.com/lbryio/lbry.go" +``` +run `make` from the root directory to build the binary + +## Contributing + +Contributions to this project are welcome, encouraged, and compensated. For more details, see [lbry.io/faq/contributing](https://lbry.io/faq/contributing) + + GO strictly enforces a correct syntax therefore you might need to run `go fmt` from inside the each working directory. + +When using an IDE like `Goland` you should set up file watchers such as to automatically format your code and sort your imports. + +![alt text](img/filewatchers.png "file watchers") + +## License + +See [LICENSE](LICENSE) + +## Security + +We take security seriously. Please contact security@lbry.io regarding any issues you may encounter. +Our PGP key is [here](https://keybase.io/lbry/key.asc) if you need it. + +## Contact + +The primary contact for this project is [@nikooo777](https://github.com/nikooo777) (niko@lbry.io) \ No newline at end of file diff --git a/img/filewatchers.png b/img/filewatchers.png new file mode 100644 index 0000000000000000000000000000000000000000..acd0ed9b6e14ad63170450d450da167b80fc40d7 GIT binary patch literal 20983 zcmbTe1yEeUzcqMqcXxMpf`{PlF2NmwyCt}WV8MgC!{8D$I0SchcZYBCf8V$JcB@|1 z)=ph&=rL~J={|ja=bR=|MM)Y3kq{9802Emn2{izKL<0Z_PIyT0BUkbTMBqDwFEYBW z0DxBW?+4;AAhQDi$N^c2j~ZT?C##-*#Ir5zZ~LS6^SH8Y;z(0U=HvVuS)=;G9aMt5sh%>$|*mJo@-ro5DQuLo3Bx zHYMj=nrvb5gX`Yn?TLu*@aXrL7zN<_uqI_`jERmIJVglWz;z}7FSEl~tAPq6{XIlQ zpa_|a`2^pq0@UgVtR|3$pr=nkhp3SwgBa1p;bS4Mp~c~IH=qIY7=&-=b>>q&jdofV z76o?Pw!q{uO7biZol-UZC*RSURbWBuc3ysOMvw<(u zBP3adi6o@pPa_DPwdTf5GrbYlB_LoEx-V~DSV%yWux=!();BivuTn0~IDy9yhgTHU zDvw1U*~w3eh>rE%e)ooj^Xd42r7{8zGFGc>DC_TMM5Iw{a zS}T86rhp2>0#Bj*zEvt#o|jiw*OAXf>to%dsp=d#WgQU{fgUNrFf;^*Mgl?HBR2h! zHc|NTbTIIugO05IJe!EuNg*Oy&`?8Yc(MZ&`VDb!x~$@yo}d( zQ35JP#~yQx-~4)?8e?O}NJz3$8(Gp7N&O#!0|Q&`FA~h8@=F^lJBscMHoQ|T$hSLiawAII#0ahMQ;O~Sio+t*0eck~{YFX}W z^v^PBzisV{qL{-2@Iv@2Ge8iGEtOU;5B}!Z@(MboWR{_VUEnC9H0MNnfPFsHdlI9JpN>ZC41edn%tz1aCmoz9a% z<<}k)&w>K#428WBfijHrV0=IhLh1=AQ=3DF+(hVk1*t3GEL2_{2C(KnQe_lUSGxoE zF%aAZy|fIjhexq8ug(5-ywsG~y2tNb!Ierl*x8Kq#30L;HjlTrr=@iS3a6J>C$tsM zc&&02AqLDy#}$uWroeY;S35f=<8>mZjt=w7yqX&JrNF*8jpdC-$lwiSwl1~xg_)_@ z+uzbTqq6ca;`H5j86f|T^X}S2Z$n{WvcNlUcSVO^?GlU>&=tIGQ}!b2YD)_%LZ?os zZ=37T@6Z4=>w918)DjhtukFRywGq1hc2=76`ta{w<0A!7f#`R5&lWdTsBfsp)mns) zGC=lvv!6zACx~=vUdD^KzD50;FxjC8c+VDmMLI5BnJe(j_3IOETh^zKR zaiOHyV15Nd26T1RU;EJ&ub!bJhKdJwAKwlP4ES|;zIW4(jj>=PV2B;A`NP$5a;^Ei zCVyKee%qOzX!G?cIx`eI7)Fl?*wpPea4C1Ap+&TF9(*7j|-I?%PK!0iMlPdC4=wWzMuvcK*Gj9z;h zzir3?;QjTc`o^bMj399ln_upbrpx!BKOQQYG(OeHfV?IO*n}&@tDeBq*>!2l@jnY~ zm`Pf8?0CG@HV$~}Undhy<7;8V%4MJhIQ5pnnCJ2ZgpWUmY90~H5%U`%Kd;V~IW}4S z5oV(6qRm+N8VT^))1Js;q;IZh?jSv{&h~d)@cRP3{DIl8T}JUv#16FFc1byvzmmer zl2Bq5jjH)*8Ow@_JY)#6)xu0*s5Sgfbb4%$~i12wvq|l5`X|4G-tb3b_rtp(XZ}+eJ>g>ne ztCPalj7X?WqmBlbUtD~T~ISJC7%@7%gRUCuV`kt8t z9^#>029vW&UsStJY2@UF85zrQ%`G5kdsHCk+{``p`d*AStEBtF&udSu|`cV4r(PjW#4BJ(=8H~UCZC%#Xs3b1>?HpWo zQ#>_k8^5n5u0L*^26o;(5#^jcZuQ2CW(iu2iy8+O{;D}x+|Py!dUKBM?v1{NDHJ>W z{b{{#Ktl93ku0)5?`zMr@BLYP#3W>)c<_b(`=yMzdC1^40|U$Rh_P{h3Tx|9!s8(U zMOiLZ4s3LE^y@X*JNnHq8SuG&x$D_jw16&?Z^(1jd3`qrx(mkQM^9JOX_TV+@kfen zW_~`^^GL(i*2P?+uLg#Zkty(Tv>uFc+T`LPmQ}kWb*|dXo^7jOFe!3ab_6dN#&1ti z6zqI>xr?Er89A)#VezH(6pQk>)%r~yn_rnLwV(ijtT%hf-OFvdDEW~KN0|dcZl|>s zx~|vCz7XhKm4(H{$7;`YQID5CH@MJAoR53ORx&sy(hA`~mMHsjJp5xY;CuFFuFKB z|0ph)Qhn|H?+qdWI$LTD@~s_b@+1{4L}Xt{GjVI$t=AA&tm;H(H;gXN*8GpwWw8wU z7n~@?a*$t9Fx*hgppz2Rb2C$IbmWn?XOum~;1x?Z7QZ6)L6wS28K@0R0NFrX)dymB zC8L8POmgI6IZ7iY5c?z#jTdNRmm^pMW9+DVZTm}$7im3A>mEBY7HzVcw;Nh9M9&2U zM@6AU>o;-hBj|I3JaGo#PXyA5FmE`NdVj&gAzC2&D#fpn-s|?UP4YWO1ZOA!2c~74 zTD*P~zYc~80zlaIY&OsqAq}zQ4j-X0^P7Bc5j$Ao2n)6YLo4&eLYY{^zBezs<6w-t z2!(ikuSERALvwRQj9aW83gGiCx30CdBj1%1@{=_qJTzpbUZuvLep3#>ONcajtcVZ) zHQ?PXJZy5br>s#gK}Vp5ne>J~NV^YG41W7kFieTS0OU4QmPs6HFkZ(zQis?g#Pfk5 z=;r1QcAX0=z1Df&fzQ#P$-b(&Sl_kRkZEyXNd)ct#fmSPVXv0 z#Zz$1I&cXsODdI(L~JpjM+bk`6ym{Rq?mcAX!kxHj`3Ctl_4&biE=T}efaFFc6-HzwkDtFFIawGr2%&8|ZRn`7}`OHV_eOxXeJWVnxQ}k-s`tINje5#tz_n%8zy-LEoXgP@iui)<~a{>Rh%B0yhVpGz1BbZbEowp4`tE z-cqqA+AckA(>#@LP4Jd^=rsxzqLcyryKsj$}EDTAi=Sh(n$GL#GUQl*MahXo2tEEEfH02`bb$^*dL0!+rKob5P~I zW5sKJx1Z_IfWI(Juk+(AkRykIoqi>;aDeJS<$4E8mc!cfRhQfe)m*PFm+O9=qNG)u zRd@Wz5H?}m;aCkm1pu=)*w*G}7+z`NE2QN3_pY0Eh|?w4E`FMQZk=yibd!~d3JL&E z$}&4!Vbb`)?b5PR7DiT59UewZ%rZ=T{UaX-kMjOaPtT-m#*CwZ5Pk|8Ew41V59uV( zkh~(ixIuajpgj;Mn9UY(a%Il4aS^cgv#(HLZ~2DRKD{!(48B=8s{==khrZz3Gjg2G z$=y<`#q`e+wba_S`ug&J$H-0|;5RYV)pfHh+U~vO66k#C&vMEtr{P?S2nmo!$VXve zeojJ&w1ot^C20F1;Afi}K1h{HaazsB63sD3;l|N;$yK+8!R$K38by=#MQ$~O^USaE zdarATM0NHB#E9lKXkw%iF%Zvs0!67y$7vq>f7CW4 zk2S8fnXYTFPX6w>d_&Smhele-1NR;f6A>Y!C~ISHOZe%Q~aIH-| zSMcshH13F%l_^rM)#TIJOEWuz`;p#oT%c?FxX?j(ZC8Ecbd$BCxnImdLw~OX?V$Yc z<4eTGA%v?$0iuwB0R{vo2Rj}$AWu%;)qi}2-=RcJZYAt4DiN-$l$U`EwBqxrHHn>p zFW^0msI+#YvWxg=helO?zS@{WREebL$^I#&rz0ox16e!0<5*Ucd2txhia$#6-8s|2 zmw0@-#F|sl^Dz)tiXy=rYMw6YV5Iv$kZA#!l zy()TPD6_Xp_IFnF%l5(*)i+OlUpAOf`d5zGm)$&cgj@WV)4S5v--ncyQdqcPy~47-^BUJ-b)M|x{EA_^dcE@)_FnW}Lx=5Tc6G|}dvSk>Oj9JH>5r`! z4`Tz$~(2Si2k3#k%F4XNOr@KT4Py1YK$u`H!<7!zk1!bbeu;}$FrV4UyQYP zpHn(tg=IL!9Dis%@71C!N5uO%z7I|7aVfsa_x$cYNfBez`8vR2*S5B>d_u&*3y@PV z95+ccqz2w5teNnA?2D=_*Kp72x-QL543Qj&P#iBmqZ_ZtSEGkS`+>EkzqHJvr7y2f zq*AkF&sa#wAR4N)MK_^(MlsH`F<%IYu2FottRr= zak*V=^H5lOYJ?#lGaqMzaN7CqcI}nVv2C-ux}7%->RF=2Yu<2qT4HXlEKh`&g3I;P zk>|NOkoc&%2FcS`A5D~xm6kQC)CNgj1{p^G_QUE+XsxVs-WDM(uaSI7TSsLE9B^bJ zzCAm$;8BG$xQx&Rl1h2wD z{UtgoAV%p53Q22wz8POAIfxl+J24CtoEeBmx55Jetj3dZL7ZGf*i1*|6aMwJq2J(= zSB38u3fBn+1lhpO*rAJe?B6Dy;*aWtZ*j!P}Y z!9vn=z#m(AS`rJXqJFKb{>x8aGtt}G{3m*Ac-&_>_0%FHyG|jEr9CLX?6X7;0C*81 zDbL(K0>2JN7tbm}G35T*|Dx)*gaat+v;6O6G|5-lUBV!Sy;oS9=4V&UTicreLyTYo z6+jGLR!+v+!3hmnHKZ&l^70aD%sAbugSpONF&%Tad4)s9LX} zRM-OFdv?QyE=GY7;uou-!{+aL0W=d`0TAoiKv7X=XJ>ND2Rfxa7^V?ghvsup7kc1J zR`Hss3g2G>9f>w}K251pobbEslMR_r#mkFZ1SC!~RL=&K8y!_U{qjg<`1n{P3uJ^y zjK29vH;{BjGG;3F$lOQ22J~jo+_>1M0mJ*6O{Ie`zNrOWASd2P^gg>%i z0Tz7}3iIsq(&pl`CZDbU8vgBsv*r9bZuQ~l`Y9Nv20ADPJA(u$>8v#SdQu_e!cu-zv$--#5DK8Xh)=<>lZ4%S)xqLm=+A+wLzshIxNB+= za>w2D0Rj*s?$~J^`*3aA`zb_WgN}Hx4!L`h&7RkQL@H>Wk588#0M4&JzHcx$g18U) zfto`U(sXhYm=k(u0SKU^^2*ETTQC&xvwK+(B1Cl*0|NNcnO^KJi6aE4(jegjivt%K ze0O;HF&dI>X#Aret|pIrJa_2ZP#1>RJn`+Ra7c~0w2R z-3mqW@$ro$08C#-AuoH*2&i4-h4t{M)9_cU=7Se zi-7LF%9hiCLK6ey#ZESPU!lnP)iw_A84|Q;AL0FX4z?JNcw#Gl0B~=E-Lp~JIL!ib z1kVG$J*GrBc*0}xMowt83f=g{hwuI>ZTNm3A15%OT0Ql0n|S8k#PpXh!psRZI&;GB zRsC5ebP#7OgjGD?N#Qb=O4`@Q_my~mzd3ttt%u8Mg*0A*aSTzx@23xt9Abwsz-{#VO!z^tG(MbQLKZl#+eX=WSCvymrUR1`uK3jWs5vcnb0Z zpT&3nzHLVq-}FrN>yKH&$N!D9aOqz#YwLD8uHb*{*U!evSb8{a`K?<;^VX_}V;RG&|~=2x~x zs4!m<9A9<$Y*)WO6pf+vl8;yBrFcKH(Gjj?e60 zd)Od7{a0);Lc}mgZQssv;q_U~-Nv6{4&G&MGX543=ywl=HdlrhXm^W(j-XH;ThYm=Dp^4eyB{kdDdii;e9;_DiU^k$hQ zgDKOt1F}Q`0m0FhG~G$xvN053d=7UteHSUR^rq$;Tqu1XKe`I6@GqU=rO2|^x_JmQae+TaBis=FIM7wi}sqakByxt`D5R zs_?w;z4BShv7hl`X&6o0UXi2k!P|`GH|2sTSrs1ttKm*ibbzv|uWxywgE-G=wf=ZKH4dO`X)e#U)qR@-Sd;j#oj!dk= zYqNey2MK>|Dme)**6hmZi#d1N9f{C^M;ndl<#*Duk$syFcZ;cw-#ZWEq~EtU;XEqS z%BfR}{MQ!Neh+;@9%I=TBwE(1_=~P=)fNc}to!eY)e4&3o2~nAZ7$+5Ta2x5JdsQTCZZyAL6y5QLGdsTJS;(v5jL&U#NMTL)A3gRl1^)iH<_dk5=KNbK%D+I_dH@dkGvYJcfI> znFdt<`~j?e=(V+>O%WRwwr$xYq5XhbF|ZxtYPQQjMn)&QNFN&s=bt?|9$dM!jfg|z zm{M#}e^wvYv##^}BIe$U2Rp8R9aY&Djwca4qjwQ&gB&)hI03I}aKNcXALc>!XsQJS zr8GAC*bTfL^@x803yh*JFCojqp?KoWJ})=nqF$G1Y>J-P^8(3gY3O)F{FkQear?`H zg3!5}w*^B(?k%gRCe-WP9^En!tEj_+Z*#1pS4JEzOccrb|Rh<=d%FhZ8Q zXj8#u9l1`$u6&1(0~STAF!{}6{|AZmf9s{~W#r=OgEqZLoq1_8MeqUjj$k=ek%9Hu zX_^GG^{BRAIcE3SKW5;83f4Cdtk%JVFG5m;sC@a!@}I^w_{H(;MP{rSbkrXm4bJm_ z2sk!I#%H9Lpc5ikB83zU8t_&(HO-#6#ThBECXU61h`)`?F3@bwS9*@xAU#TBeWJ@1 zaC7*bO&?Me{=NBI5h73{nDud)%uG_&x433WfwmYlLJ{d1z!%+Hol&~euD#Lj$+--r zz7G1%(s7-T@gw)Ge15I^0)WrcTD$6g!Ut79WO*uqHr;<=Kz`QsI4+6}=n8!23#V%| z{cFHxlRZN?7*^E(g>sPlgpm6S`~S%TJm}%(sX+iRz2=(yW5TL+GwyBkeGvu@&mt3p z8o?@JXIBaIvd1obUgFDXOo}R;nqGO1M+a&5jM|1YAPS7eOmgK_`Cn z+Nz*lm!aR}bF7=NN$L9AtXQsqi|rIl|*shJ>cs;W$PEPns*pny#M^ zZ%T_?-e3QGILmVNcjg@SUYNrj^2LE9@`zRB)uMz2-gh+lvlhRi=+_(Vfvg2~_^Cdo&1};_+3RquS5ItwMm9Mky07vvTZoNs`(Z zqBh3sII=1pXN8kFIuEvQ^*LwmtP2g)k}!L7SFgTE87E#lc{YjYc&Q?utb^BdO1trT z-z{0(9W@a}1eoparo9iVvMw98{Q`2YQ}`Xx@cdHfDqW|V&F@LK@?Z-)Wrf*Yn0q6lklukyqCxw)h@i!}Jrz^Wj zfeVrc*1oydcx`#l66a(V4y>R-8oWsRV+D%95_4~WcE;Zq*VtL@4GrlJw!zo$&Kq!N zh!?Jje)-df$1>Pb)otE}Wuxm^U7p4rSU?axu2a|JKp_XEzoDv4y<%G3-ku?m=?RXN z;7j+ws3HmtAi-hfNDcKiH!Q#f1CXnZICa?=MXXw1Mr%0h3X-;;-<_~G{XVh$l=pXj z?Pnz|0L=83Z1t9wcI4KL!ygr7lJHf`WS)1>3|AQPv8f0kgEJUet)};LZvEUh$CS_j zd7|8Wr5*wx*-s;tXp{6q;zS<<$-;`p!g9dWN;x&k?gdY)QYome{s$NAz>#@*dEp@O z%F>QW7>YsG7L;MdV*kusHuBw&FwL3uSG?}=jc7$fjN&|^UEgnwsh&i=z6<-zwXQNzWre{e9X z;}JjYRT!!L)v?}yfF@MrhmuGL7}-9A+BK)(99T8bvzyStOc3E~NRf{&PYc!dX*@} zsIvlM#7zO}VNpTr*4$TO;^qy-hX#h*Ev*BtiiRYxa4;LbcEdjWw47$nF#z+el|GvY z`8SjV*_lm7NI%cn%d3<-QaHMHFP?O)FpiN4Otr&QK2#Y`m{JrxJT{K@qRaBnXg?IhY!oXwR@vGK>>Wt5(56 zHqF0Dk7uWhMhX#&)ck7XHr@8lFkd=lMHo!dCz^iErGKN_r*n+U30zJ02K)J44cD0#K{0m1!OMG;N>`zf;og=T2eT{hjhUg%78w1NTOn>!9s~k_q z8vDni~8SbyGS# zgzT2B(^H0f4li;bdLODDZh?Gv!2YN{w0`HCXsUru!N8WXar=equ#Wdl`EY)!V}Hn4 z2G$7VysEmz!MWF#;C;tS*E1|5XQuaSKNp^ddgnghF4QqG%Am;ebuH5DYw4Z!uQ{>Z zxPfiseYAS*kSb!bfe>TP@k0okdo8BJgyzQTByV~_F zA>7Ya+xSY{*W2rh|3r8;iNWXEu-`6`IHV9@Bv&rW|Zn+*+iIo)aE z`Q$Y!+A)L;mIBGzh1grLGZ)_2R**)zh z(_@#hFv7q`)Q2*m?mr$5i96WC$zPU@G`$?xZz`7c4)3fd>M>K(I*U>HdoNNh90=n@ z>oRrPH1uf~xp~FWQ79K2za70#6hZ68X~(;Ls1N;ZT~<~)GW?V8VW=$Kr?w zE{Zu=vitsy7+tp z!q~4dQNyEKLwuo&CqI~C`2i4vdxo!In~y-7PwNe;D2!I28s>)k7>Xrn5MP6b-T?2j z>@Tfyf?r{Ayn-;lKp<2SG>QCK)R=sA-`$}+*l!~f>X|B`=;GU4xvGxE)9ytDrkdk_ zyG^IkT#848L5ksV`tVTi`KfmzFrQ?;E0zrI4se6V2Nvg4{WUmb<=_DaEZE=ut)Jbl z3a{6x0E>)%KQe*ulg-vN1R(N%iXUVydCgk&Jb@Q^`h&y=2=b^9eio>iU(?&@;2@7; zcI5c4U4B-!_tCkr<7>pI4~{46lL{|KtM3UUKR+%9Jai-~cHGWB^_MrwE|a!e1w+iJ znjj-Dk8dc_5{1?@&+>_WKMKk2X^Pj}pJ!?J4%nItKhymja)BTFQ@}3T_6Ga&gC96J zbWo?*lPr2fm_EW(c1)PgW<^DbFe@c3De>RtrO_|NR5B=E+HqB`e2>k0=w)FagBZgSY8>$7olNqa4Tc5GgcfjWE2<{g zqW{+*eC|k|7NUFpID*>}GiRvn@Ycur*&R}uk9Mxj?Lpc&67Uq|KA#X zU=K(DkTj6mp)oil+zN1cOq*}>1QD9Fu zxR6Fqk9|^?RM&T9o6SPUvDc~fpu9C%2AA!YSszP#HeL9Mt zEY4VLETfI}Gu{=~R7L+FHNTIxbH96;09i;ai)) zq2P9vB*F#STbw(WiS*xK<>8Ru>2QCD!fzF&pf zZw!jBe4My;Og}k`nD$a%Z&=CCyS-luLX0@0BVgnz$+|GeHC>SLT10ftKKz0QZ3R=$ zr7xk@L-*@f=L1{BxD&R+YiL`uPt)_2#$DvRF}F87$z%dLD@O$Y@Uj`f1@{$N`Dgjn+cR=dOTLyLe^> zt9cYb$C}Pp$!~CCNp7p-4j8w_?fx~>#iJ{J+o#K`)&3ebxmz=eZ5{)jWKT!=xZz@j zxcCmJ(_QOWvSj0@j}Nok{zAa_i;obI>U^v1!bJ|}bm!d5p{mhyr_E+W{@2%-#};8x zmOmv4hVXFx=DJP2-LD&9LMBUa+4QWF3sV<|4trkmHF4|Be)yVI_1HsfRIxo3wa&u< z?pAVboGB8FviT7BVH7jx&TR%pspUibCGE#6hxz+%0f1}&r5OX7!-U+*y2^e+QN^FH zS7=B?F<^IlN8|L$cYi`t1Lsja)e4^Ro>*jh3kv99)#3h|WIPZD zkg-UWVs8CAIiz|+!pb9SO@0YAdffZW+4R8tYI{+cisAZBQKK1b*$hrpqiHw1m2>KU zAr@Vk9v?6xdoShYwHx}8+_c)%?sDFR3gU+Vg4ppaTQS9fAXw7N4sWs(VPBKJpnHC= zh_53Vc=A#V0gJhLX|RdV;t=(xen?%7^(PCdf$s%+HD5laQ(q7xsE6NLNjht2&^vMJ zGhA5a2cyk0c4%dEyiXi%1~>gwL?!nk3rNwyS0UW9J5 zqhVQ7Yuy+UFg`G?x%N2kq??w9ph-WYIwX%v$A}P=U;99u$Ezf8-nAC=y0b++dUZ`g>WQkesfr_;^^XUdzu1X5le!;~lKjn0{&02W1A<-3DW!YS$(Hva=Z&Ab^ZQQ@WMRb0%d%% zT;sUQa=${K8@F~;EoyrPTUB`>(O>26DO%g7?s<^R1{?4HycBo3xV>KU27308DXA>J z+!>^c8grX@tJoBmPzVm!JH)d+kamv_@<>>=%NUfJ0Gux4&%UZUgfdyKQPhs&>ad+?+ANL zrp(j)74RBznh^d+1JQeefMu35v31O#VtFd#tv2l7dwN-4jL*{4|0 zF_~;M|62qwDL6~jNPE~vyH9c8DUf^VcPS`1522X`|0Qt8V8PGIQJ@td%CQ+p@qA~8 zWI+y}<~e)f&?gU>wBPvB3j5=uf!ogGbBNl~)T$uEtr_@ya~CatIdC*5aD3!<{C65C z6W2*i+=^lS{Tw`0J#r2(@V>0t}oWki4L5YE9N%tbTZ4sUHb%B zTV~%}L=$PHW##-JsasKxqBlW%>gBR;>b$-=FZzc|<+Hle3-(&8S8Kgj~q@PMY`b&96#) zLDT_{t+Dcn`N@#ur<0y@`~I#+nJ`$$;?^k#vqW?q<2Izbme7!405B2%+Lk_5wbuAS z(1_teXDriWY&<#gB*H>==1LG`RhIcAA{ZhuzSv+U35jGcepWeOJSgjcqUjzhki)2l z>ZkzzF1gbWZS~nN%bmR4(x^4^e{jsK8fZJ^iw%G*c2<~Kkk;n>-(TAM$Q%#TKojnU?;<}9(=Z6ZjC$c0z$1S`eDR3zqd<0?+ab7Sl5@9 z%x??7AM|{VZ*zFpKj&uA1^FztHz(07Z|7UQzZ@h5{I#T^3Yk3NGMgCR=0^<*DZxet z;PdnHpWx{Dqx*DjC>JX)_xb;?|%v zS*v}N0fIIke|hy?B&UVnARlfUo8dQAl+LEkr5f`_T8rgZPs{WOS}7*z<_eEs>$8+| zr|(Tohs;K@nPD_DWqdI$$zYl~UqG-7`jRQ^RZ=oL%COC~Ut);!e5chieoyV(K_@C| zux0_*LaSyv%4U7lv#ZFsr)XG-YV*<_b0QguXeB-LRvquY!OjQX85m~HtV5r|2(D_Q zYHVWmt`a6K+Pdl)Qp#VS3Waai4&z`AxBuacHEChcv}FQ=hB_`7@}TA?`~+? zG8PXat;a}j#+JRnx3OIdjiGB(0^8~ed$8w$F0MVU`IDt2zim1tGyQu4vnhYP;(St| zz`55q-_~AmUVrh#b`*Cn%0EX-!4n&dGKy)n|IjAH5oKW5+R z`ER=-lLhZ;DiIhH%@Gsi#Ld;jWj^RKm zb@rcmXT+{4FJh*5vt`PF|8Qozg)G*LRSYko?<_#KrRPFc6@pgWKa90R%jmUfT!a%f zYg}|d-S4v-aQ;V(HSJO93N=cXTtxg(bOvo0TKYSY zA(5-uBx7#XAF?Qsdgb?uHadf=_*Q0c28i!`;RimM@8NZ&1Bq{^5Py$UwkzD4C>(H- zxhmSs@$KMB^r?CB?|Kos4Q{1=mY}EODZe`md^2J6Wt! zi%SfJ#K8km%)x;~fHXp?+(KHP=Vx_cnZkMa2#rRF$?Yn;?Iz47H}1tpWon)GKN(a zy2RA=gw0&8{cp!8dTMQ9&Bo3Yqaca@EO~or`D`t{vyl{G?*~N^nn5Mf<8Bj2@X#eT zcl42pptS$2%W=Q~E{sc(#aByQA+va+6>`(-ye92=THw?smxx)}3~uKm!P_vP0f2AS z*=8bVJ^Nt?7!K)3s_+Fpnk0HIg2&)Kl3G5HH>2*RlepQPf_{ukB8*yGM#s? z{f;hgvM2Hc;|6%3&!x-w;6wgr&gf~^IGD(K`>eQAxW%d;=j5EBqqo9?{x28#-wvMt z+Vcaugo~w2^q=?h;@@Sq$=d60EP8{H{-@$*_wCXEJ(lYKgS3=-oOnxAg7Asxr)N%yEw`E8>qR-Ft%oNI74fu$sVY7zgvoAdv6iYF-~2?9(~?BqF%EoGGB z4@NMZ^Y`;^Q$*%!CUY<$Pd$Jz`S~ALw7gscWb)7s*b$>Slx9cI_=x1Hz8)5jYM;Cd zft!xJiD>Fu(pLJx08dIb;5nLL<2*??k?yAEB~M{~K!Q~q8a3mhJn=6kIJ%7U+*EP7 zC*^`EIz37MS|azkkV;zSA(n__SWefj;llb>K$$lfk`rvowA z;h!ABzj22PZxAG;1;rJDFO zKgBO2VD05leeNp58&(%OWVGh`rqL_uyU?KpHWE@D9L?kLbp%HYbB24B&?G4Z8~TGJw61av7ajY9z!yuWSqKNEd)=Bww7!Gbs@tdp*FQlw-V zN!`1}1Pwjflg|ZpftqpS*O`B#c^hFYtR~a3oPjq4#C&|7eaiu_#D{Cx{jB+A-1~^DBgy{Ok0j34 zh#j{D{1+R+qP|jWk&`DL?&e5GWb7ptv(|dfvxMJ# z@>iwLa->X)D7^b!Y~$Mu$B>EO=;-0__))y4eO7_dPqiBWIKiefD&4xtm%0hKnCfJD z;)hhVNeIP@#D{5S%vmmP0$bNVf^qtgp9_VmG`mwkY5!D~#mA2yAYGfI>KKfY;uOn# zB2%m1cI&=FAvzGn9o!_G4Wyrpjf@KLpa|Qw)ddKBw!dR zye-vAGUS6^!yXnq%6jp;PZBrj*)Wl8cqhNIAKbb;oa$8iAsOW%>zg!1a5V*VRq4x< zY0#->*>)@PwKz~tmTf!jJ=qPr@BXJ=G=iL8ohTW3;zeFJq`@T0V@3ea#AP47yf0QY zAn0q)Q1D`-G$lXC%=SxN9z5hf1gB-kQiOO8QAGQPXvxrH_Sw6E1O@(DChz)J`UBAYSPY%9b&?R|0G0oebrHK$I zYA3?F1jVXS^Zg8MNTzj*f_!b~IEyj?u`;CKDla^ayZ#As|0kO0j%=!NOe$Exj;L-i zk3c+uk_JYnNmFfr*`qQ{oqs5v(f^0s|E;b(ay^gD4ruhuA_ZLI0tHWyd`*)viZDlM{dOZBK3#|CuwgY7-KvUX>H)e2&Sz!%r8ggzlB zK~p>UTq4CH}rI9s> zeJa%8F_CU}#+}^9Dp4;}sKL`+N$d!U(qMsTTASLEzuyc;Xak#1A#X^OR4v**>{2zrH!F9U-jrlduGCAd)uG&q3QrrbeFbsU?Kx3;cr5$TUZIGW-p7`~_}4;Y ziqXhzsfH6CJxoo$uJIQC;Wpu5@)nf)0b{L=QcUH_E0li!;%hgcBg!o~_fEF@`2$ZJ zZkf(7brEg^NiL_Q>aCHepk+gpnj4+c^7rx{6qu^CpoTP1$lHK;az!m_CXe`95*7n1 zWI*Xd!b=3v=$qBOHUiH%Q6_6+P>mPv-Nxb_7cW`-CaL85<$CVoB6HFINnuU+E&H5r- zcGlpr@z!n|?(bg7epJ#EE&9syfXrFCuHaYpl(&z>2#sU|zt%16#O8%tQpI9ff`%=y zAf&qI(7TOR|9y@mUGa(L8>gUS+j-X{PL%nT1!u~Hq+?ru+Q4>`=8cX<&(``nLU9cy zxiWvNyVe>ER7vEH(oK%(vdPX|H40@-=DQ{?iDCI#z^$E9hL4UL5e8L}UO>Iv;(;31 zy)3pxU_g}INc(PuSGQV(sW>QPp=IVnjY!soSr{=)oV2%HWn+F0oEkdkd3NS$n<*3l`4YZ69%1PyV_+*Kcl` z4Os`O&Pw59(c`N%ZoW@&?MLT1y@^tqld;``Ec;?m9ycB#nA_f@Q^V$!0HVZM!yRTN zv=Y$V-;Lj0KiHkYL)zZ738&#?CNWl=H3^Zfq{DG93kQ>!na900#%E2hFf4xwtO5tT zua4!8`pwbaE(g;FpR8kyS6)W4m)uF>#sY4#t$yVq_*<^BL#DcwVzF-d#H{@N7WkIp zTPPv-5%tFV+9?u`S)9%=dudYDoqr|Q;Htdk8W+S+d@)J0vw8G3Z_&6jCU82ciIJgs zuTQBx;IzO!usei`bjyI3wQE5Z%Xc;u^gCzwdg?s4+IGRt5zW@$Z2tVbREgmn!^PtN zd)i>CcTHOgfbrix4!QW&gW0{tN0`TI;~|0VvnHNlG>8h!EPamu!r}R|K|iUB zIg$6G>Dki!#$h{lWmyEQDiJ`tqg)u$m;iu!J-OK91PvFiy8}3EgA5xfP?t=X5Xu_0 zbsR_8^%RJnU!SwKsm@KuJem{-8R#9ec=A+w&0K88xlDGnMdEm;hZGp;;ox?#HYcQG z;K&A$-#gka>J#g0v;-=lMK_p4nx zCE>%oE1z@_E~&@MkAV1$^{7$IJOk%9Hb(&2xSEoE7jZ6PwrY}2#IZwtDwP*3vU;qVeX3V<_ zI+k=*1t^o(-(v^jyW4{~$Xvr`_7r5wa%JqYB&B)%j(5#-ls9t)&zbp;aVL{M(Ug6S ze;vJ)sh&}cr+q|T(`~`d3gxgze$4nH=iSse=Oap)mnkdYu;5e$;?=j-x z5sBM-ntwf#l>SI90FV8^@pGSOM-$3PHTIO;*o!QO8 zFLs3~JFXy=2?+6<=Ql7Vz4Z0>Bv?3 zok=<`lc9q`@N!raDp^b}BD{F`G zM~*trTg(Ddme^5EZ3Jgz6YCi(q{#fS zr$eoBoAF_%wcTj!&tGqNpSNQa-Y7&&wTW~qY~)#8L| zh>X0~=43$g$Qm(HlwJ}cD)$>`}ch^_ei zJQ099QG@|$A{O2Mp@0bzi44S-{P+h6H>&nBIFLn$8tcv@QDc~dVb^h-l*1Noww_BO zP~6~rOW*@ToBNu_g{Jv%$c^1o3Ds0gb#sDT%z6FZpnKysvFjDAo%3_|=@U~1xlyg7 z*VB=ea&kdOKk}xq&pUsm_f*T}kn;yi1ndvcEsdhvFZ%8iS6Ex-RhM1anxnMuPoi)a zXB(fCq~5`Fy3yUP@Yz8$MKA*+^Tg@Z9-W*>(lmI!rPH$n2EaL*!@wCST{>FY25<2aJ4g`El71AC(%yxaigzXHOeYoz(5;Mx##7 z%-$kslaQ?vj)=i$k~G{I&e8plA9!qF*)cZav(i}Hon9HqUvA;Da+j-}J#zjM5~m^o zZy%=ws7vv6(&FkeUKQ0$n>bfs9G?2fB--8U*XGky@6ED*8Nk?G1*9leOB8^V?yS#4It{pormR@56F zc#0b_&o~m&@Yq;3r|UZ$NR|$x&0_*hd3H8cq`VR{mbfI>Fr^zic5Y}6ezA~q^wlRX z+vG%Pv5f@uxQ~A*-GO1y1_hs7N1(RSdz!UjoQXVT(^eF!aL|%Z-d5z8jSX(4hK}3u zRt0aW^z#=_XL;=koXdZ^`g!uMiodg-54_565tj?2{YM`{W1z1=jeU@tZOIihTfI%T zhy4@v^9Vr+xeM>z0s?E8xAflzsJ&lbep6uy&o|