
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
B;ˆWÐ1  ã               @   s„   d dl mZmZmZ d dlmZ d dlZddlmZ ddlm	Z	 ddlm
Z
 dd	l
mZ dd
lmZ ejdƒZddd„ZeeƒZdS )é    )Úabsolute_importÚdivisionÚunicode_literals)Ú	text_typeNé   )Úbaseé   )Ú	_ihatexml)Ú	constants)Ú
namespaces)ÚmoduleFactoryFactoryz{([^}]*)}(.*)Fc          	      sº   ˆ‰ˆj dƒj‰G ‡fdd„dtjƒ‰G ‡fdd„dˆƒ‰ G ‡fdd„dˆƒ‰G ‡fdd	„d	ˆƒ‰G ‡fd
d„dˆƒ‰‡fdd„‰	‡‡fdd„}G ‡ ‡‡‡‡‡‡‡	fdd„dtjƒ}tƒ S )NZasdc                   sÄ   e Zd Zd$‡ fdd„	Zdd„ Zdd„ Zdd	„ ZeeeƒZd
d„ Z	dd„ Z
ee
e	ƒZdd„ Zdd„ ZeeeƒZdd„ Zdd„ ZeeeƒZdd„ Zdd„ Zdd„ Zdd„ Zd%dd„Zd d!„ Zd"d#„ ZdS )&z getETreeBuilder.<locals>.ElementNc                s^   || _ || _ˆ j| j||ƒƒ| _|d kr:td | j f| _n| j| j f| _d | _g | _g | _	d S )NÚhtml)
Ú_nameÚ
_namespaceÚElementÚ_getETreeTagÚ_elementr   Z	nameTupleÚparentÚ_childNodesÚ_flags)ÚselfÚnameÚ	namespace)ÚElementTree© ú/usr/lib/python3.6/etree.pyÚ__init__   s    

z)getETreeBuilder.<locals>.Element.__init__c             S   s   |d kr|}nd||f }|S )Nz{%s}%sr   )r   r   r   Z	etree_tagr   r   r   r   #   s    z-getETreeBuilder.<locals>.Element._getETreeTagc             S   s   || _ | j| j | jƒ| j_d S )N)r   r   r   r   Útag)r   r   r   r   r   Ú_setName*   s    z)getETreeBuilder.<locals>.Element._setNamec             S   s   | j S )N)r   )r   r   r   r   Ú_getName.   s    z)getETreeBuilder.<locals>.Element._getNamec             S   s   || _ | j| j| j ƒ| j_d S )N)r   r   r   r   r   )r   r   r   r   r   Ú_setNamespace3   s    z.getETreeBuilder.<locals>.Element._setNamespacec             S   s   | j S )N)r   )r   r   r   r   Ú_getNamespace7   s    z.getETreeBuilder.<locals>.Element._getNamespacec             S   s   | j jS )N)r   Úattrib)r   r   r   r   Ú_getAttributes<   s    z/getETreeBuilder.<locals>.Element._getAttributesc             S   sp   x"t | jjjƒ ƒD ]}| jj|= qW xF|jƒ D ]:\}}t|tƒrVd|d |d f }n|}| jj||ƒ q.W d S )Nz{%s}%sr   r   )Úlistr   r"   ÚkeysÚitemsÚ
isinstanceÚtupleÚset)r   Ú
attributesÚkeyÚvaluer   r   r   r   Ú_setAttributes?   s    
z/getETreeBuilder.<locals>.Element._setAttributesc             S   s   | j S )N)r   )r   r   r   r   Ú_getChildNodesM   s    z/getETreeBuilder.<locals>.Element._getChildNodesc             S   s.   | j d d …= g | _x|D ]}| j|ƒ qW d S )N)r   r   ZinsertChild)r   r,   Úelementr   r   r   Ú_setChildNodesP   s    
z/getETreeBuilder.<locals>.Element._setChildNodesc             S   s   t | jjpt| jƒƒS )z,Return true if the node has children or text)Úboolr   ÚtextÚlen)r   r   r   r   Ú
hasContentX   s    z+getETreeBuilder.<locals>.Element.hasContentc             S   s$   | j j|ƒ | jj|jƒ | |_d S )N)r   Úappendr   r   )r   Únoder   r   r   ÚappendChild\   s    z,getETreeBuilder.<locals>.Element.appendChildc             S   s,   t | jƒj|jƒ}| jj||jƒ | |_d S )N)r$   r   ÚindexÚinsertr   )r   r6   ZrefNoder8   r   r   r   ÚinsertBeforea   s    z-getETreeBuilder.<locals>.Element.insertBeforec             S   s$   | j j|ƒ | jj|jƒ d |_d S )N)r   Úremover   r   )r   r6   r   r   r   ÚremoveChildf   s    z,getETreeBuilder.<locals>.Element.removeChildc             S   sÞ   t | jƒs,| jjsd| j_| j j|7  _n®|d krb| jd jsLd| jd _| jd  j|7  _nxt| jƒ}|j|jƒ}|dkrº| j|d  js d| j|d  _| j|d   j|7  _n | jjsÊd| j_| j j|7  _d S )NÚ r   r   éÿÿÿÿr>   r>   )r3   r   r2   Útailr$   r8   )r   Údatar:   Zchildrenr8   r   r   r   Ú
insertTextk   s"    

