
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \º¬  ã               @   sj  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ ddddddd	d
ddddgZdZdZdZdZdZejdejƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZ G dd
„ d
eƒZ!G dd„ deƒZ"d d„ Z#d!d"„ Z$d#d„ Z%d$d%„ Z&d&d'„ Z'yd dl(Z(W n e)k
�r�   d(Z*Y nX d)Z*G d*d„ dƒZ+e*�rÄG d+d,„ d,e+ƒZ,ej-d,ƒ d-Z.G d.d/„ d/e+ƒZ/e0d0k�rfd1d2„ Z1e1d3ƒZ2e1d4ƒj3d5ƒZ4e5d6ƒ d7Z6x ej7j8ƒ Z9e9�s P e6e9 Z6�qW e5d8e:e6ƒ ƒ e+d9ƒZ;e;j<d:ƒ e;j=e2e4e6ƒ e;j>ƒ  dS );é    N)Úbody_encodeÚSMTPExceptionÚSMTPServerDisconnectedÚSMTPResponseExceptionÚSMTPSenderRefusedÚSMTPRecipientsRefusedÚSMTPDataErrorÚSMTPConnectErrorÚSMTPHeloErrorÚSMTPAuthenticationErrorÚ	quoteaddrÚ	quotedataÚSMTPé   iÑ  z
s   
i    z	auth=(.*)c               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú/usr/lib64/python3.6/smtplib.pyr   G   s   c               @   s   e Zd ZdS )ÚSMTPNotSupportedErrorN)r   r   r   r   r   r   r   r   J   s   r   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   Q   s   c               @   s   e Zd Zdd„ ZdS )r   c             C   s   || _ || _||f| _d S )N)Ú	smtp_codeÚ
smtp_errorÚargs)ÚselfÚcodeÚmsgr   r   r   Ú__init__b   s    zSMTPResponseException.__init__N)r   r   r   r   r   r   r   r   r   Y   s   	c               @   s   e Zd Zdd„ ZdS )r   c             C   s"   || _ || _|| _|||f| _d S )N)r   r   Úsenderr   )r   r   r   r   r   r   r   r   n   s    zSMTPSenderRefused.__init__N)r   r   r   r   r   r   r   r   r   g   s   c               @   s   e Zd Zdd„ ZdS )r   c             C   s   || _ |f| _d S )N)Ú
recipientsr   )r   r   r   r   r   r   |   s    zSMTPRecipientsRefused.__init__N)r   r   r   r   r   r   r   r   r   t   s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   �   s   c               @   s   e Zd ZdS )r	   N)r   r   r   r   r   r   r   r	   „   s   c               @   s   e Zd ZdS )r
   N)r   r   r   r   r   r   r   r
   ‡   s   c               @   s   e Zd ZdS )r   N)r   r   r   r   r   r   r   r   Š   s   c             C   s>   t jj| ƒ\}}||fdkr6| jƒ jdƒr.| S d|  S d| S )NÚ ú<z<%s>)r   r   )ÚemailÚutilsÚ	parseaddrÚstripÚ
startswith)Ú
addrstringÚdisplaynameÚaddrr   r   r   r   ‘   s    c             C   s$   t jj| ƒ\}}||fdkr | S |S )Nr   )r   r   )r!   r"   r#   )r&   r'   r(   r   r   r   Ú
_addr_onlyž   s    r)   c             C   s   t jddt jdt| ƒƒS )Nz(?m)^\.z..z(?:\r\n|\n|\r(?!\n)))ÚreÚsubÚCRLF)Údatar   r   r   r   ¦   s    c             C   s   t jdd| ƒS )Ns   (?m)^\.s   ..)r*   r+   )Zbindatar   r   r   Ú_quote_periods¯   s    r.   c             C   s   t jdt| ƒS )Nz(?:\r\n|\n|\r(?!\n)))r*   r+   r,   )r-   r   r   r   Ú	_fix_eols²   s    r/   FTc               @   s‚  e Zd ZdZdZdZdZdZdZe	Z
dddejdfdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdLdd„Zdd„ ZdMdd„Zdd„ ZdNdd„ZdOdd„ZdPdd„Zd d!„ ZdQd"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zf fd*d+„Zf fd,d-„Z d.d/„ Z!d0d1„ Z"e"Z#d2d3„ Z$d4d5„ Z%d6d7œd8d9„Z&dRd:d;„Z'dSd<d=„Z(dTd>d?„Z)d6d7œd@dA„Z*dUdBdC„Z+f f fdDdE„Z,ddf f fdFdG„Z-dHdI„ Z.dJdK„ Z/dS )Vr   r   NÚehlor   c       
      C   s°   || _ || _i | _d| _|| _|rL| j||ƒ\}}|dkrL| jƒ  t||ƒ‚|d k	r\|| _nPt	j
