client.pyc0000664000175200017520000000342011762073310011174 0ustar dcxdcx vOc@sqddlZddlZddlZdddZddZddZedkrmeZejndS( iNs Ζ9%i cCs]d}gttt|||||D]\}}t||A^q.}dj|S(Ncss?x8tr:t|||}x|D]}t|Vq"WqWdS(N(tTruetencrypttord(tkeytivtntk((s/home/dcx/dc/client.pytkeygen s  t(tziptmapRtchrtjoin(RtdataRRRtxtytxor((s/home/dcx/dc/client.pytcrypts Gc Csd}tj|d|\}}tj|d|}d \}}} xt|D]t} ||d>|d?A||||d @A| @}||| @}||d>|d?A||||d ?d @A| @}qTWtj|d||S( Nt!t2Lt4Lllyn<liiii (llyn<l(tstructtunpacktrangetpack( RtblockRtendiantv0tv1Rtsumtdeltatmasktround((s/home/dcx/dc/client.pyRs.6s\]=N#4cCsitjjtjjt}|d}t|d}t||j}tj |}|j |S(Ns/codetr( tostpathtdirnametabspatht__file__topenRtreadtpickletloadstclose(RtDIR_NAMEt DEFAULT_NAMEtftcto((s/home/dcx/dc/client.pyt_loads  t__main__( RR"R)RRR1t__name__R0trun_all(((s/home/dcx/dc/client.pyts     dccrypto.pyc0000664000175200017520000002146711762073310011560 0ustar dcxdcx vOc@sddlZddlZddlZdZdZd5ZdZddZddZ d d!Z d"Z d#Z d$Z d%Zd&Zd'Zd(Zd)Zd*efd+YZd,efd-YZd.efd/YZd0efd1YZd2efd3YZd4ZdS(6iNccst||}}|Vd}x||kr;|dK}q"W|dL}xB|r|||}||@rx|||}n|V|dL}qIWdS(Nlii(tlong(tatbtntAtt((s/home/dcx/dc/dccrypto.pytipow s   cCsdt||d|kS(Ni(R(ttesttpossible((s/home/dcx/dc/dccrypto.pytrabin_miller_witnesssiiiii i iiiiii%i)i+i/i5i;i=iCiGiIiOiSiYiacCstdd|S(Ni@i(tmax(tbits((s/home/dcx/dc/dccrypto.pyt default_k!scCs|dkrtS|dkr1t|j}nx2tD]*}||krNtS||dkr8tSq8WxAt|D]3}tjd|ddB}t ||rstSqsWtS(Niii( tTruetNoneR t bit_lengtht smallprimestFalsetxrangetrandomt randrangeR (RtktiR((s/home/dcx/dc/dccrypto.pytis_probably_prime%s    cCsw|dkst|dkr-t|}nxCtrrtjd|ddd|dB}t||r0|Sq0WdS(Niii(tAssertionErrorRR R RRR(R RR((s/home/dcx/dc/dccrypto.pytgenerate_prime6s  &i@BcCs|dkrtd|n|}d}xgtt||D]:}||d||}|||}|dkrAPqAqAWtd||f|S(Nis0 has no inverse mod %dis%d has no inverse mod %d(t ValueErrorRtmin(RtptmaxitertrtdR((s/home/dcx/dc/dccrypto.pytinvmodCs  cCsVd}xI|dkrQ|d@dkr6|||}n|d?}|||}q W|S(Nii((tbasetexponenttmodulustresult((s/home/dcx/dc/dccrypto.pytmodpowSs tprivkeytpubkeytgRtlmdatmutNSQtNoPrivateKeyErrorcBseZRS((t__name__t __module__(((s/home/dcx/dc/dccrypto.pyR,estNoPublicKeyErrorcBseZRS((R-R.(((s/home/dcx/dc/dccrypto.pyR/istKeysExistErrorcBseZRS((R-R.(((s/home/dcx/dc/dccrypto.pyR0mstInvalidKeyErrorcBseZRS((R-R.(((s/home/dcx/dc/dccrypto.pyR1qstCryptocBseZdZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ edZed Zd Zd Zed Zed ZdZdZdddZdZdZdZdZdZRS(s.privkeys.pubkeycCs/y|jtWntk r*nXdS(N(t_check_private_keyR0R,(tself((s/home/dcx/dc/dccrypto.pyt_fail_if_private_key_existss    cCs,y|jtWntk r'nXdS(N(t_check_public_keyR0R/(R4((s/home/dcx/dc/dccrypto.pyt_fail_if_public_key_existss    cCs|j|jdS(N(R5R7(R4((s/home/dcx/dc/dccrypto.pyt_check_no_keyss cCs|jdkrtndS(N(R'RR/(R4((s/home/dcx/dc/dccrypto.pyR6scCs|jdkrtndS(N(R&RR,(R4((s/home/dcx/dc/dccrypto.pyR3scCs|jS(N(tkey_size(R4((s/home/dcx/dc/dccrypto.pyt get_key_sizescCsH|jtj||}|j|j|j|jdS(N(R6tshelvetopentupdatetget_public_keytsynctclose(R4tfilenamet extensionR((s/home/dcx/dc/dccrypto.pytsave_public_key_to_disks   cCsH|jtj||}|j|j|j|jdS(N(R3R;R<R=tget_private_keyR?R@(R4RARBR((s/home/dcx/dc/dccrypto.pytsave_private_key_to_disks   cCs|j||j|dS(N(RERC(R4RA((s/home/dcx/dc/dccrypto.pytsave_keypair_to_disks cCs|j||j|dS(N(tload_public_key_from_disktload_private_key_from_disk(R4RA((s/home/dcx/dc/dccrypto.pytload_keypair_from_disks cCs@tj||dd}t|}|j||jdS(NtflagR(R;R<tdicttload_public_keyR@(R4RARBR((s/home/dcx/dc/dccrypto.pyRGs  cCs@tj||dd}t|}|j||jdS(NRJR(R;R<RKtload_private_keyR@(R4RARBR((s/home/dcx/dc/dccrypto.pyRHs  cCs4|ji|jjtt6|jjtt6S(N(R6R'tgettG_KEYtN_KEY(R4((s/home/dcx/dc/dccrypto.pyR>s cCsG|ji|jjtt6|jjtt6|jjtt6S(N(R3R&RNt LAMBDA_KEYtMU_KEYR'RP(R4((s/home/dcx/dc/dccrypto.pyRDs ii cCs(||_||_d|_||_dS(Ni@(tstatetrand_seed_sizet prime_checksR9(R4R9RT((s/home/dcx/dc/dccrypto.pyt__init__s   cCs|jt|jd}t|jd}||}|d|d}||}i|t6|t6|dt6|_i|t6t||t 6|t6|_ |j j j |j|_ |j S(Nii(R8RR9RPt N_SQD_KEYROR'RQR RRR&tcopyR=tkeys(R4RtqRR)tnsq((s/home/dcx/dc/dccrypto.pyt make_keyss   "'cCsdy6i|tt6|tt6|t|tt6|_Wntk rRtnX|j|jS(N(RORPRWR'tKeyErrorR1R6(R4RY((s/home/dcx/dc/dccrypto.pyRLs 6   cCsoyAi|tt6|tt6|tt6|t|tt6|_Wntk r]tnX|j|jS(N(RQRRRPRWR&R]R1R3(R4RY((s/home/dcx/dc/dccrypto.pyRMs$   cCsr|jtj|j}|jt|jt}t||jt|}t|jt||||}|S(N(R6Rt getrandbitsR9R'RPtpowRO(R4t plaintexttrandvalR[txtcipher((s/home/dcx/dc/dccrypto.pytencrypts  !cCsU|jt||jt|jt}||jt|jt|jt}|S(N(R3R_R&RQR'RWRPRR(R4t ciphertextRbR`((s/home/dcx/dc/dccrypto.pytdecrypt s  'N(R-R.RRSR'R&t_default_privkey_file_extensiont_default_pubkey_file_extensionR5R7R8R6R3R:RCRERFRIRGRHR>RDRVR\RLRMRdRf(((s/home/dcx/dc/dccrypto.pyR2us6                cCs)t|d}|j}|j|S(NR(R<treadR@(tfnametftcode((s/home/dcx/dc/dccrypto.pyt_get_code_from_files  (iiiii i iiiiii%i)i+i/i5i;i=iCiGiIiOiSiYia(RtmathR;RR RR RRRR R%tPRIV_KEY_C_DATAtPUB_KEY_C_DATARORPRQRRRWt ExceptionR,R/R0R1tobjectR2Rm(((s/home/dcx/dc/dccrypto.pyts0         vericode.pyc0000664000175200017520000001252511762073310011524 0ustar dcxdcx vOc@sddlZddlmZmZddlZddlZdZdZdZde fdYZ de fd YZ d e fd YZ dS( iN(tCryptotNoPrivateKeyErrorcCs |jdS(Nthex(tencode(tval((s/home/dcx/dc/vericode.pyt_check_string_and_convertscCs t|dS(Ni(tlong(R((s/home/dcx/dc/vericode.pyt_convert_hex_hash_to_long scCsWt|jdjd}t|drJ|jt|d}n|jdS(Nt0xtLiiR(Rtlstriptrstriptlentzfilltdecode(Rts((s/home/dcx/dc/vericode.pyt_convert_long_to_stringstCodeBlockTooLongcBseZRS((t__name__t __module__(((s/home/dcx/dc/vericode.pyRstCryptoCodeBlockcBsPeZedZedZedZdZdZdZ RS(cCstt|S(N(RR(tpt((s/home/dcx/dc/vericode.pyt convert_toscCs t|S(N(R(R((s/home/dcx/dc/vericode.pyt convert_from"scCs|jj|jS(N(tparenttphetid(tself((s/home/dcx/dc/vericode.pyR&scCsD|jjd}gtdt||D]}||||!^q)S(Nii(Rtkey_sizetrangeR (Rtvtlti((s/home/dcx/dc/vericode.pyt_chunk*scCsj||_||_g|_xH|j|D]7}tj|}|jj|}|jj|q+WdS(N( RRtcipher_code_blocksR!RRRtencrypttappend(RRtcodeRt code_chunktpt_chunkt crypt_chunk((s/home/dcx/dc/vericode.pyt__init__.s   cBsTd}x0|jD]%}|ej|jj|7}qW|||fdU||fS(Nt(R"RRRtdecrypt(Rtglblstlclstpt_codetblock((s/home/dcx/dc/vericode.pytrun8s #( RRt staticmethodRRtpropertyRR!R)R0(((s/home/dcx/dc/vericode.pyRs   t CryptoCodecBsSeZdeddZdZdZdZdZddZ dZ RS( s 127.0.0.1cCsLt|_|stn||_||_d|_||_d|_dS(Ni'l/B2g(tdictRtlistt _code_blockstclienttportthostt bootstrap(Rt code_blocksR7R9((s/home/dcx/dc/vericode.pyR)Cs     cCsA|d}|j||}|j||j|j|dS(Ntver(t_send_ver_to_servertupdateRtload_private_key(RR R-tvvt server_keys((s/home/dcx/dc/vericode.pyt_get_auth_from_serverLs  cCsztjtjtj}|jd|jtji|d6|d6|j|jf|j d\}}tj |S(NiR R<i( tsockettAF_INETt SOCK_DGRAMt settimeouttsendtotjsontdumpsR9R8trecvfromtloads(RR R<tsocktrettaddr((s/home/dcx/dc/vericode.pyR=Us  3cCstjjtjjtd|jr-dnd|f}y|j|j|WnnXy|j|j|WnnXdS(Ns /keys/%s/%sR7tserver( tostpathtdirnametabspatht__file__R7Rtload_public_key_from_disktload_private_key_from_disk(RR tfname((s/home/dcx/dc/vericode.pyt"_load_keys_from_disk_ignore_errors`s;cCsP|jdt|x3|D]+}|jjtt|j||qWdS(Ntr(t_prime_all_cryptoR R6R$R(Rt code_stringst code_string((s/home/dcx/dc/vericode.pytadd_new_code_blocksos cCsn|stdt|jn td|}x:|D]2}|jj|t|j|<|j|q4WdS(Ni(RR R6RtgetRRX(RRYtrngR ((s/home/dcx/dc/vericode.pyRZts- cCst}t}|j|jr5|j|ds      %code0000664000175200017520000006433111762073314010052 0ustar dcxdcx@vMBm䤔S~{@B"d1mD 9 tauUShRvK6,aTvT$yh&@9BBꮓ~_ŋWRcў'nXtv @DE!Y!Hb[~O$L Aa?I'96YguBTOmY+A2z/-2Ѓw7.Y'f,'Pn9ހ:A^pa}U5 j.ڤFʦضl4Ź)D1 s/*z5ٙ]wS~! oYϵ|C["傌֎.hk[5cs! 9lQO@[A,O<#> 3m(S.2Q>wY8OU;& K/L}p;賗s( ,1/TA+F8m[KAކ܍F8PmQq0AK{()T{mC뭘&;/dδyd{X*S9dQ5b}0Ɨ\TXK\SUH[#[wS]z9-žt4tCmlU>xI Urq lyP.Vr[e_7u3MY $%yń>J #QgɃKzxm>gSiTgfk]a(b_m"uﮞe”vT!6?qD ܎KR!,wns̟ r^E,Uݣ.,zc(ûjpFA96(\e뙘U.2*k*/$1 $]YNיr@e*;:XO[c)EŒI] Fzt)cO(R$03X$Dƥc9(oe2tF%!0^*vjglJ9t2%>^T(qG FY^4M;kiE1|Y%=x*dVu=[_RXRG]/J&Etc0оS獵nδ4!-[LU? /`pn%Z'*=$]4.~h+,W.)l,VOBp䉱ܒ6kP "~ pVE8-|լsrmzO6k&%xO/ |WG-%v]16Jĥ:K a/V +"< o.K^9:~C0zгT%݉jVsHOJcӳu2R۔<"}w9Mg =Ľvl^a+b@`A2B~'|BJ*CBM>EpeM_3ŘgQpb Tî,9^f~8Zߋ >ވ2s+,S"k71fFE BD@'sv`U8) s *W ڟ LuS#}4 j:>%`F& n£2 M+= rޕZi S(ԔI-bKfŋpXRzK5&p{4HvmyYUn mRrPOT8 6λv7Vh6XG6ډJ͔ɚ4yҭ!!$x1'ez98X9Px+j}٧d}bn3WRWzq5g4D֔ 끯6e%$)Y[8Mh 3M~*_mDؖP wKA:=?~җoڱ|Tw?cQN2GWF{`qS>\?΃}pMI3lpffH,޳|#HF|jftL =}3E%q?ݭHF&\b4e"o-Rb^[0M~hbcGwL{, akn}&$6PBj#6_ΠoJ^m!tسs.nx^&@U444v%W/T-Βٕi3gn6_O &cټ]61h7Bgu3-04e_uQ#FbqgqgPJDʽq9py=@}[}ҿpKFnvAIL霏YeGQfm[B+I ~T:w*PT Nڜ.9)h`)x!VZĔus+ZJ"ձo@`I vb֐˚hXXw4lIH S:2n)sg|kNJ+(nmZw6h%3OZJ(hM $F,SosRDe!&nU>oּTfKX?Pp|lv.a3 R?Mf R~ruLeaJ9q0s=7fwyY:P7q aE o 5oL'~]m1CSA`N>*6^c[3d"#Iw'fTW4ʅ{IֽDʪi`{JR۪9 (OWG!YzO̘){/Src!1{bM/̞࢚#b"ML6ݡX%9 uXD 8uByƣ0tH3n3( ?AM&y ن4:xD'EW/K,@kE*hjU稐vfFGi .Uܔb~m=]o:a \bfFGkݠV~뒸#A͒ag^B Ō7eq×-kߣ[ƍ"C6 ݂ɽVlN2ׁn⯜o,΃OKWhšYh ݽ-,&XZ2A0dPWqj,lS9ÌgEVOm- _[l e0U.WO}WJ/!wv|%ц؜4jWs]ht]/"a>]1 EK9.]TPVp u2u+N*|A\irfpXhUwvb1"^䭶6k]O6+>BJxQ; u|bi~r[[~5]]4Z .WE}ϧ63Q+lQ̟qF" kDeo0ŻTōIĻ #iDe#j~LP?A.آb;z~qh\w)76)=H?YjvG%Z\ZX1$&Tx-s@As8yd~.d̗TR-Acp[4nu#0o =pZRDѭMټq6J"iO5ݒ fw;}Q#lM~11`GptIN3v9j:Pbb0QjD{,9,F1T9G\"P3QK9SS]PAwH"ۓn7|׸nLߣBBOlT5Ĵڔ3"3o cA2,M , f'#>NW)Ei1Nc j!.j[*}^q-Ʒί8kR"δU{'r) Y 8.U'2#Ll:X [N&baug"z:: JA4WέO(,=Fsgk(],xEtL{Nj Bi xO#s5MH$UPTpY#q4GVjʝ~C`6 `O Vd8іLv9{ Dj`Nxhhbat=Z*kfip&CIPЕ@.:x!0":Zv'lcBQ@eoNd rH{C~ذOh/ȵ7Nc<@u箱R} M T̙mgv@D$+ξ =\ ^2 1 Z5װQtۑhAsA!(sXwg}t#ŏ|CawX\Mk=lv~{qRnL]/z+@01I/4.pudvI36qEQRgA[NDAq/?XTi~_Tnx^x_v51%%%3"NMikoĽ2$2Oy+m+;VlU8bE^M!|IYl3ͯ" #ny3 Cuh~ z-Cc~ra H@{0U9.U{"SI؈!˖Hj u̘w'-7Ó߲NwV6zs*)sw+^+snQ\$z@«ظքgĵYg1\j. _=Ή.s XO7bHst`pOs8N7I{ ̈́wÏLՙ (/}$7bӖ{}_, :xg'Z'M^HnYS0aNL6S!i|Up(ǵZk- "Qi*>;@x¯=&&g26(MT=Db 8}ͿtWK }(p S:IE/_}#d '@J#KV̖Sє{hg d'FxA/CO L2.a~ @wH")d|x1\V<#ۂY6|]GڑN"yD>\Ԣv,>aO56_,d}|~Mj$Y|jǕ㩏0VmEILCj7XEٶ1ey`8Ǜ~o?!٧?bC~L?֣͟pDu;6 }[#VʒH;sAbϚG/Vv>+8ϝC<@p;~2Q zTM0&& 3lj`u|dD?g4*ݲ73?W:_F?w$6Gj^ aa IϚ>IVL6DPF^E"%XQg#-FgP<D]KV@#m4%6:B,Ӈ) 9#F$.Awf‹ǖI.e``;_źëƄb >QpKx6&Go2N?N(()v_C *gL68*u{ Ad %lJ2+$ = H:LTcpyD~.!KÆɀ]7)vC?7xuKj j7 Srdq`Gf(P^:x9HN!&uK$?RB;U#ʢcv1^BD2NnC ~?&C<5{ c`bm#rhѥ 0Pĵ'kxLc4,`_ʞ0cҐ;~:p>{֫;L۬k ߸ѯxT#Nnh2@XntY6hK k1 _li̞:R|i_*Y7E.ʯİTua#ɟI e|hF WMq,],h)w3&I'Lq\9Rۖ6:eLT5+H5rz 6vbT]t75ڳiէg) M*:Li7,Yz%jJ\5Z?ۻlmt~kY9lxF  jm A'FòOx9y$liG\xTG]qF.8їQ'[v1t װ~ C_js{@*n_,*1Ep"n?Ajo DUxg k7t `Z@bUZn ߏJ5a$Nsy)9=lq\5\f+kΔ>4dgxNqV8P?O@dg3sOq}E>힗53nKխ⌎c r-@7ζxM RըJ"G\/<fȣ;}cɑrxB)/sk 8C),zwlFl~H aa Tz|5c,;e?KU+;– ؾh5ų= \gvYwb8l+=m+J",$8%܄WqGݫ\=)r59N noyS΄cW0~z" dȬx&dBGIiqJԫ,c} ϧ wȅW8qڲA]-X^n% 56I" .F/ud 7̮z$#gH)2'HT8B"کVa"SrMg.^k$2o0PlVAԐ;'j)ܑoԘy]" =PE4H_ʏun4h ()]=vB0`{E4 6vf)VM[OMW>&~g@WlCrSh׈zLPNWx'3-

;gVt69C^#iV/ҏVɌГT[tgw̾+@zδ ;eeyT|9%&T@XV;T ++s BtK#JbZIUW eu>HW0&΋ȈނߐrC,N mV&`7npe]f5@׆-llXBOҵ#$(V1VUv&ǛW,e oW^Q%b\ڡt!QG-Soų# rK9~Ipc?)G7d< ^0k\f( )zPy[9F#7xR>1 6ʼn7tOl:RJ,h _(vwF>w኷L(_sTUj;=Sg2 _]0^,')ܥ.9?d- 8P/c.(0,c}Ywh ܠ9̡_9Dw~b.Bs:a7[B֧l?&fpIU~MMdѳ˩x8I8l[<>N9D/>{D]kD[#wx_N 6͠=4ĚK Zqs3N [ ٬vy(E|p^}x2`ʜz[S )6Aưjj4/H}c{ͅ꛷#2b+B{o%M3!a  ΓXr&n82|턵3Kh1hLS&D0T vЬ#KvEmZ)).,>6J8kM, QdJk(4i>$mH .uwס3ѧOXvd4wÚmX~WY1y(AVNzNHK󲨺Yڿ!l01yloԠ v ?¼L8"HXuWUqXKB2jݢueߟjVGMNxVRΞek,5J^8OC!Co xt("mJc%&(,f2[hɛ'B8+_Y" i>Kw]wK沉У8@CHZ1}j7/(9EUDƫW1Pѹ7_Ǹj4ƾn ,VՈBO\)<=6D6-&oxVCl>F7F`T_;r;,}؀;CWY,DH)isa#8WFy;U)N{N Bsu>O02؊DT+7]0`dg7uhPsMZ6bl@SZvW⢨Hooo=`#Qfu7C>j>ԝEA7VfQDx*W.ާAiDe ax˳ZPO0Shuel&pJƍuЕ-  iF_5#]TٝkKz]~'M'ҔF~?5p+1ࡺT F\*]#  9rhׁ1bs(IC֤\RW0@HT,PS\FL-2Ѓг^ib}X݉6ٗ70*.`LU7p̋dEsTD.`E2xLq(![>,r.É~5Gbi:bi^@PdM}"ҭ!sq(`r:"PU桧k@Aqq={ЌU8h{~5ޏ!C*0Ucsbf` ih)?j|& l*n^ sݕmXD=#t)1kh_КZJ`kןWzKrBT:!=fgaٞhn8`th3NwEgwl t]n\iR/rqL/5o0 3+DPW$@ k >;;=oA zpgTg@hDO(zEc5_ݪC_ů4HU-dsĨʝ*uA.wت k}zfrp̋Hy߃>  9 boo#o 44DSR[;9IvFnV۰V{5_sZ4B#6Wr+˵"_ Xcmï@쀤"L200hqX}\ѯ¹ @9UjRc-,90}WFlTiEiKe}f3җ2"',kWu)ZOPt<%ƓD~:%0oj?`fykút~eWǞwҖA07qbҁ2")N7Ue[O+P2FjKWA/dz muzYew} 8^(ߔ0 4F"C#߿^c諥&3 d3u{c|MӞQP?xGhSԩgQ۲,=8;:εBLD #bi-UhP0Ovz~yAP:Oo G?:)b1q(LnCv(>ӕ?C@ɰ[D8a ñyUoOn6AEk8Q}\OUY_ZJRKY/];Lg)Ir+\Vd?;$j~{opiFu?j5nU3fVuejӬ,'zX?tRPQ oZO龳CPf_78-DMԜ&6{KΛgJQĂύ9 2)RCQ-7,Att7zہ3 s-@mMw(}0TWWnb?)"߁+q\jl=D1P%X["H$WhYB~s'挕Lndꫥ5L ܮ:b+X2\tP%ӌ6br2grBqom3B%Ƣ^'rEm7J"Ó Jwqh(j!!z&Y볅O3s, Kha%Zvj qyGg<7`KddmƷk\Z TDP'b)gG!nZrj~hN'5S)glGּ@݀aw@O']τpS ܝ:S +ά:ì'uLE2 eSހL=vO^q/XR$e^OG2Zs:?66ۤH9k.j^wnP  ߍeC+0۴8[d(3=qb|fKRT+)&G(l^-&!>"R˳t+y mD't煲a%} .ݍC@)}Q4,"fU3Co䕉|ĕ:x!yo瑓=':ġjR9A`8u{Qo0UU!\%"E;,Olq-lב";va+ՔOS*DNO~ꅡD'ê(wE82:Pe8=a|HRRlȗ :+`&F.(oJ*G,ٿ:bF =i8TbAP% ##g!exCDO cUS!֎| x4i/sؚ}ӈ.kO9?U jkmXNVJ0Aݰ]^|Y0:fǺ$hY U9t^͹Hr>=SNE1_?-Op53e@X>Y-;2]7w{FsE0- Gل03忓s Ey '6j(t)%mZCTo?h'W1h;9Ui6!szgբ kH%˺j4ca(p'34E)۠i!)Z5rATD)pJlByd:gHzOůpfaC,f>WkHfxoy`K܃ pJ/2`QGk#R`PǗBiẇUwd@Li9\o'WY~`?I EIǑMcx35L,7eh9#EꥭĞBIBr0 Ї62 L\++Ad"y2 ^&ȑ-GF*p}a*QCc .I"6AMޔEGʃ'Ǝ[4.Ӷ[ti;S$?67#?j̫Vj a/$p 7돔25b Xu|b DIdMPhH\0T@x< =?m&3@E^]iU"^v$gTzuLtkR0N_exTk 3$>S8F'a֗#UU[^b5Ѕ)jud@}b%v^]+:FnMч yY<|( >c1{^za{n?xizF2-;d\g3hƛ nǴm7 ЛBҕ*M۴tPȉXP=i݅|g;j&t@$cҖ=_鿾_riH2NJT2L;a-fПW2k%mc˼3d^)qYzzQ^B_1"-KRo贲]?>K4ooX E-d/7*wznGsߠ?cD})\,!4No-p/9./qwiOyv!ua0J}NgՖ;o/5n NBa{Jlڐ 6 _{Mһ/15H;Bc_䙡 [w˴lu&eJW[1niȝ.J<'VLV+[zve' 2(WG(pYe;=eE &Ti<9m[5= e -R,eb2q!$D;se=o[xN?kqNOXQ)=(+r-IK!@]BQB1i5@'{1 y[0{Ocpj.-`gv~fw?rX[Tu&]2؄&j81Tj*& e#qV3`z5Ԣ(]uʪ]RU.˾1P)4BZr=2Ն`SҊ.L@^j-8[hk|(+@qt`@]&hjqJEjMN%Y}sbRNח}7m=9Y87%҂VW~J;4KqqiDZl`ͼSZ<Œ~TWt~X!%*2Ċ3TxTE&ĠڪϮ9N*򁑍?18\59sԶm"{<qx.JNʇ=DD02_t؎lMrO4AuLo)}tY]Bό T9qx12RmyUbWߘ狧 $&YB*#13!IPٜ`e5g˲%ng(lr$` \f`t@JG*4_.ٟ[G2+_@=[;6C VͦX'<:K_>bL5/_7Qo򎕝w|,|>Qr_1(b e1y:;S5&jXi.U3mBM-bw࿃4rSlm3OQ>YFM( 1]:)E?ա76Q]:י!ҵf]@JpъPFb@57jŬop=eɤU|SDOOLũ<+ٓju΃y4F3`lkH;J. d*ouh*az^/%5}3r$a}_sɔY=SC&;*/Lz-C-Fr729ѕmsX> Hiбg bzP jq47rDP)EտuLyB.J3Ԣ^iXzNh_m+>0R>k =2Һ  wjwʐѯ,&P}:J|rn|~F>|Q\@1_jn~Ja3exvzlߞvn6Lc~AsR!ܚM\"С;@9oyߣj1Xsޓ9-SH}vXKKUvğ مIY+B} i-pToHg>[~xɿl@ShӇ|! DAm 9z{55YOV.:Hbkח*T:G޵T%9~44a&.f(IR%ޮVEAҲt IWcXP;2rCσ,/3o޶DZ־)<%ptɦk)t.,monM9|%#/`_Z峁U MRYNeCndZө!KĊ|׍E6eΠ \B E{bJ GVEn=ÖeE͗AЏ D@6U_ECZDE/O kc|  ~,RkEUE-`ӤCֱVtޛzD29ړ.eWngς]*Ef@NWyrgɑLٕ:ݮ&¡,/?ď;VQRL(ZmHZ2, 5uDV֧EZPe^ a%m[=rzQ}֧*:a }xmڈZ)QuMAn;śt>")T5XQ,@1j ><# GpZLYq4ͯ]!̪>5RZC}>:E)~T/.Ywj!q3GɃէc^ !){/2 Kzrb̷6#uSWJPm<q ̏#YNJ1g4e MhR '~GϮ_d؁`Rhv74#Ϫ`)VI7ヨKa,!lM7@!4@cpWi uKb.Q^N_УH:*X/$0[teCХAso9e#VQ Vg`.hr[I |KY>$YS_HICT}鞩&Y# ]d(lƜܻ.m$I83#+J`ܺKZgRJcFT>f1HZ]mtR|u-6kp.xNk‚9xṭ #@*ЉG޲rB' хM%3|΍ar_;RM_ Vz9$q ''&ɀ]QͶ/*f rlIuPAWj>G`?œF gy|WZa(ȑr~nKP:$Dn똊eZ̿e.slB- &/u;. Vy2*Af FҲ)7G ke.|-!9 MfLx7{M6wxAB|v,c#ux~B V_Rx CC\N %a/I).F|a1 s%5d< 9u S:³W~~W{f80KPy/\P O'wyN9DhWbvi4qGQ6ѥ=Tg&- ^֌ώ@J|$!:]* Uhqz, ;hj1HƂ)OKJz_8.NwG&YoAİ߇\ՊXת>TS.B4ܻH/r E0G)Fpq9q$V b<1\BƆ|OG`)#m#a >ga1_WA=R3.y! ;ܰ1 @`vIow\ O!f-ܩjI(넅xM;9j\08Ym1OdYj9 e+= @*aX\՛RP\60ٝm2'b8.ٌUGOظn*ӱ[,VBoW3=,Nuk.dlʯn!sջji6ʵmڳ-v]|*D|QVJ91o;!(hiVCO[9cri`Ff's>r[nj̚V2 _]L>C5/:8)BUMDKm׶y`Q| `$U0A4N HdptjmN~0F +%ʫ>Zq|cx ]}gH]jw4kDn-@wAN<ж7{v^P9`.-/i7$Z5e<>V/Q xrA}jB]ڀle~.Ih]k^h됰$w}%[2"zQg&~~u=SԫMd;pю10Zl' 5N-*1 H@kGXx5ZtByYIxqЖʊ{&ɓ^kvj LzΣjrB^l451^ Xqo)n8r& qX ?V`9RPTzP@-Ws{a1O˕|G+6v{R&6`TKF SȾn#3]x{ߗJc)1HfdF7ñ3LϢ:h$`8̓ 'pP؋{yUdBSɅ?"~Bl^p & J 5+#'C[_v6쾹hZ y~ YP-v?B(N,]FV]i3Nd NH0y̡qտӻGH{=9$D]z%,@c?.]#\$ҋ1uJ쑤[S:Ps-ڎ~չէ_.5t ϼ,9l:fhe`LBPv#,4!V|RŞz!񫔛BڼSŞFm륁'|6w!SBW[g@*wjBP-=PŗC,9}"YfTbUIvE:T`z# DG'P}z%I Qa?C6\lԜ3+.܍Yd W735&tSH#G"Ҿl'9e.[?[8LneH76uB1t?)"R0Qڌ"~d|X겺bra!R꼬!&1w2>Y'SH2.ms1x#ZN,R iUsheBDE× DyA ͝ly&>>0vl6rLI%>n1B"y@ 9/]g6IQ { +>eH/`r 5 3C n(l-ج:M8;o1<5Rj$1,aXu];z!nhީT!eL@cs-!8Y|fkC+x"ijʕ׆?c|YlyNaf%cfN>a{фZݯ2c;R O84GŦ{V0[/:;wM)pm_w" 0uICZMJ6ǂm!ɹAL۴3Rv昫;MB  z⢋"w uEԚ8 RoKB >ɉѶL2=ڲ,j.&CX#hۺƆ a.;n~E̅9+bu `L0IdT8 UYF lJW!6U&S97D6XCoi֟Ȑ+^4"HIOnҮz V8w NbnXU5ͅ 3zRoai~gһ?!diCޖkeys/client/0.pubkey0000664000175200017520000003000011762073257013016 0ustar dcxdcxa pqcD =эh^  L16941202149672068323278783611515731169309432843680798653325571422294096895920070134652427724918913940608554841337549068097562324751282456548627641811905717806614853378794275565476968888289343981556312823005124780477527596064979098253139529009870204405765465328442344218695606047771625184417986860362677417545053091516707276750503630631468362205242375166221489096683102496266700772503327244679372931609402035246222076582156628956298279439526451414347444727359639986906952060173842932673052740957984129342616118316810995184991874138157499397802434950984029988213877470575509166017940291172042240902387376074678755326131L .n  pqcD =эh^L16941202149672068323278783611515731169309432843680798653325571422294096895920070134652427724918913940608554841337549068097562324751282456548627641811905717806614853378794275565476968888289343981556312823005124780477527596064979098253139529009870204405765465328442344218695606047771625184417986860362677417545053091516707276750503630631468362205242375166221489096683102496266700772503327244679372931609402035246222076582156628956298279439526451414347444727359639986906952060173842932673052740957984129342616118316810995184991874138157499397802434950984029988213877470575509166017940291172042240902387376074678755326132L .gkeys/client/1.pubkey0000664000175200017520000003000011762073257013017 0ustar dcxdcxa pэh^  L17307165813942252526388783732684378787582575636674280762161871944766759544189869776198485973311196636016688963706735027073113657711890305117577791893045191228152678516151818022796181614791460684944766547191853161883550672895268804352013061116064462038104408484011589034385346352717909327886881739328025480444347143528785344716543208485370121790989745113773509886020248366082430324389342349952811685869441713429889463573670049935679430055555534692068206636288641488107918450858523770380679252621695804617593885741110353179796411418054808952785707625326381268193770881859647579122484277262032994490631100601900128419861L .n  pэh^L17307165813942252526388783732684378787582575636674280762161871944766759544189869776198485973311196636016688963706735027073113657711890305117577791893045191228152678516151818022796181614791460684944766547191853161883550672895268804352013061116064462038104408484011589034385346352717909327886881739328025480444347143528785344716543208485370121790989745113773509886020248366082430324389342349952811685869441713429889463573670049935679430055555534692068206636288641488107918450858523770380679252621695804617593885741110353179796411418054808952785707625326381268193770881859647579122484277262032994490631100601900128419862L .gkeys/client/2.pubkey0000664000175200017520000003000011762073257013020 0ustar dcxdcxa p3Ld эh^  L14715745752761797736627911947279295049030627596998757008112119777605156048005187732052479195275328303564363827538321247483718050122457392948592473982774829502441643627836216768980801669375397681984574027037412396947070737495670253458311771362596949875351868879656236606648800044323175973637776536246549770097697821991096838108860855304246873265177263271419614651741692126145662144113542722120471522599508997325197827529244985105147305286108046478585567709633376217765576085393510779315305399861695261982285519737527316360029382902202126091353557690220605247640940151074124217767123949113055723055090910852532940152983L .n  p3Ld эh^L14715745752761797736627911947279295049030627596998757008112119777605156048005187732052479195275328303564363827538321247483718050122457392948592473982774829502441643627836216768980801669375397681984574027037412396947070737495670253458311771362596949875351868879656236606648800044323175973637776536246549770097697821991096838108860855304246873265177263271419614651741692126145662144113542722120471522599508997325197827529244985105147305286108046478585567709633376217765576085393510779315305399861695261982285519737527316360029382902202126091353557690220605247640940151074124217767123949113055723055090910852532940152984L .g