z+getETreeBuilder.<locals>.Element.insertTextc             S   s8   t | ƒ| j| jƒ}x | jjƒ D ]\}}||j|< qW |S )N)Útyper   r   r*   r&   )r   r/   r   r,   r   r   r   Ú	cloneNode‚   s    z*getETreeBuilder.<locals>.Element.cloneNodec             S   sl   |j r"|j d j j| jj7  _n0|jjs2d|j_| jjd k	rR|j j| jj7  _d| j_tjj| |ƒ d S )Nr   r=   r>   )Ú
childNodesr   r?   r2   r   ÚNodeÚreparentChildren)r   Z	newParentr   r   r   rF   ˆ   s    z1getETreeBuilder.<locals>.Element.reparentChildren)N)N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   Úpropertyr   r    r!   r   r#   r-   r*   r.   r0   rD   r4   r7   r:   r<   rA   rC   rF   r   )r   r   r   r      s*   




r   c                   s2   e Zd Z‡ fdd„Zdd„ Zdd„ ZeeeƒZdS )z getETreeBuilder.<locals>.Commentc                s"   ˆ j |ƒ| _d | _g | _g | _d S )N)ÚCommentr   r   r   r   )r   r@   )r   r   r   r   ”   s    z)getETreeBuilder.<locals>.Comment.__init__c             S   s   | j jS )N)r   r2   )r   r   r   r   Ú_getDataœ   s    z)getETreeBuilder.<locals>.Comment._getDatac             S   s   || j _d S )N)r   r2   )r   r,   r   r   r   Ú_setDataŸ   s    z)getETreeBuilder.<locals>.Comment._setDataN)rG   rH   rI   r   rL   rM   rJ   r@   r   )r   r   r   rK   “   s   rK   c                   sL   e Zd Z‡ fdd„Zdd„ Zdd„ ZeeeƒZdd„ Zd	d
„ Z	eee	ƒZ
dS )z%getETreeBuilder.<locals>.DocumentTypec                s$   ˆ j | dƒ || j_|| _|| _d S )Nz
<!DOCTYPE>)r   r   r2   ÚpublicIdÚsystemId)r   r   rN   rO   )r   r   r   r   ¥   s    z.getETreeBuilder.<locals>.DocumentType.__init__c             S   s   | j jddƒS )NrN   r=   )r   Úget)r   r   r   r   Ú_getPublicId«   s    z2getETreeBuilder.<locals>.DocumentType._getPublicIdc             S   s   |d k	r| j jd|ƒ d S )NrN   )r   r)   )r   r,   r   r   r   Ú_setPublicId®   s    z2getETreeBuilder.<locals>.DocumentType._setPublicIdc             S   s   | j jddƒS )NrO   r=   )r   rP   )r   r   r   r   Ú_getSystemId´   s    z2getETreeBuilder.<locals>.DocumentType._getSystemIdc             S   s   |d k	r| j jd|ƒ d S )NrO   )r   r)   )r   r,   r   r   r   Ú_setSystemId·   s    z2getETreeBuilder.<locals>.DocumentType._setSystemIdN)rG   rH   rI   r   rQ   rR   rJ   rN   rS   rT   rO   r   )r   r   r   ÚDocumentType¤   s   
rU   c                   s   e Zd Z‡ fdd„ZdS )z!getETreeBuilder.<locals>.Documentc                s   ˆ j | dƒ d S )NÚDOCUMENT_ROOT)r   )r   )r   r   r   r   ¾   s    z*getETreeBuilder.<locals>.Document.__init__N)rG   rH   rI   r   r   )r   r   r   ÚDocument½   s   rW   c                   s   e Zd Z‡ fdd„ZdS )z)getETreeBuilder.<locals>.DocumentFragmentc                s   ˆ j | dƒ d S )NZDOCUMENT_FRAGMENT)r   )r   )r   r   r   r   Â   s    z2getETreeBuilder.<locals>.DocumentFragment.__init__N)rG   rH   rI   r   r   )r   r   r   ÚDocumentFragmentÁ   s   rX   c                s*   g ‰ d‡‡ ‡fdd„	‰ˆ| dƒ dj ˆ ƒS )Nr   c                s   t | dƒs| jƒ } | jdkrz| jdƒs0| jdƒrd| jdƒp<d}| jdƒpJd}ˆjd| j||f ƒ nˆjd| jf ƒ �nÜ| jdkræˆjd	ƒ | jd k	r´ˆjd
d|d  | jf ƒ | jd k	rÆtdƒ‚t | dƒrât| j	ƒrâtdƒ‚�np| jˆ k�rˆjdd| | jf ƒ �nHt
| jtƒ�s4tdt| jƒ| jf ƒ‚tj| jƒ}|d k�rR| j}n"|jƒ \}}tj| }d||f }ˆjdd| |f ƒ t | dƒ�r2g }xb| j	jƒ D ]T\}}	tj|ƒ}|d k	�ræ|jƒ \}}tj| }d||f }
n|}
|j|
|	fƒ �q¦W x2t|ƒD ]&\}}	ˆjdd|d  ||	f ƒ �qW | j�rVˆjd
d|d  | jf ƒ |d7 }x| D ]}ˆ||ƒ �qdW | j�rœˆjd
d|d  | jf ƒ d S )Nr   z
<!DOCTYPE>rN   rO   r=   z<!DOCTYPE %s "%s" "%s">z<!DOCTYPE %s>rV   z	#documentz|%s"%s"ú r   zDocument node cannot have tailr"   z$Document node cannot have attributesz|%s<!-- %s -->zExpected unicode, got %s, %sz%s %sz|%s<%s>z
|%s%s="%s")ÚhasattrÚgetrootr   rP   r5   r2   r?   Ú	TypeErrorr3   r"   r'   r   ÚAssertionErrorrB   Ú
tag_regexpÚmatchÚgroupsr
   Úprefixesr&   Úsorted)r/   ÚindentrN   rO   Znsmatchr   ÚnsÚprefixr*   r,   Zattr_stringÚchild)ÚElementTreeCommentTypeÚrvÚserializeElementr   r   ri   È   s^    