ƒ }d|krt|| _n8d}	yt	jt	jƒ ƒ}	W n t	jk
r    Y nX d|	 | _d S )NÚasciiéÜ   Ú.z	127.0.0.1z[%s])Ú_hostÚtimeoutÚesmtp_featuresÚcommand_encodingÚsource_addressÚconnectÚcloser	   Úlocal_hostnameÚsocketZgetfqdnZgethostbynameZgethostnameZgaierror)
r   ÚhostÚportr;   r5   r8   r   r   Zfqdnr(   r   r   r   r   â   s*    
zSMTP.__init__c             C   s   | S )Nr   )r   r   r   r   Ú	__enter__  s    zSMTP.__enter__c             G   sN   z>y$| j dƒ\}}|dkr$t||ƒ‚W n tk
r:   Y nX W d | jƒ  X d S )NZQUITéÝ   )Údocmdr   r   r:   )r   r   r   Úmessager   r   r   Ú__exit__  s    
zSMTP.__exit__c             C   s
   || _ d S )N)Ú
debuglevel)r   rD   r   r   r   Úset_debuglevel  s    zSMTP.set_debuglevelc             G   s@   | j dkr,ttjjƒ jƒ f|ždtjiŽ nt|dtjiŽ d S )Né   Úfile)rD   ÚprintÚdatetimeZnowZtimeÚsysÚstderr)r   r   r   r   r   Ú_print_debug'  s    
"zSMTP._print_debugc             C   s2   | j dkr| jd||f| jƒ tj||f|| jƒS )Nr   zconnect: to)rD   rL   r8   r<   Úcreate_connection)r   r=   r>   r5   r   r   r   Ú_get_socket-  s    
zSMTP._get_socketÚ	localhostc             C   sè   |r
|| _ | r~|jdƒ|jdƒkr~|jdƒ}|dkr~|d |… ||d d …  }}yt|ƒ}W n tk
r|   tdƒ‚Y nX |sˆ| j}| jdkr¢| jd||fƒ | j	||| j
ƒ| _d | _| jƒ \}}| jdkrà| jdt|ƒƒ ||fS )Nú:r   rF   znonnumeric portzconnect:)r8   ÚfindÚrfindÚintÚ
ValueErrorÚOSErrorÚdefault_portrD   rL   rN   r5   ÚsockrG   ÚgetreplyÚrepr)r   r=   r>   r8   Úir   r   r   r   r   r9   5  s(    


zSMTP.connectc             C   s„   | j dkr| jdt|ƒƒ t| dƒrx| jrxt|tƒr@|j| jƒ}y| jj	|ƒ W q€ t
k
rt   | jƒ  tdƒ‚Y q€X ntdƒ‚d S )Nr   zsend:rW   zServer not connectedzplease run connect() first)rD   rL   rY   ÚhasattrrW   Ú
isinstanceÚstrÚencoder7   ZsendallrU   r:   r   )r   Úsr   r   r   ÚsendW  s    

z	SMTP.sendc             C   s2   |dkrd|t f }nd||t f }| j|ƒ d S )Nr   z%s%sz%s %s%s)r,   r`   )r   Úcmdr   r]   r   r   r   Úputcmdi  s    zSMTP.putcmdc             C   sP  g }| j d kr| jjdƒ| _ �x y| j jtd ƒ}W n: tk
rn } z| jƒ  tdt|ƒ ƒ‚W Y d d }~X nX |s„| jƒ  tdƒ‚| j	dkrž| j
dt|ƒƒ t|ƒtkr¼| jƒ  tddƒ‚|j|d	d … jd
ƒƒ |d d… }yt|ƒ}W n tk
�r   d}P Y nX |dd	… dkr P q W dj|ƒ}| j	dk�rH| j
d||f ƒ ||fS )NÚrbrF   z Connection unexpectedly closed: zConnection unexpectedly closedr   zreply:iô  zLine too long.é   s    	
é   ó   -ó   
zreply: retcode (%s); Msg: %aéÿÿÿÿ)rG   rW   ÚmakefileÚreadlineÚ_MAXLINErU   r:   r   r]   rD   rL   rY   Úlenr   Úappendr$   rS   rT   Újoin)r   ÚrespÚlineÚer   ZerrcodeÚerrmsgr   r   r   rX   q  s>    



zSMTP.getreplyc             C   s   | j ||ƒ | jƒ S )N)rb   rX   )r   ra   r   r   r   r   rA   ¢  s    z
SMTP.docmdc             C   s,   | j d|p| jƒ | jƒ \}}|| _||fS )NÚhelo)rb   r;   rX   Ú	helo_resp)r   Únamer   r   r   r   r   rs   ¨  s    z	SMTP.heloc       
      C   s2  i | _ | j| j|p| jƒ | jƒ \}}|dkrJt|ƒdkrJ| jƒ  tdƒ‚|| _|dkr`||fS d| _	| jj
dƒjdƒ}|d= xª|D ]¢}tj|ƒ}|r¾| j jddƒd	 |jdƒd  | j d< q„tjd
|ƒ}|r„|jdƒjƒ }|j|jdƒd … jƒ }	|dk�r| j j|dƒd	 |	 | j |< q„|	| j |< q„W ||fS )NrF   r   zServer not connectedéú   zlatin-1Ú
Úauthr   ú z((?P<feature>[A-Za-z0-9][A-Za-z0-9\-]*) ?Úfeaturerh   )r6   rb   Úehlo_msgr;   rX   rl   r:   r   Ú	ehlo_respÚ
does_esmtpÚdecodeÚsplitÚOLDSTYLE_AUTHÚmatchÚgetÚgroupsr*   ÚgroupÚlowerÚstringÚendr$   )
r   ru   r   r   ro   ÚeachZ
auth_matchÚmrz   Zparamsr   r   r   r0   ²  s2    

&
z	SMTP.ehloc             C   s   |j ƒ | jkS )N)r…   r6   )r   Úoptr   r   r   Úhas_extnå  s    zSMTP.has_extnc             C   s   | j d|ƒ | jƒ d S )NÚhelprF   )rb   rX   )r   r   r   r   r   rŒ   é  s    z	SMTP.helpc             C   s   d| _ | jdƒS )Nr1   Úrset)r7   rA   )r   r   r   r   r�   ï  s    z	SMTP.rsetc             C   s&   y| j ƒ  W n tk
r    Y nX d S )N)r�   r   )r   r   r   r   Ú_rsetô  s    z
SMTP._rsetc             C   s
   | j dƒS )NÚnoop)rA   )r   r   r   r   r�      s    z	SMTP.noopc             C   sh   d}|rH| j rHtdd„ |D ƒƒr:| jdƒr2d| _ntdƒ‚ddj|ƒ }| jdd	t|ƒ|f ƒ | jƒ S )
Nr   c             s   s   | ]}|j ƒ d kV  qdS )Úsmtputf8N)r…   )Ú.0Úxr   r   r   ú	<genexpr>  s    zSMTP.mail.<locals>.<genexpr>r�   zutf-8z SMTPUTF8 not supported by serverry   Úmailz	FROM:%s%s)	r}   Úanyr‹   r7   r   rn   rb   r   rX   )r   r   ÚoptionsÚ
optionlistr   r   r   r”     s    	

z	SMTP.mailc             C   s<   d}|r| j rddj|ƒ }| jddt|ƒ|f ƒ | jƒ S )Nr   ry   ÚrcptzTO:%s%s)r}   rn   rb   r   rX   )r   Zrecipr–   r—   r   r   r   r˜     s
    