"
zAgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElementÚ
)r   )Újoin)r/   )rg   )rh   ri   r   ÚtestSerializerÅ   s    7
z'getETreeBuilder.<locals>.testSerializerc                s2   g ‰t jƒ ‰ ‡‡‡ ‡‡fdd„‰ˆ| ƒ djˆƒS )z4Serialize an element and its child nodes to a stringc                s¬  t | ˆ jƒr| jƒ } | jdkr|| jdƒs2| jdƒrf| jdƒp>d}| jdƒpLd}ˆjd| j||f ƒ nˆjd| jf ƒ �n| jdkrâ| jd k	rœˆj| jƒ | jd k	r®tdƒ‚t	| d	ƒrÊt
| jƒrÊtd
ƒ‚xÈ| D ]}ˆ|ƒ qÐW n²| jˆk�rˆjd| jf ƒ n’| j�s$ˆjdˆj| jƒf ƒ n2dj‡fdd„| jjƒ D ƒƒ}ˆjd| j|f ƒ | j�rjˆj| jƒ x| D ]}ˆ|ƒ �qpW ˆjd| jf ƒ | j�r¨ˆj| jƒ d S )Nz
<!DOCTYPE>rN   rO   r=   z<!DOCTYPE %s PUBLIC "%s" "%s">z<!DOCTYPE %s>rV   zDocument node cannot have tailr"   z$Document node cannot have attributesz	<!--%s-->z<%s>rY   c                s"   g | ]\}}d ˆ j |ƒ|f ‘qS )z%s="%s")ÚfromXmlName)Ú.0r   r,   )Úfilterr   r   ú
<listcomp>&  s   zOgetETreeBuilder.<locals>.tostring.<locals>.serializeElement.<locals>.<listcomp>z<%s %s>z</%s>)r'   r   r[   r   rP   r5   r2   r?   r\   rZ   r3   r"   rm   rk   r&   )r/   rN   rO   rf   Úattr)r   rg   ro   rh   ri   r   r   ri     s@    





z;getETreeBuilder.<locals>.tostring.<locals>.serializeElementr=   )r	   ZInfosetFilterrk   )r/   )r   rg   )ro   rh   ri   r   Útostring  s
    -z!getETreeBuilder.<locals>.tostringc                   sD   e Zd Z”Z”Z”Z” Z”Z”Z‡fdd„Z	‡fdd„Z
dd„ ZdS )z$getETreeBuilder.<locals>.TreeBuilderc                s   ˆ |ƒS )Nr   )r   r/   )rl   r   r   rl   A  s    z3getETreeBuilder.<locals>.TreeBuilder.testSerializerc                s<   ˆ r| j jS | jd k	r*| j jjd| j ƒS | j jjdƒS d S )Nz{%s}htmlr   )Zdocumentr   ZdefaultNamespaceÚfind)r   )ÚfullTreer   r   ÚgetDocumentD  s    
z0getETreeBuilder.<locals>.TreeBuilder.getDocumentc             S   s   t jj| ƒjS )N)r   ÚTreeBuilderÚgetFragmentr   )r   r   r   r   rw   N  s    z0getETreeBuilder.<locals>.TreeBuilder.getFragmentN)rG   rH   rI   ZdocumentClassZdoctypeClassZelementClassZcommentClassZfragmentClassÚimplementationrl   ru   rw   r   )rK   rW   rX   rU   r   ÚElementTreeImplementationrt   rl   r   r   rv   9  s   
rv   )rK   r   r   rE   rv   Úlocals)ry   rt   rr   rv   r   )
rK   rW   rX   rU   r   r   rg   ry   rt   rl   r   ÚgetETreeBuilder   s    ~>6$r{   )F)Z
__future__r   r   r   Zsixr   Úrer=   r   r	   r
   r   Z_utilsr   Úcompiler^   r{   ZgetETreeModuler   r   r   r   Ú<module>   s   

  E