z	SMTP.rcptc             C   sÄ   | j dƒ | jƒ \}}| jdkr0| jd||fƒ |dkrDt||ƒ‚n|t|tƒr\t|ƒjdƒ}t	|ƒ}|dd … t
kr||t
 }|d t
 }| j|ƒ | jƒ \}}| jdkr¸| jd||fƒ ||fS d S )	Nr-   r   zdata:ib  r1   é   ó   .éþÿÿÿ)rb   rX   rD   rL   r   r\   r]   r/   r^   r.   ÚbCRLFr`   )r   r   r   ÚreplÚqr   r   r   r-   !  s"    





z	SMTP.datac             C   s   | j dt|ƒƒ | jƒ S )NÚvrfy)rb   r)   rX   )r   Úaddressr   r   r   Úverify>  s    zSMTP.verifyc             C   s   | j dt|ƒƒ | jƒ S )NÚexpn)rb   r)   rX   )r   r    r   r   r   r¢   E  s    z	SMTP.expnc             C   sf   | j d krb| jd krbd| jƒ d   ko.dkn  sb| jƒ \}}d|  koRdkn  sbt||ƒ‚d S )NéÈ   r   i+  )rt   r|   r0   rs   r
   )r   r   ro   r   r   r   Úehlo_or_helo_if_neededL  s
     zSMTP.ehlo_or_helo_if_neededT)Úinitial_response_okc      	      C   s®   |j ƒ }|r|ƒ nd }|d k	rJt|jdƒdd�}| jd|d | ƒ\}}n| jd|ƒ\}}|dkr�tj|ƒ}t||ƒjdƒdd�}| j|ƒ\}}|d	kr ||fS t||ƒ‚d S )
Nr1   r   )ZeolZAUTHry   iN  éë   é÷  )r¦   r§   )ÚupperÚencode_base64r^   rA   Úbase64Zdecodebytesr   )	r   Z	mechanismZ
authobjectr¥   Zinitial_responseZresponser   ro   Ú	challenger   r   r   rx   ]  s    
z	SMTP.authc             C   s0   |d krd S | j d tj| jjdƒ|dƒjƒ  S )Nry   r1   Zmd5)ÚuserÚhmacZHMACÚpasswordr^   Z	hexdigest)r   r«   r   r   r   Úauth_cram_md5„  s    zSMTP.auth_cram_md5c             C   s   d| j | jf S )Nz %s %s)r¬   r®   )r   r«   r   r   r   Ú
auth_plain�  s    zSMTP.auth_plainc             C   s   |d kr| j S | jS d S )N)r¬   r®   )r   r«   r   r   r   Ú
auth_login’  s    zSMTP.auth_loginc               sÞ   | j ƒ  | jdƒstdƒ‚| jd jƒ ‰ dddg}‡ fdd„|D ƒ}|sPtdƒ‚|| | _| _xv|D ]n}d	|jƒ j	d
dƒ }y.| j
|t| |ƒ|d�\}}	|dkr¨||	fS W qd tk
rÐ }
 z
|
}W Y d d }
~
X qdX qdW |‚d S )Nrx   z,SMTP AUTH extension not supported by server.zCRAM-MD5ZPLAINZLOGINc                s   g | ]}|ˆ kr|‘qS r   r   )r‘   rx   )Úadvertised_authlistr   r   ú
<listcomp>Ã  s    zSMTP.login.<locals>.<listcomp>z(No suitable authentication method found.Zauth_ú-Ú_)r¥   r¦   é÷  )r¦   r¶   )r¤   r‹   r   r6   r   r   r¬   r®   r…   Úreplacerx   Úgetattrr   )r   r¬   r®   r¥   Zpreferred_authsZauthlistZ
authmethodZmethod_namer   ro   rq   Zlast_exceptionr   )r²   r   Úloginš  s*    



z
SMTP.loginc             C   sî   | j ƒ  | jdƒstdƒ‚| jdƒ\}}|dkrÜts<tdƒ‚|d k	rT|d k	rTtdƒ‚|d k	rl|d k	rltdƒ‚|d k	s||d k	r’dd l}|jd	t	d
ƒ |d kr¨t
j||d�}|j| j| jd�| _d | _d | _d | _i | _d| _n
t||ƒ‚||fS )NÚstarttlsz+STARTTLS extension not supported by server.ZSTARTTLSr2   z&No SSL support included in this Pythonz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver   zAkeyfile and certfile are deprecated, use a custom context insteadr™   )ÚcertfileÚkeyfile)Úserver_hostname)r¤   r‹   r   rA   Ú	_have_sslÚRuntimeErrorrT   ÚwarningsÚwarnÚDeprecationWarningÚsslÚ_create_stdlib_contextÚwrap_socketrW   r4   rG   rt   r|   r6   r}   r   )r   r¼   r»   Úcontextro   ZreplyrÀ   r   r   r   rº   Ü  s8    

zSMTP.starttlsc             C   sf  | j ƒ  g }t|tƒr$t|ƒjdƒ}| jr^| jdƒrF|jdt|ƒ ƒ x|D ]}|j|ƒ qLW | j	||ƒ\}}	|dkrœ|dkrˆ| j
ƒ  n| jƒ  t||	|ƒ‚i }
t|tƒr°|g}xP|D ]H}| j||ƒ\}}	|dkræ|dkræ||	f|
|< |dkr¶| j
ƒ  t|
ƒ‚q¶W t|
ƒt|ƒk�r$| jƒ  t|
ƒ‚| j|ƒ\}}	|dk�rb|dk�rP| j
ƒ  n| jƒ  t||	ƒ‚|
S )Nr1   Úsizezsize=%drv   i¥  éû   )r¤   r\   r]   r/   r^   r}   r‹   rm   rl   r”   r:   rŽ   r   r˜   r   r-   r   )r   Ú	from_addrÚto_addrsr   Úmail_optionsÚrcpt_optionsZ
esmtp_optsZoptionr   ro   Zsenderrsrˆ   r   r   r   Úsendmail  sF    @









zSMTP.sendmailc             C   sœ  | j ƒ  |jdƒ}|d kr d}nt|ƒdkr2d}ntdƒ‚|d kr||d |krZ||d  n
||d  }tjj|gƒd d }|d krÆd	d
„ ||d  ||d  ||d  fD ƒ}dd
„ tjj|ƒD ƒ}tj|ƒ}	|	d= |	d= d}
ydj|f|•ƒj	dƒ W n. t
k
�r(   | jdƒ�s tdƒ‚d}
Y nX tjƒ �R}|
�r^tjj||jjdd�d�}|d˜}ntjj|ƒ}|j|	dd� |jƒ }W d Q R X | j|||||ƒS )NzResent-Dater   rF   zResent-z0message has more than one 'Resent-' header blockZSenderÚFromr   c             S   s   g | ]}|d k	r|‘qS )Nr   )r‘   Úfr   r   r   r³   ª  s    z%SMTP.send_message.<locals>.<listcomp>ÚToZBccZCcc             S   s   g | ]}|d  ‘qS )rF   r   )r‘   Úar   r   r   r³   ®  s    z
Resent-BccFr1   r�   z”One or more source or delivery addresses require internationalized email support, but the server does not advertise the required SMTPUTF8 capabilityT)Úutf8)ÚpolicyÚSMTPUTF8úBODY=8BITMIMEz
)Úlinesep)rÔ   rÕ   )r¤   Zget_allrl   rT   r!   r"   ZgetaddressesÚcopyrn   r^   ÚUnicodeEncodeErrorr‹   r   ÚioÚBytesIOÚ	generatorZBytesGeneratorrÓ   ZcloneZflattenÚgetvaluerÍ   )r   r   rÉ   rÊ   rË   rÌ   ZresentZheader_prefixZaddr_fieldsZmsg_copyZinternationalZbytesmsgÚgZflatmsgr   r   r   Úsend_message|  sJ    





zSMTP.send_messagec             C   s<   z| j }d | _ |r|jƒ  W d | j}d | _|r6|jƒ  X d S )N)rG   r:   rW   )r   rG   rW   r   r   r   r:   É  s    z
SMTP.closec             C   s.   | j dƒ}d  | _| _i | _d| _| jƒ  |S )NÚquitF)rA   r|   rt   r6   r}   r:   )r   Úresr   r   r   rß   Ö  s    
z	SMTP.quit)rO   r   N)r   )r   )r   )r   )r   )N)N)N)NNN)0r   r   r   rD   rG   rt   r{   r|   r}   Ú	SMTP_PORTrV   r<   Ú_GLOBAL_DEFAULT_TIMEOUTr   r?   rC   rE   rL   rN   r9   r`   rb   rX   rA   rs   r0   r‹   rŒ   r�   rŽ   r�   r”   r˜   r-   r¡   rŸ   r¢   r¤   rx   r¯   r°   r±   r¹   rº   rÍ   rÞ   r:   rß   r   r   r   r   r   ½   s\   -
	
"
1



3
'
	

B
8gLc               @   s4   e Zd ZeZdddddejddfdd„Zdd„ ZdS )ÚSMTP_SSLr   r   Nc	       
      C   s–   |d k	r|d k	rt dƒ‚|d k	r0|d k	r0t dƒ‚|d k	s@|d k	rVdd l}	|	jdtdƒ || _|| _|d krxtj||d�}|| _t	j
| |||||ƒ d S )Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver   zAkeyfile and certfile are deprecated, use a custom context insteadr™   )r»   r¼   )rT   rÀ   rÁ   rÂ   r¼   r»   rÃ   rÄ   rÆ   r   r   )
r   r=   r>   r;   r¼   r»   r5   r8   rÆ   rÀ   r   r   r   r   ò  s     zSMTP_SSL.__init__c             C   sD   | j dkr| jd||fƒ tj||f|| jƒ}| jj|| jd�}|S )Nr   zconnect:)r½   )rD   rL   r<   rM   r8   rÆ   rÅ   r4   )r   r=   r>   r5   Z
new_socketr   r   r   rN   	  s    

zSMTP_SSL._get_socket)	r   r   r   ÚSMTP_SSL_PORTrV   r<   râ   r   rN   r   r   r   r   rã   â  s   rã   iÓ  c               @   s,   e Zd ZdZdeddfdd„Zd
dd	„ZdS )ÚLMTPZlhlor   Nc             C   s   t j| ||||d� d S )N)r;   r8   )r   r   )r   r=   r>   r;   r8   r   r   r   r   )  s    zLMTP.__init__rO   r   c             C   s´   |d dkrt j| |||d�S y(tjtjtjƒ| _d | _| jj|ƒ W nB tk
rˆ   | jdkrl| j	d|ƒ | jr|| jj
ƒ  d | _‚ Y nX | jƒ \}}| jdkr¬| j	d|ƒ ||fS )Nr   ú/)r8   zconnect fail:zconnect:)r   r9   r<   ZAF_UNIXZSOCK_STREAMrW   rG   rU   rD   rL   r:   rX   )r   r=   r>   r8   r   r   r   r   r   r9   /  s"    


zLMTP.connect)rO   r   N)r   r   r   r{   Ú	LMTP_PORTr   r9   r   r   r   r   rå     s   rå   Ú__main__c             C   s(   t jj| d ƒ t jjƒ  t jjƒ jƒ S )Nz: )rJ   ÚstdoutÚwriteÚflushÚstdinrj   r$   )Úpromptr   r   r   rí   I  s    
rí   rÎ   rÐ   ú,zEnter message, end with ^D:r   zMessage length is %drO   rF   )?r<   rÙ   r*   Zemail.utilsr!   Zemail.messageZemail.generatorrª   r­   r×   rI   rJ   Zemail.base64mimer   r©   Ú__all__rá   rä   r,   rœ   rk   ÚcompileÚIr€   rU   r   r   r   r   r   r   r   r	   r
   r   r   r)   r   r.   r/   rÃ   ÚImportErrorr¾   r   rã   rm   rç   rå   r   rí   Zfromaddrr   ZtoaddrsrH   r   rì   rj   rp   rl   ZserverrE   rÍ   rß   r   r   r   r   Ú<module>,   sŠ   
	
      )0
/


