§
    ¸)ýf,
 ã                   óâ  — d Z ddlZddlZddlmZmZmZmZ ddlT ddl	m
Z
mZ ej        j        j        ej        j        j        fZ G d„ dej        j        ¦  «        Z eedd	¬
¦  «          eedd¬
¦  «          eedd¬
¦  «         d„ Zd„ Zd„ Zd„ Zd„ Z G d„ de¦  «        Z G d„ de¦  «        Z eedd¬
¦  «          eedd¬
¦  «          eedd¬
¦  «          G d„ de¦  «        Z eedd ¬
¦  «         eZ G d!„ d"e¦  «        Z edd¦  «        Z G d#„ d$e¦  «        Z eed%d&¬
¦  «          eedd'¬
¦  «         d(„ Z G d)„ d*¦  «        Z  G d+„ d,e e¦  «        Z! G d-„ d.e e¦  «        Z" ee"dd/¬
¦  «          G d0„ d1e"¦  «        Z# ee#d2d3¬
¦  «          ee#d4d5¬
¦  «         d6„ Z$d7„ Z% G d8„ d9e"¦  «        Z& G d:„ d;e#¦  «        Z' G d<„ d=e¦  «        Z( ee(dd>¬
¦  «          G d?„ d@¦  «        Z) G dA„ dBe)e e¦  «        Z* G dC„ dDe)e¦  «        Z+ G dE„ dFe)e e¦  «        Z, G dG„ dHe
¦  «        Z- G dI„ dJe¦  «        Z.dK„ Z/ G dL„ dMee¦  «        Z0 ee0dNdO¬
¦  «         dP„ Z1dQ„ Z2dR„ Z3dVdS„Z4dWdT„Z5dWdU„Z6dS )Xac  Simple implementation of the Level 1 DOM.

Namespaces and other minor Level 2 features are also supported.

parse("foo.xml")

parseString("<foo><bar/></foo>")

Todo:
=====
 * convenience methods for getting elements and text.
 * more testing
 * bring some of the writer and linearizer code into conformance with this
        interface
 * SAX 2 namespaces
é    N)ÚEMPTY_NAMESPACEÚEMPTY_PREFIXÚXMLNS_NAMESPACEÚdomreg)Ú*)ÚDOMImplementationLSÚ
DocumentLSc                   ó¸   — e Zd ZdZdZdZdZdZeZ	d„ Z
dd„Z	 	 dd„Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS )ÚNodeNc                 ó   — dS )NT© ©Úselfs    ú[/home/blender/git/blender-v430/install_release/4.3/python/lib/python3.11/xml/dom/minidom.pyÚ__bool__zNode.__bool__+   ó   € Øˆtó    c                 ó2   — |                       dd||¦  «        S ©NÚ )Útoprettyxml)r   ÚencodingÚ
standalones      r   Útoxmlz
Node.toxml.   s   € Ø×Ò  B¨°*Ñ=Ô=Ð=r   ú	ú
c                 óˆ  — |€t          j        ¦   «         }n)t          j        t          j        ¦   «         |dd¬¦  «        }| j        t
          j        k    r|                      |d||||¦  «         n|                      |d||¦  «         |€|                     ¦   «         S | 	                    ¦   «                              ¦   «         S )NÚxmlcharrefreplacer   )r   ÚerrorsÚnewliner   )
ÚioÚStringIOÚTextIOWrapperÚBytesIOÚnodeTyper   ÚDOCUMENT_NODEÚwritexmlÚgetvalueÚdetach)r   ÚindentÚnewlr   r   Úwriters         r   r   zNode.toprettyxml1   s¶   € àÐÝ”[‘]”]ˆFˆFåÔ%¥b¤j¡l¤lØ/7Ø-@Ø.2ð4ñ 4ô 4ˆFð Œ=�DÔ.Ò.Ð.à�MŠM˜& " f¨d°H¸jÑIÔIÐIÐIà�MŠM˜& " f¨dÑ3Ô3Ð3ØÐØ—?’?Ñ$Ô$Ð$à—=’=‘?”?×+Ò+Ñ-Ô-Ð-r   c                 ó*   — t          | j        ¦  «        S ©N)ÚboolÚ
childNodesr   s    r   ÚhasChildNodeszNode.hasChildNodesD   s   € Ý�D”OÑ$Ô$Ð$r   c                 ó   — | j         S r.   ©r0   r   s    r   Ú_get_childNodeszNode._get_childNodesG   ó
   € ØŒÐr   c                 ó.   — | j         r| j         d         S d S ©Nr   r3   r   s    r   Ú_get_firstChildzNode._get_firstChildJ   s#   € ØŒ?ð 	&Ø”? 1Ô%Ð%ð	&ð 	&r   c                 ó.   — | j         r| j         d         S d S ©Néÿÿÿÿr3   r   s    r   Ú_get_lastChildzNode._get_lastChildN   s#   € ØŒ?ð 	'Ø”? 2Ô&Ð&ð	'ð 	'r   c                 ó  — |j         | j        k    r/t          |j        ¦  «        D ]}|                      ||¦  «         Œ|S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j
        �|j
                             |¦  «         |€|                      |¦  «         n½	 | j                             |¦  «        }n,# t          $ r t          j                             ¦   «         ‚w xY w|j         t           v rt#          | ¦  «         | j                             ||¦  «         ||_        ||_        |r| j        |dz
           }||_        ||_        nd |_        | |_
        |S )Nú cannot be child of é   )r%   ÚDOCUMENT_FRAGMENT_NODEÚtupler0   ÚinsertBeforeÚ_child_node_typesÚxmlÚdomÚHierarchyRequestErrÚreprÚ
parentNodeÚremoveChildÚappendChildÚindexÚ
ValueErrorÚNotFoundErrÚ_nodeTypes_with_childrenÚ_clear_id_cacheÚinsertÚnextSiblingÚpreviousSibling)r   ÚnewChildÚrefChildÚcrK   Únodes         r   rB   zNode.insertBeforeR   s   € ØÔ Ô ;Ò;Ð;Ý˜8Ô.Ñ/Ô/ð /ð /�Ø×!Ò! ! XÑ.Ô.Ð.Ð.àˆOØÔ DÔ$:Ð:Ð:Ý”'×-Ò-Ý.2°8©n¬n¨n¨n½dÀ4¹j¼j¸jÐIñKô Kð KàÔÐ*ØÔ×+Ò+¨HÑ5Ô5Ð5ØÐØ×Ò˜XÑ&Ô&Ð&Ð&ð,Øœ×-Ò-¨hÑ7Ô7��øÝð ,ð ,ð ,Ý”g×)Ò)Ñ+Ô+Ð+ð,øøøàÔ Õ$<Ð<Ð<Ý Ñ%Ô%Ð%ØŒO×"Ò" 5¨(Ñ3Ô3Ð3Ø#+ˆHÔ Ø'/ˆHÔ$Øð 0Ø” u¨Q¡wÔ/�Ø#+�Ô Ø+/�Ô(Ð(à+/�Ô(Ø"&ˆHÔØˆs   ÃC! Ã!)D
c                 óÄ  — |j         | j        k    r.t          |j        ¦  «        D ]}|                      |¦  «         Œ|S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j         t          v rt          | ¦  «         |j        �|j                             |¦  «         t          | |¦  «         d |_        |S ©Nr>   )r%   r@   rA   r0   rJ   rC   rD   rE   rF   rG   rN   rO   rH   rI   Ú_append_childrQ   )r   rV   rU   s      r   rJ   zNode.appendChildr   så   € ØŒ=˜DÔ7Ò7Ð7Ý˜4œ?Ñ+Ô+ð $ð $�Ø× Ò  Ñ#Ô#Ð#Ð#àˆKØŒ= Ô 6Ð6Ð6Ý”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒ]Õ6Ð6Ð6Ý˜DÑ!Ô!Ð!ØŒ?Ð&ØŒO×'Ò'¨Ñ-Ô-Ð-Ý�d˜DÑ!Ô!Ð!ØˆÔØˆr   c                 ó  — |j         | j        k    r2|j        }|                      |¦  «         |                      ||¦  «        S |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚||u rd S |j
        �|j
                             |¦  «         	 | j                             |¦  «        }n,# t          $ r t          j                             ¦   «         ‚w xY w|| j        |<   | |_
        d |_
        |j         t          v s|j         t          v rt!          | ¦  «         |j        |_        |j        |_        d |_        d |_        |j        r||j        _        |j        r||j        _        |S rX   )r%   r@   rQ   rI   rB   rC   rD   rE   rF   rG   rH   r0   rK   rL   rM   rN   rO   rR   )r   rS   ÚoldChildrT   rK   s        r   ÚreplaceChildzNode.replaceChildƒ   s§  € ØÔ Ô ;Ò;Ð;ØÔ+ˆHØ×Ò˜XÑ&Ô&Ð&Ø×$Ò$ X¨xÑ8Ô8Ð8ØÔ DÔ$:Ð:Ð:Ý”'×-Ò-Ý.2°8©n¬n¨n¨n½dÀ4¹j¼j¸jÐIñKô Kð Kà�xÐÐØˆFØÔÐ*ØÔ×+Ò+¨HÑ5Ô5Ð5ð	(Ø”O×)Ò)¨(Ñ3Ô3ˆEˆEøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà!)ˆŒ˜ÑØ"ˆÔØ"ˆÔØÔÕ!9Ð9Ð9ØÔ Õ$<Ð<Ð<Ý˜DÑ!Ô!Ð!Ø'Ô3ˆÔØ#+Ô#;ˆÔ Ø#ˆÔØ#'ˆÔ ØÔ#ð 	<Ø3;ˆHÔ$Ô0ØÔð 	<Ø3;ˆHÔ Ô0Øˆs   Â7C Ã)C;c                 óZ  — 	 | j                              |¦  «         n,# t          $ r t          j                             ¦   «         ‚w xY w|j        �|j        |j        _        |j        �|j        |j        _        d x|_        |_        |j        t          v rt          | ¦  «         d |_        |S r.   )r0   ÚremoverL   rD   rE   rM   rQ   rR   r%   rN   rO   rH   ©r   r[   s     r   rI   zNode.removeChild£   s·   € ð	(ØŒO×"Ò" 8Ñ,Ô,Ð,Ð,øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøàÔÐ+Ø3;Ô3KˆHÔ Ô0ØÔ#Ð/Ø3;Ô3GˆHÔ$Ô0Ø:>Ð>ˆÔ˜xÔ7ØÔÕ 8Ð8Ð8Ý˜DÑ!Ô!Ð!à"ˆÔØˆó	   ‚ �)Ac                 ól  — g }| j         D �]}|j        t          j        k    rÆ|j        sA|r|j        |d         _        |j        r|j        |j        _        |                     ¦   «          Œ`|rf|d         j        |j        k    rP|d         }|j        |j        z   |_        |j        |_        |j        r||j        _        |                     ¦   «          ŒÈ|                     |¦  «         ŒÞ|                     |¦  «         |j        t          j	        k    r| 
                    ¦   «          �Œ|| j         d d …<   d S r:   )r0   r%   r   Ú	TEXT_NODEÚdatarQ   rR   ÚunlinkÚappendÚELEMENT_NODEÚ	normalize)r   ÚLÚchildrV   s       r   rg   zNode.normalize³   s,  € ØˆØ”_ð 	&ñ 	&ˆEØŒ~¥¤Ò/Ð/Ø”zð $àð >Ø,1Ô,=˜˜"œÔ)ØÔ(ð RØ<AÔ<Q˜Ô)Ô9Ø—L’L‘N”N�N�NØð 	$˜1˜Rœ5œ>¨U¬^Ò;Ð;à˜Rœ5�DØ $¤	¨E¬JÑ 6�D”IØ',Ô'8�DÔ$ØÔ(ð AØ<@˜Ô)Ô9Ø—L’L‘N”N�N�Nà—H’H˜U‘O”O�O�Oà—’˜‘”�Ø”>¥TÔ%6Ò6Ð6Ø—O’OÑ%Ô%Ð%ùØˆŒ˜˜˜ÑÐÐr   c                 ó2   — t          | || j        p| ¦  «        S r.   )Ú_clone_nodeÚownerDocument)r   Údeeps     r   Ú	cloneNodezNode.cloneNodeÎ   s   € Ý˜4  tÔ'9Ð'A¸TÑBÔBÐBr   c                 óB   — | j         j                             ||¦  «        S r.   )rl   ÚimplementationÚ
hasFeature©r   ÚfeatureÚversions      r   ÚisSupportedzNode.isSupportedÑ   s   € ØÔ!Ô0×;Ò;¸GÀWÑMÔMÐMr   c                 ó   — d S r.   r   r   s    r   Ú_get_localNamezNode._get_localNameÔ   s   € àˆtr   c                 ó
   — | |u S r.   r   ©r   Úothers     r   Ú
isSameNodezNode.isSameNodeÚ   s   € Ø�uˆ}Ðr   c                 ó6   — |                       |d ¦  «        r| S d S r.   )ru   ©r   rs   s     r   ÚgetInterfacezNode.getInterfaceÝ   s$   € Ø×Ò˜G TÑ*Ô*ð 	ØˆKà�4r   c                 óZ   — 	 | j         |         d         S # t          t          f$ r Y d S w xY wr7   )Ú
_user_dataÚAttributeErrorÚKeyError©r   Úkeys     r   ÚgetUserDatazNode.getUserDataç   s@   € ð	Ø”? 3Ô'¨Ô*Ð*øÝ¥Ð)ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ •*©*c                 ó”   — d }	 | j         }n# t          $ r i }|| _         Y nw xY w||v r||         d         }|€d }|�||= n||f||<   |S r7   )r€   r�   )r   r„   rc   ÚhandlerÚoldÚds         r   ÚsetUserDatazNode.setUserDataí   s�   € Øˆð	 Ø”ˆAˆAøÝð 	 ð 	 ð 	 ØˆAØˆDŒOˆOˆOð	 øøøð �!ˆ8ˆ8Ø�C”&˜”)ˆCØˆ<àˆGØˆØ�c�Føà˜G�_ˆAˆc‰FØˆ
s   „ Œ"¡"c                 ó¾   — t          | d¦  «        rJt          | j                             ¦   «         ¦  «        D ]%\  }\  }}|�|                     |||||¦  «         Œ$d S d S )Nr€   )ÚhasattrÚlistr€   ÚitemsÚhandle)r   Ú	operationÚsrcÚdstr„   rc   r‡   s          r   Ú_call_user_data_handlerzNode._call_user_data_handlerÿ   s~   € Ý�4˜Ñ&Ô&ð 	CÝ(,¨T¬_×-BÒ-BÑ-DÔ-DÑ(EÔ(Eð Cð CÑ$�‘_�d˜GØÐ&Ø—N’N 9¨c°4¸¸cÑBÔBÐBøð	Cð 	CðCð Cr   c                 ó®   — d x| _         | _        | j        r1| j        D ]}|                     ¦   «          Œt	          ¦   «         | _        d | _        d | _        d S r.   )rH   rl   r0   rd   ÚNodeListrR   rQ   )r   ri   s     r   rd   zNode.unlink  s\   € Ø/3Ð3ˆŒ˜$Ô,ØŒ?ð 	)Øœð ð �Ø—’‘”��Ý&™jœjˆDŒOØ#ˆÔØˆÔÐÐr   c                 ó   — | S r.   r   r   s    r   Ú	__enter__zNode.__enter__  s   € Øˆr   c                 ó.   — |                       ¦   «          d S r.   )rd   )r   ÚetÚevÚtbs       r   Ú__exit__zNode.__exit__  s   € Ø�Š‰Œˆˆˆr   ©NN)r   r   NN)!Ú__name__Ú
__module__Ú__qualname__ÚnamespaceURIrH   rl   rQ   rR   r   Úprefixr   r   r   r1   r4   r8   r<   rB   rJ   r\   rI   rg   rn   ru   rw   r{   r~   r…   rŠ   r“   rd   r—   rœ   r   r   r   r   r   "   s©  € € € € € Ø€LØ€JØ€MØ€KØ€Oà€Fðð ð ð>ð >ð >ð >ð <@Ø#ð.ð .ð .ð .ð&%ð %ð %ðð ð ð&ð &ð &ð'ð 'ð 'ðð ð ð@ð ð ð"ð ð ð@ð ð ð ð ð ð6Cð Cð CðNð Nð Nðð ð ðð ð ðð ð ðð ð ðð ð ð$Cð Cð Cð ð  ð  ðð ð ðð ð ð ð r   r   Ú
firstChildzFirst child node, or None.)ÚdocÚ	lastChildzLast child node, or None.Ú	localNamez"Namespace-local name of this node.c                 ó|   — | j         }|r|d         }||_        ||_        |                     |¦  «         | |_        d S r:   )r0   rR   rQ   re   rH   )r   rV   r0   Úlasts       r   rY   rY     sI   € à”€JØð  Ø˜"Œ~ˆØ#ˆÔØˆÔØ×Ò�dÑÔÐØ€D„O€O€Or   c                 óJ   — | � | j         t          j        k    rdS | j        } | ­ dS ©NTF)r%   r   r&   rH   ©rV   s    r   Ú_in_documentr¬   '  s3   € à
Ð
ØŒ=�DÔ.Ò.Ð.Ø�4ØŒˆð Ð
ð ˆ5r   c                 óÜ   — |ri|                      dd¦  «                              dd¦  «                              dd¦  «                              dd¦  «        }|                      |¦  «         d	S d	S )
zWrites datachars to writer.ú&z&amp;ú<z&lt;ú"z&quot;ú>z&gt;N)ÚreplaceÚwrite)r,   rc   s     r   Ú_write_datar´   /  so   € àð Ø�|Š|˜C Ñ)Ô)×1Ò1°#°vÑ>Ô>ß’G˜D (Ñ+Ô+¯GªG°C¸Ñ,@Ô,@ð 	à�Š�TÑÔÐÐÐðð r   c                 ó²   — | j         D ]N}|j        t          j        k    r&|dk    s|j        |k    r|                     |¦  «         t          |||¦  «         ŒO|S ©Nr   )r0   r%   r   rf   ÚtagNamere   Ú_get_elements_by_tagName_helper)ÚparentÚnameÚrcrV   s       r   r¸   r¸   6  sb   € ØÔ!ð 8ð 8ˆØŒ=�DÔ-Ò-Ð-Ø�SŠ[ˆ[˜DœL¨DÒ0Ð0Ø�IŠI�d‰OŒOˆOÝ'¨¨d°BÑ7Ô7Ð7Ð7Ø€Ir   c                 óÖ   — | j         D ]`}|j        t          j        k    rI|dk    s|j        |k    r&|dk    s|j        |k    r|                     |¦  «         t          ||||¦  «         Œa|S r¶   )r0   r%   r   rf   r¦   r¡   re   Ú"_get_elements_by_tagName_ns_helper)r¹   ÚnsURIr¦   r»   rV   s        r   r½   r½   >  s|   € ØÔ!ð Kð KˆØŒ=�DÔ-Ò-Ð-Ø˜cÒ!Ð! T¤^°yÒ%@Ð%@Ø˜#’� Ô!2°eÒ!;Ð!;Ø—	’	˜$‘”�Ý.¨t°U¸IÀrÑJÔJÐJøØ€Ir   c                   óŠ   — e Zd Zej        ZdZdZdZdZ	ej
        ej        ej        ej        ej        ej        ej        fZd„ ZdS )ÚDocumentFragmentz#document-fragmentNc                 ó,   — t          ¦   «         | _        d S r.   )r•   r0   r   s    r   Ú__init__zDocumentFragment.__init__U  s   € Ý"™*œ*ˆŒˆˆr   )rž   rŸ   r    r   r@   r%   ÚnodeNameÚ	nodeValueÚ
attributesrH   rf   rb   ÚCDATA_SECTION_NODEÚENTITY_REFERENCE_NODEÚPROCESSING_INSTRUCTION_NODEÚCOMMENT_NODEÚNOTATION_NODErC   rÂ   r   r   r   rÀ   rÀ   G  sp   € € € € € ØÔ*€HØ#€HØ€IØ€JØ€JØÔ*ØœØÔ0ØÔ3ØÔ9ØÔ*ØÔ+ð-Ðð%ð %ð %ð %ð %r   rÀ   c                   óè   — e Zd ZdZej        ZdZdZdZ	ej
        ej        fZeddfd„Zd„ Zd„ Zd„ Zd„ Z eee¦  «        xZZd	„ Zd
„ Z eee¦  «        xZZd„ Zd„ Z eee¦  «        Zd„ Zd„ Zd„ ZdS )ÚAttr)Ú_nameÚ_valuer¡   Ú_prefixr0   Ú
_localNamerl   ÚownerElementNFc                 óÂ   — d | _         || _        || _        || _        |�|| _        t          ¦   «         | _        | j                             t          ¦   «         ¦  «         d S r.   )	rÑ   rÍ   r¡   rÏ   rÐ   r•   r0   re   ÚText)r   ÚqNamer¡   r¦   r¢   s        r   rÂ   zAttr.__init__c  sZ   € à ˆÔØˆŒ
Ø(ˆÔØˆŒØÐ Ø'ˆDŒOÝ"™*œ*ˆŒð 	Œ×Ò�t™vœvÑ&Ô&Ð&Ð&Ð&r   c                 ót   — 	 | j         S # t          $ r$ | j                             dd¦  «        d         cY S w xY w©Nú:r?   r;   )rÐ   r�   rÃ   Úsplitr   s    r   rw   zAttr._get_localNamer  sM   € ð	3Ø”?Ð"øÝð 	3ð 	3ð 	3Ø”=×&Ò& s¨AÑ.Ô.¨rÔ2Ð2Ð2Ð2ð	3øøøó   ‚	 ‰+7¶7c                 ó   — | j         S r.   )Ú	specifiedr   s    r   Ú_get_specifiedzAttr._get_specifiedx  ó
   € ØŒ~Ðr   c                 ó   — | j         S r.   )rÍ   r   s    r   Ú	_get_namezAttr._get_name{  ó
   € ØŒzÐr   c                 óN   — || _         | j        �t          | j        ¦  «         d S d S r.   )rÍ   rÑ   rO   ©r   Úvalues     r   Ú	_set_namezAttr._set_name~  s1   € ØˆŒ
ØÔÐ(Ý˜DÔ-Ñ.Ô.Ð.Ð.Ð.ð )Ð(r   c                 ó   — | j         S r.   )rÎ   r   s    r   Ú
_get_valuezAttr._get_value…  ó
   € ØŒ{Ðr   c                 ó’   — || _         || j        d         _        | j        �t	          | j        ¦  «         || j        d         _        d S r7   )rÎ   r0   rc   rÑ   rO   râ   s     r   Ú
_set_valuezAttr._set_valueˆ  sG   € ØˆŒØ"'ˆŒ˜ÔÔØÔÐ(Ý˜DÔ-Ñ.Ô.Ð.Ø"'ˆŒ˜ÔÔÐÐr   c                 ó   — | j         S r.   )rÏ   r   s    r   Ú_get_prefixzAttr._get_prefix‘  ó
   € ØŒ|Ðr   c                 óö   — | j         }|dk    r,|r*|t          k    rt          j                             d¦  «        ‚|| _        |€| j        }n|›d| j        ›�}| j        rt          | j        ¦  «         || _	        d S )NÚxmlnsz5illegal use of 'xmlns' prefix for the wrong namespacer×   )
r¡   r   rD   rE   ÚNamespaceErrrÏ   r¦   rÑ   rO   rº   )r   r¢   ÚnsuriÚnewNames       r   Ú_set_prefixzAttr._set_prefix”  s–   € ØÔ!ˆØ�WÒÐØð M˜¥/Ò1Ð1Ý”g×*Ò*ØKñMô Mð MàˆŒØˆ>Ø”nˆGˆGà!'  ¨¬¨Ð8ˆGØÔð 	/Ý˜DÔ-Ñ.Ô.Ð.ØˆŒ	ˆ	ˆ	r   c                 ó  — | j         }|�T|j        | j        = |j        | j        | j        f= | j        r,d| _        |xj        dz  c_        | j        xj	        dz  c_	        | j
        D ]}|                     ¦   «          Œ| j
        d d …= d S )NFr?   )rÑ   Ú_attrsrÃ   Ú_attrsNSr¡   r¦   Ú_is_idÚ_magic_id_nodesrl   Ú_magic_id_countr0   rd   )r   Úelemri   s      r   rd   zAttr.unlink¥  s¢   € ð
 Ô ˆØÐØ”˜DœMÐ*Ø”˜tÔ0°$´.ÐAÐBØŒ{ð 8Ø#�”ØÐ$Ô$¨Ñ)Ð$Ô$ØÔ"Ð2Ô2°aÑ7Ð2Ô2Ø”_ð 	ð 	ˆEØ�LŠL‰NŒNˆNˆNØŒO˜A˜A˜AÐÐÐr   c                 óð   — | j         rdS | j        }| j        }|�|€dS |                     |¦  «        }|€dS | j        r |                     | j        | j        ¦  «        S |                     | j        ¦  «        S rª   )	rö   rl   rÑ   Ú_get_elem_infor¡   ÚisIdNSr¦   ÚisIdrÃ   ©r   r¤   rù   Úinfos       r   Ú	_get_isIdzAttr._get_isId¶  s„   € ØŒ;ð 	Ø�4ØÔ ˆØÔ ˆØˆ;˜$˜,Ø�5à×!Ò! $Ñ'Ô'ˆØˆ<Ø�5ØÔð 	,Ø—;’;˜tÔ0°$´.ÑAÔAÐAà—9’9˜Tœ]Ñ+Ô+Ð+r   c                 óò   — | j         }| j        }|�|€t          S |                     |¦  «        }|€t          S | j        r |                     | j        | j        ¦  «        S |                     | j        ¦  «        S r.   )	rl   rÑ   Ú_no_typerû   r¡   ÚgetAttributeTypeNSr¦   ÚgetAttributeTyperÃ   rþ   s       r   Ú_get_schemaTypezAttr._get_schemaTypeÆ  sy   € ØÔ ˆØÔ ˆØˆ;˜$˜,ÝˆOà×!Ò! $Ñ'Ô'ˆØˆ<ÝˆOØÔð 	8Ø×*Ò*¨4Ô+<¸d¼nÑMÔMÐMà×(Ò(¨¬Ñ7Ô7Ð7r   ) rž   rŸ   r    Ú	__slots__r   ÚATTRIBUTE_NODEr%   rÅ   rÛ   rö   rb   rÇ   rC   r   rÂ   rw   rÜ   rß   rä   ÚpropertyrÃ   rº   ræ   ré   rÄ   rã   rë   rò   r¢   rd   r   r  r   r   r   rÌ   rÌ   Y  sG  € € € € € ðW€IàÔ"€HØ€JØ€IØ€Fàœ¨Ô)CÐDÐà+:ÀdØð'ð 'ð 'ð 'ð3ð 3ð 3ðð ð ðð ð ð/ð /ð /ð
 �h˜y¨)Ñ4Ô4Ð4€Hˆtðð ð ð(ð (ð (ð !˜ ¨ZÑ8Ô8Ð8€I�ðð ð ðð ð ð ˆX�k ;Ñ/Ô/€Fðð ð ð",ð ,ð ,ð 8ð 8ð 8ð 8ð 8r   rÌ   rý   z True if this attribute is an ID.z'Namespace-local name of this attribute.Ú
schemaTypezSchema type for this attribute.c                   ó¾   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zdd„ZeZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z dS ) ÚNamedNodeMapa  The attribute list is a transient interface to the underlying
    dictionaries.  Mutations here will change the underlying element's
    dictionary.

    Ordering is imposed artificially and does not reflect the order of
    attributes as found in an input document.
    ©rô   rõ   Ú_ownerElementc                 ó0   — || _         || _        || _        d S r.   r  )r   ÚattrsÚattrsNSrÑ   s       r   rÂ   zNamedNodeMap.__init__ä  s   € ØˆŒØˆŒØ)ˆÔÐÐr   c                 ó*   — t          | j        ¦  «        S r.   )Úlenrô   r   s    r   Ú_get_lengthzNamedNodeMap._get_lengthé  s   € Ý�4”;ÑÔÐr   c                 óŠ   — 	 | t          | j                             ¦   «         ¦  «        |                  S # t          $ r Y d S w xY wr.   )r�   rô   ÚkeysÚ
IndexError©r   rK   s     r   ÚitemzNamedNodeMap.itemì  sO   € ð	Ø�˜Tœ[×-Ò-Ñ/Ô/Ñ0Ô0°Ô7Ô8Ð8øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚14 ´
AÁAc                 ó„   — g }| j                              ¦   «         D ]#}|                     |j        |j        f¦  «         Œ$|S r.   )rô   Úvaluesre   rÃ   rã   ©r   rh   rV   s      r   rŽ   zNamedNodeMap.itemsò  sG   € ØˆØ”K×&Ò&Ñ(Ô(ð 	2ð 	2ˆDØ�HŠH�d”m T¤ZÐ0Ñ1Ô1Ð1Ð1Øˆr   c                 ó’   — g }| j                              ¦   «         D ]*}|                     |j        |j        f|j        f¦  «         Œ+|S r.   )rô   r  re   r¡   r¦   rã   r  s      r   ÚitemsNSzNamedNodeMap.itemsNSø  sQ   € ØˆØ”K×&Ò&Ñ(Ô(ð 	Hð 	HˆDØ�HŠH�tÔ(¨$¬.Ð9¸4¼:ÐFÑGÔGÐGÐGØˆr   c                 óP   — t          |t          ¦  «        r	|| j        v S || j        v S r.   )Ú
isinstanceÚstrrô   rõ   rƒ   s     r   Ú__contains__zNamedNodeMap.__contains__þ  s.   € Ý�c�3ÑÔð 	(Ø˜$œ+Ð%Ð%à˜$œ-Ð'Ð'r   c                 ó4   — | j                              ¦   «         S r.   )rô   r  r   s    r   r  zNamedNodeMap.keys  s   € ØŒ{×ÒÑ!Ô!Ð!r   c                 ó4   — | j                              ¦   «         S r.   )rõ   r  r   s    r   ÚkeysNSzNamedNodeMap.keysNS  s   € ØŒ}×!Ò!Ñ#Ô#Ð#r   c                 ó4   — | j                              ¦   «         S r.   )rô   r  r   s    r   r  zNamedNodeMap.values
  s   € ØŒ{×!Ò!Ñ#Ô#Ð#r   Nc                 ó8   — | j                              ||¦  «        S r.   ©rô   Úget)r   rº   rã   s      r   r(  zNamedNodeMap.get  s   € ØŒ{�Š˜t UÑ+Ô+Ð+r   c                 ó¸   — | j         t          |dd ¦  «        u rdS t          | ¦  «        t          |¦  «        k    t          | ¦  «        t          |¦  «        k     z
  S )Nrô   r   )rô   ÚgetattrÚidry   s     r   Ú_cmpzNamedNodeMap._cmp  sM   € ØŒ;�' %¨°4Ñ8Ô8Ð8Ð8Ø�1å�t‘H”H�r %™yœyÒ(­R°©X¬X½¸5¹	¼	Ò-AÑBÐBr   c                 ó4   — |                       |¦  «        dk    S r7   ©r,  ry   s     r   Ú__eq__zNamedNodeMap.__eq__  ó   € Ø�yŠy˜ÑÔ 1Ò$Ð$r   c                 ó4   — |                       |¦  «        dk    S r7   r.  ry   s     r   Ú__ge__zNamedNodeMap.__ge__  r0  r   c                 ó4   — |                       |¦  «        dk    S r7   r.  ry   s     r   Ú__gt__zNamedNodeMap.__gt__  ó   € Ø�yŠy˜ÑÔ !Ò#Ð#r   c                 ó4   — |                       |¦  «        dk    S r7   r.  ry   s     r   Ú__le__zNamedNodeMap.__le__!  r0  r   c                 ó4   — |                       |¦  «        dk     S r7   r.  ry   s     r   Ú__lt__zNamedNodeMap.__lt__$  r5  r   c                 ó`   — t          |t          ¦  «        r| j        |         S | j        |         S r.   )r  rA   rõ   rô   )r   Úattname_or_tuples     r   Ú__getitem__zNamedNodeMap.__getitem__'  s1   € ÝÐ&­Ñ.Ô.ð 	1Ø”=Ð!1Ô2Ð2à”;Ð/Ô0Ð0r   c                 ó`  — t          |t          ¦  «        r]	 | j        |         }nE# t          $ r8 t	          |¦  «        }| j        j        |_        |                      |¦  «         Y nw xY w||_        d S t          |t          ¦  «        st          d¦  «        ‚|}|                      |¦  «         d S )Nz%value must be a string or Attr object)
r  r   rô   r‚   rÌ   r  rl   ÚsetNamedItemrã   Ú	TypeError)r   Úattnamerã   rV   s       r   Ú__setitem__zNamedNodeMap.__setitem__.  sÃ   € Ý�e�SÑ!Ô!ð 	$ð(Ø”{ 7Ô+��øÝð (ð (ð (Ý˜G‘}”}�Ø%)Ô%7Ô%E�Ô"Ø×!Ò! $Ñ'Ô'Ð'Ð'Ð'ð(øøøð ˆDŒJˆJˆJå˜e¥TÑ*Ô*ð IÝÐ GÑHÔHÐHØˆDØ×Ò˜dÑ#Ô#Ð#Ð#Ð#s   —% ¥?A'Á&A'c                 ó@   — 	 | j         |         S # t          $ r Y d S w xY wr.   )rô   r‚   ©r   rº   s     r   ÚgetNamedItemzNamedNodeMap.getNamedItem=  s6   € ð	Ø”;˜tÔ$Ð$øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ �
œc                 óD   — 	 | j         ||f         S # t          $ r Y d S w xY wr.   )rõ   r‚   ©r   r¡   r¦   s      r   ÚgetNamedItemNSzNamedNodeMap.getNamedItemNSC  s;   € ð	Ø”= ,°	Ð!:Ô;Ð;øÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ ‘
žc                 ó  — |                       |¦  «        }|�Nt          | j        ¦  «         | j        |j        = | j        |j        |j        f= t          |d¦  «        rd |_	        |S t          j                             ¦   «         ‚©NrÑ   )rD  rO   r  rô   rÃ   rõ   r¡   r¦   rŒ   rÑ   rD   rE   rM   ©r   rº   Úns      r   ÚremoveNamedItemzNamedNodeMap.removeNamedItemI  s|   € Ø×Ò˜dÑ#Ô#ˆØˆ=Ý˜DÔ.Ñ/Ô/Ð/Ø”˜AœJÐ'Ø”˜qœ~¨q¬{Ð;Ð<Ý�q˜.Ñ)Ô)ð &Ø!%�”ØˆHå”'×%Ò%Ñ'Ô'Ð'r   c                 ó
  — |                       ||¦  «        }|�Nt          | j        ¦  «         | j        |j        |j        f= | j        |j        = t          |d¦  «        rd |_	        |S t          j                             ¦   «         ‚rI  )rG  rO   r  rõ   r¡   r¦   rô   rÃ   rŒ   rÑ   rD   rE   rM   ©r   r¡   r¦   rK  s       r   ÚremoveNamedItemNSzNamedNodeMap.removeNamedItemNSU  s~   € Ø×Ò ¨iÑ8Ô8ˆØˆ=Ý˜DÔ.Ñ/Ô/Ð/Ø”˜qœ~¨q¬{Ð;Ð<Ø”˜AœJÐ'Ý�q˜.Ñ)Ô)ð &Ø!%�”ØˆHå”'×%Ò%Ñ'Ô'Ð'r   c                 ó   — t          |t          ¦  «        s>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚| j                             |j        ¦  «        }|r| 	                    ¦   «          || j        |j        <   || j
        |j        |j        f<   | j        |_        t          |j        ¦  «         |S rX   )r  rÌ   rD   rE   rF   rG   rô   r(  rº   rd   rõ   r¡   r¦   r  rÑ   rO   )r   rV   rˆ   s      r   r>  zNamedNodeMap.setNamedItema  s»   € Ý˜$¥Ñ%Ô%ð 	GÝ”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒk�oŠo˜dœiÑ(Ô(ˆØð 	Ø�JŠJ‰LŒLˆLØ!%ˆŒ�D”IÑØ=AˆŒ�tÔ(¨$¬.Ð9Ñ:Ø Ô.ˆÔÝ˜Ô)Ñ*Ô*Ð*Øˆ
r   c                 ó,   — |                       |¦  «        S r.   )r>  ©r   rV   s     r   ÚsetNamedItemNSzNamedNodeMap.setNamedItemNSn  s   € Ø× Ò  Ñ&Ô&Ð&r   c                 óf   — | |         }t          |j        ¦  «         |                     ¦   «          d S r.   )rO   rÑ   rd   )r   r;  rV   s      r   Ú__delitem__zNamedNodeMap.__delitem__q  s/   € ØÐ$Ô%ˆÝ˜Ô)Ñ*Ô*Ð*Ø�Š‰Œˆˆˆr   c                 ó*   — | j         | j        | j        fS r.   r  r   s    r   Ú__getstate__zNamedNodeMap.__getstate__v  s   € ØŒ{˜DœM¨4Ô+=Ð=Ð=r   c                 ó0   — |\  | _         | _        | _        d S r.   r  ©r   Ústates     r   Ú__setstate__zNamedNodeMap.__setstate__y  s   € Ø9>Ñ6ˆŒ�T”] DÔ$6Ð$6Ð$6r   r.   )!rž   rŸ   r    Ú__doc__r  rÂ   r  r  rŽ   r  r!  r  r$  r  r(  Ú__len__r,  r/  r2  r4  r7  r9  r<  rA  rD  rG  rL  rO  r>  rS  rU  rW  r[  r   r   r   r  r  Ù  sÉ  € € € € € ðð ð 8€Ið*ð *ð *ð
 ð  ð  ðð ð ðð ð ðð ð ð(ð (ð (ð"ð "ð "ð$ð $ð $ð$ð $ð $ð,ð ,ð ,ð ,ð €GðCð Cð Cð%ð %ð %ð%ð %ð %ð$ð $ð $ð%ð %ð %ð$ð $ð $ð1ð 1ð 1ð$ð $ð $ðð ð ðð ð ð
(ð 
(ð 
(ð
(ð 
(ð 
(ðð ð ð'ð 'ð 'ðð ð ð
>ð >ð >ð?ð ?ð ?ð ?ð ?r   r  Úlengthz$Number of nodes in the NamedNodeMap.c                   ó*   — e Zd ZdZd„ Zd„ Zd„ Zd„ ZdS )ÚTypeInfo©Ú	namespacerº   c                 ó"   — || _         || _        d S r.   ra  )r   rb  rº   s      r   rÂ   zTypeInfo.__init__…  s   € Ø"ˆŒØˆŒ	ˆ	ˆ	r   c                 ó€   — | j         r d| j        j        ›d| j        ›d| j         ›d�S d| j        j        ›d| j        ›d�S )Nr¯   ú z (from z)>r±   )rb  Ú	__class__rž   rº   r   s    r   Ú__repr__zTypeInfo.__repr__‰  s`   € ØŒ>ð 	Dð 	DØ*.¬.Ô*AÐ*AÐ*AÀ4Ä9À9À9Ø*.¬.¨.¨.ð:ð :ð	Dð !%¤Ô 7Ð 7Ð 7¸¼¸¸ÐCÐCr   c                 ó   — | j         S r.   )rº   r   s    r   rß   zTypeInfo._get_name�  ó
   € ØŒyÐr   c                 ó   — | j         S r.   )rb  r   s    r   Ú_get_namespacezTypeInfo._get_namespace“  rÝ   r   N)rž   rŸ   r    r  rÂ   rg  rß   rk  r   r   r   r`  r`  ‚  sX   € € € € € Ø#€Iðð ð ðDð Dð Dðð ð ðð ð ð ð r   r`  c                   ó&  — e Zd ZdZej        ZdZeZ	dZ
ej        ej        ej        ej        ej        ej        fZeddfd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZeZd„ Zd„ Z d„ Z!e!Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'dd„Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-dS ) ÚElement)rl   rH   r·   rÃ   r¢   r¡   rÐ   r0   rô   rõ   rQ   rR   Nr   c                 óª   — d | _         |x| _        | _        || _        || _        t          ¦   «         | _        d x| _        | _        d | _	        d | _
        d S r.   )rH   r·   rÃ   r¢   r¡   r•   r0   rQ   rR   rô   rõ   )r   r·   r¡   r¢   r¦   s        r   rÂ   zElement.__init__©  sU   € àˆŒØ'.Ð.ˆŒ�t”}ØˆŒØ(ˆÔÝ"™*œ*ˆŒØ26Ð6ˆÔ˜4Ô/ð ˆŒØˆŒˆˆr   c                 ó4   — | j         €i | _         i | _        d S d S r.   )rô   rõ   r   s    r   Ú_ensure_attributeszElement._ensure_attributes½  s$   € ØŒ;ÐØˆDŒKØˆDŒMˆMˆMð Ðr   c                 ót   — 	 | j         S # t          $ r$ | j                             dd¦  «        d         cY S w xY wrÖ   )rÐ   r�   r·   rØ   r   s    r   rw   zElement._get_localNameÂ  sM   € ð	2Ø”?Ð"øÝð 	2ð 	2ð 	2Ø”<×%Ò% c¨1Ñ-Ô-¨bÔ1Ð1Ð1Ð1ð	2øøørÙ   c                 ó   — | j         S r.   ©r·   r   s    r   Ú_get_tagNamezElement._get_tagNameÈ  rì   r   c                 óÞ   — | j         �=t          | j                              ¦   «         ¦  «        D ]}|                     ¦   «          Œd | _         d | _        t
                               | ¦  «         d S r.   )rô   r�   r  rd   rõ   r   )r   Úattrs     r   rd   zElement.unlinkË  sd   € ØŒ;Ð"Ý˜Tœ[×/Ò/Ñ1Ô1Ñ2Ô2ð ð �Ø—’‘”��ØˆŒØˆŒÝ�Š�DÑÔÐÐÐr   c                 ó\   — | j         €dS 	 | j         |         j        S # t          $ r Y dS w xY w)a†  Returns the value of the specified attribute.

        Returns the value of the element's attribute named attname as
        a string. An empty string is returned if the element does not
        have such an attribute. Note that an empty string may also be
        returned as an explicitly given attribute value, use the
        hasAttribute method to distinguish these two cases.
        Nr   )rô   rã   r‚   )r   r@  s     r   ÚgetAttributezElement.getAttributeÓ  sH   € ð Œ;ÐØ�2ð	Ø”;˜wÔ'Ô-Ð-øÝð 	ð 	ð 	Ø�2�2ð	øøøs   ‹ �
+ª+c                 ó`   — | j         €dS 	 | j         ||f         j        S # t          $ r Y dS w xY wr   )rõ   rã   r‚   rF  s      r   ÚgetAttributeNSzElement.getAttributeNSã  sK   € ØŒ=Ð Ø�2ð	Ø”= ,°	Ð!:Ô;ÔAÐAøÝð 	ð 	ð 	Ø�2�2ð	øøøs   ‹ Ÿ
-¬-c                 óþ   — |                       |¦  «        }|€9t          |¦  «        }||_        | j        |_        |                      |¦  «         d S ||j        k    r||_        |j        rt          | ¦  «         d S d S d S r.   )ÚgetAttributeNoderÌ   rã   rl   ÚsetAttributeNoderý   rO   )r   r@  rã   rv  s       r   ÚsetAttributezElement.setAttributeë  s•   € Ø×$Ò$ WÑ-Ô-ˆØˆ<Ý˜‘=”=ˆDØˆDŒJØ!%Ô!3ˆDÔØ×!Ò! $Ñ'Ô'Ð'Ð'Ð'Ø�d”jÒ Ð ØˆDŒJØŒyð &Ý Ñ%Ô%Ð%Ð%Ð%ð !Ð ð&ð &r   c                 óX  — t          |¦  «        \  }}|                      ||¦  «        }|€<t          ||||¦  «        }||_        | j        |_        |                      |¦  «         d S ||j        k    r||_        |j        rt          | ¦  «         |j        |k    r||_        ||_	        d S d S r.   )
Ú_nssplitÚgetAttributeNodeNSrÌ   rã   rl   r}  rý   rO   r¢   rÃ   )r   r¡   ÚqualifiedNamerã   r¢   Ú	localnamerv  s          r   ÚsetAttributeNSzElement.setAttributeNS÷  sÀ   € Ý$ ]Ñ3Ô3Ñˆ�	Ø×&Ò& |°YÑ?Ô?ˆØˆ<Ý˜ |°YÀÑGÔGˆDØˆDŒJØ!%Ô!3ˆDÔØ×!Ò! $Ñ'Ô'Ð'Ð'Ð'à˜œ
Ò"Ð"Ø"�”
Ø”9ð *Ý# DÑ)Ô)Ð)ØŒ{˜fÒ$Ð$Ø$�”Ø -�”��ð %Ð$r   c                 óH   — | j         €d S | j                              |¦  «        S r.   r'  )r   Úattrnames     r   r|  zElement.getAttributeNode  s#   € ØŒ;ÐØ�4ØŒ{�Š˜xÑ(Ô(Ð(r   c                 óL   — | j         €d S | j                              ||f¦  «        S r.   )rõ   r(  rF  s      r   r�  zElement.getAttributeNodeNS  s*   € ØŒ=Ð Ø�4ØŒ}× Ò  ,°	Ð!:Ñ;Ô;Ð;r   c                 ó¬  — |j         d | fvrt          j                             d¦  «        ‚|                      ¦   «          | j                             |j        d ¦  «        }|�|                      |¦  «         | j	                             |j
        |j        fd ¦  «        }|�||ur|                      |¦  «         t          | |¦  «         ||ur|S ||ur|S d S )Nzattribute node already owned)rÑ   rD   rE   ÚInuseAttributeErrrp  rô   r(  rº   ÚremoveAttributeNoderõ   r¡   r¦   Ú_set_attribute_node)r   rv  Úold1Úold2s       r   r}  zElement.setAttributeNode  sí   € ØÔ T¨4 LÐ0Ð0Ý”'×+Ò+Ð,JÑKÔKÐKØ×ÒÑ!Ô!Ð!ØŒ{�Š˜tœy¨$Ñ/Ô/ˆØÐØ×$Ò$ TÑ*Ô*Ð*ØŒ}× Ò  $Ô"3°T´^Ð!DÀdÑKÔKˆØÐ ¨DÐ 0Ð 0Ø×$Ò$ TÑ*Ô*Ð*Ý˜D $Ñ'Ô'Ð'à�tÐÐð ˆKØ�tÐÐØˆKð Ðr   c                 óð   — | j         €t          j                             ¦   «         ‚	 | j        |         }n,# t
          $ r t          j                             ¦   «         ‚w xY w|                      |¦  «         d S r.   )rõ   rD   rE   rM   rô   r‚   rŠ  )r   rº   rv  s      r   ÚremoveAttributezElement.removeAttribute'  sz   € ØŒ=Ð Ý”'×%Ò%Ñ'Ô'Ð'ð	(Ø”;˜tÔ$ˆDˆDøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà× Ò  Ñ&Ô&Ð&Ð&Ð&s	   §5 µ)Ac                 óô   — | j         €t          j                             ¦   «         ‚	 | j         ||f         }n,# t          $ r t          j                             ¦   «         ‚w xY w|                      |¦  «         d S r.   )rõ   rD   rE   rM   r‚   rŠ  )r   r¡   r¦   rv  s       r   ÚremoveAttributeNSzElement.removeAttributeNS0  s   € ØŒ=Ð Ý”'×%Ò%Ñ'Ô'Ð'ð	(Ø”= ,°	Ð!:Ô;ˆDˆDøÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà× Ò  Ñ&Ô&Ð&Ð&Ð&s	   §7 ·)A c                 ó$  — |€t           j                             ¦   «         ‚	 | j        |j                  n,# t
          $ r t           j                             ¦   «         ‚w xY wt          | ¦  «         |                     ¦   «          | j        |_        |S r.   )	rD   rE   rM   rô   rº   r‚   rO   rd   rl   rR  s     r   rŠ  zElement.removeAttributeNode9  sŽ   € Øˆ<Ý”'×%Ò%Ñ'Ô'Ð'ð	(ØŒK˜œ	Ô"Ð"Ð"øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøå˜ÑÔÐØ�Š‰Œˆð "Ô/ˆÔØˆs	   ¢5 µ)Ac                 ó&   — | j         €dS || j         v S )z¾Checks whether the element has an attribute with the specified name.

        Returns True if the element has an attribute with the specified name.
        Otherwise, returns False.
        NF©rô   rC  s     r   ÚhasAttributezElement.hasAttributeI  s   € ð Œ;ÐØ�5Ø�t”{Ð"Ð"r   c                 ó*   — | j         €dS ||f| j         v S ©NF)rõ   rF  s      r   ÚhasAttributeNSzElement.hasAttributeNSS  s!   € ØŒ=Ð Ø�5Ø˜iÐ(¨D¬MÐ9Ð9r   c                 ó<   — t          | |t          ¦   «         ¦  «        S )z¶Returns all descendant elements with the given tag name.

        Returns the list of all descendant elements (not direct children
        only) with the specified tag name.
        ©r¸   r•   rC  s     r   ÚgetElementsByTagNamezElement.getElementsByTagNameX  s   € õ /¨t°T½8¹:¼:ÑFÔFÐFr   c                 ó>   — t          | ||t          ¦   «         ¦  «        S r.   ©r½   r•   rF  s      r   ÚgetElementsByTagNameNSzElement.getElementsByTagNameNS`  ó!   € Ý1Ø�, 	­8©:¬:ñ7ô 7ð 	7r   c                 ó4   — d| j         t          | ¦  «        fz  S )Nz<DOM Element: %s at %#x>)r·   r+  r   s    r   rg  zElement.__repr__d  s   € Ø)¨T¬\½2¸d¹8¼8Ð,DÑDÐDr   r   c                 óB  — |                      |dz   | j        z   ¦  «         |                      ¦   «         }|                     ¦   «         D ]J}|                      d|z  ¦  «         t	          |||         j        ¦  «         |                      d¦  «         ŒK| j        rì|                      d¦  «         t          | j        ¦  «        dk    rN| j        d         j        t          j
        t          j        fv r$| j        d                              |ddd¦  «         nO|                      |¦  «         | j        D ]}|                     |||z   ||¦  «         Œ|                      |¦  «         |                      d| j        ›d|›�¦  «         d
S |                      d	|z  ¦  «         d
S )z®Write an XML element to a file-like object

        Write the element to the writer object that must provide
        a write method (e.g. a file or StringIO object).
        r¯   z %s="r°   r±   r?   r   r   z</z/>%sN)r³   r·   Ú_get_attributesr  r´   rã   r0   r  r%   r   rb   rÆ   r'   )r   r,   r*   Ú	addindentr+   r  Úa_namerV   s           r   r'   zElement.writexmlg  s¤  € ð 	�Š�V˜C‘Z $¤,Ñ.Ñ/Ô/Ð/à×$Ò$Ñ&Ô&ˆà—j’j‘l”lð 	ð 	ˆFØ�LŠL˜ FÑ*Ñ+Ô+Ð+Ý˜  f¤Ô 3Ñ4Ô4Ð4Ø�LŠL˜ÑÔÐÐØŒ?ð 	(Ø�LŠL˜ÑÔÐÝ�D”OÑ$Ô$¨Ò)Ð)Ø” Ô"Ô+Ýœ­Ô(?ð0Að Að Aà” Ô"×+Ò+¨F°B¸¸BÑ?Ô?Ð?Ð?à—’˜TÑ"Ô"Ð"Ø œOð Mð M�DØ—M’M &¨&°Ñ*:¸IÀtÑLÔLÐLÐLØ—’˜VÑ$Ô$Ð$Ø�LŠLˆL d¤l l l°D°DÐ9Ñ:Ô:Ð:Ð:Ð:à�LŠL˜ ™Ñ'Ô'Ð'Ð'Ð'r   c                 ó`   — |                       ¦   «          t          | j        | j        | ¦  «        S r.   )rp  r  rô   rõ   r   s    r   r¢  zElement._get_attributes‡  s*   € Ø×ÒÑ!Ô!Ð!Ý˜DœK¨¬¸Ñ=Ô=Ð=r   c                 ó   — | j         rdS dS rª   r”  r   s    r   ÚhasAttributeszElement.hasAttributes‹  s   € ØŒ;ð 	Ø�4à�5r   c                 óZ   — |                       |¦  «        }|                      |¦  «         d S r.   )r|  ÚsetIdAttributeNode)r   rº   ÚidAttrs      r   ÚsetIdAttributezElement.setIdAttribute“  s/   € Ø×&Ò& tÑ,Ô,ˆØ×Ò Ñ'Ô'Ð'Ð'Ð'r   c                 ó\   — |                       ||¦  «        }|                      |¦  «         d S r.   )r�  r©  )r   r¡   r¦   rª  s       r   ÚsetIdAttributeNSzElement.setIdAttributeNS—  s1   € Ø×(Ò(¨°yÑAÔAˆØ×Ò Ñ'Ô'Ð'Ð'Ð'r   c                 ó\  — |�|                       |j        ¦  «        st          j                             ¦   «         ‚t          | ¦  «        �t          j                             ¦   «         ‚|j        s=d|_        | xj        dz  c_        | j	        xj
        dz  c_
        t          | ¦  «         d S d S )NTr?   )r{   rÑ   rD   rE   rM   Ú_get_containing_entrefÚNoModificationAllowedErrrö   r÷   rl   rø   rO   )r   rª  s     r   r©  zElement.setIdAttributeNode›  sª   € Øˆ> §¢°Ô1DÑ!EÔ!Eˆ>Ý”'×%Ò%Ñ'Ô'Ð'Ý! $Ñ'Ô'Ð3Ý”'×2Ò2Ñ4Ô4Ð4ØŒ}ð 	"Ø ˆFŒMØÐ Ô  AÑ%Ð Ô ØÔÐ.Ô.°!Ñ3Ð.Ô.Ý˜DÑ!Ô!Ð!Ð!Ð!ð		"ð 	"r   ©r   r   r   ).rž   rŸ   r    r  r   rf   r%   rÄ   r  r	  r÷   rÈ   rÉ   rb   rÆ   rÇ   rC   r   rÂ   rp  rw   rt  rd   rx  rz  r~  r„  r|  r�  r}  ÚsetAttributeNodeNSr�  r‘  rŠ  ÚremoveAttributeNodeNSr•  r˜  r›  rž  rg  r'   r¢  r§  r«  r­  r©  r   r   r   rm  rm  ˜  s  € € € € € ð1€Ið Ô €HØ€IØ€Jà€OàÔ*ØÔ9ØÔ*ØœØÔ0ØÔ3ð5Ðð .=ÀTØðð ð ð ð(ð ð ð
2ð 2ð 2ðð ð ðð ð ðð ð ð ð ð ð
&ð 
&ð 
&ð.ð .ð .ð")ð )ð )ð
<ð <ð <ð
ð ð ð& *Ðð'ð 'ð 'ð'ð 'ð 'ðð ð ð 0Ðð#ð #ð #ð:ð :ð :ð
Gð Gð Gð7ð 7ð 7ðEð Eð Eð(ð (ð (ð (ð@>ð >ð >ðð ð ð(ð (ð (ð(ð (ð (ð	"ð 	"ð 	"ð 	"ð 	"r   rm  rÅ   z*NamedNodeMap of attributes on the element.z%Namespace-local name of this element.c                 ó¤   — t          | ¦  «         |                      ¦   «          || j        |j        <   || j        |j        |j        f<   | |_        d S r.   )rO   rp  rô   rº   rõ   r¡   r¦   rÑ   )Úelementrv  s     r   r‹  r‹  ¬  sW   € Ý�GÑÔÐØ×ÒÑ Ô Ð Ø $€G„N�4”9ÑØ<@€GÔ�dÔ'¨¬Ð8Ñ9ð
  €DÔÐÐr   c                   óf   — e Zd ZdZdZdZ e¦   «         ZdZdZ	d„ Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )Ú	Childlessz�Mixin that makes childless-ness easy to implement and avoids
    the complexity of the Node methods that deal with children.
    r   Nc                 ó   — d S r.   r   r   s    r   r8   zChildless._get_firstChildÂ  r   r   c                 ó   — d S r.   r   r   s    r   r<   zChildless._get_lastChildÅ  r   r   c                 óP   — t           j                             | j        dz   ¦  «        ‚)Nz nodes cannot have children©rD   rE   rF   rÃ   rR  s     r   rJ   zChildless.appendChildÈ  ó'   € ÝŒg×)Ò)ØŒMÐ9Ñ9ñ;ô ;ð 	;r   c                 ó   — dS r—  r   r   s    r   r1   zChildless.hasChildNodesÌ  ó   € Øˆur   c                 óP   — t           j                             | j        dz   ¦  «        ‚©Nz nodes do not have childrenr»  ©r   rS   rT   s      r   rB   zChildless.insertBeforeÏ  r¼  r   c                 óP   — t           j                             | j        dz   ¦  «        ‚rÀ  )rD   rE   rM   rÃ   r_   s     r   rI   zChildless.removeChildÓ  s'   € ÝŒg×!Ò!ØŒMÐ9Ñ9ñ;ô ;ð 	;r   c                 ó   — d S r.   r   r   s    r   rg   zChildless.normalize×  s   € àˆr   c                 óP   — t           j                             | j        dz   ¦  «        ‚rÀ  r»  ©r   rS   r[   s      r   r\   zChildless.replaceChildÛ  r¼  r   )rž   rŸ   r    r\  r  rÅ   ÚEmptyNodeListr0   r£   r¥   r8   r<   rJ   r1   rB   rI   rg   r\   r   r   r   r·  r·  ·  s·   € € € € € ðð ð €Ià€JØ�‘”€JØ€JØ€Iðð ð ðð ð ð;ð ;ð ;ðð ð ð;ð ;ð ;ð;ð ;ð ;ðð ð ð;ð ;ð ;ð ;ð ;r   r·  c                   óv   — e Zd Zej        ZdZd„ Zd„ Zd„ Z	 e
ee	¦  «        Zd„ Zd„ Z e
ee¦  «        Zd
d„Zd	S )ÚProcessingInstruction©Útargetrc   c                 ó"   — || _         || _        d S r.   rÉ  )r   rÊ  rc   s      r   rÂ   zProcessingInstruction.__init__ä  s   € ØˆŒØˆŒ	ˆ	ˆ	r   c                 ó   — | j         S r.   ©rc   r   s    r   Ú_get_nodeValuez$ProcessingInstruction._get_nodeValueé  ri  r   c                 ó   — || _         d S r.   rÍ  râ   s     r   Ú_set_nodeValuez$ProcessingInstruction._set_nodeValueë  s   € ØˆŒ	ˆ	ˆ	r   c                 ó   — | j         S r.   ©rÊ  r   s    r   Ú_get_nodeNamez#ProcessingInstruction._get_nodeNameð  rç   r   c                 ó   — || _         d S r.   rÒ  râ   s     r   Ú_set_nodeNamez#ProcessingInstruction._set_nodeNameò  s   € ØˆŒˆˆr   r   c           	      óZ   — |                      |›d| j        ›d| j        ›d|›�¦  «         d S )Nz<?re  ú?>)r³   rÊ  rc   ©r   r,   r*   r£  r+   s        r   r'   zProcessingInstruction.writexmlö  s5   € Ø�Š¨¨¨¨t¬{¨{¨{¸D¼I¸I¸IÀtÀtÐLÑMÔMÐMÐMÐMr   Nr±  )rž   rŸ   r    r   rÈ   r%   r  rÂ   rÎ  rÐ  r  rÄ   rÓ  rÕ  rÃ   r'   r   r   r   rÈ  rÈ  à  s¨   € € € € € ØÔ/€HØ"€Iðð ð ð
ð ð ðð ð à�˜¨Ñ8Ô8€Iðð ð ðð ð àˆx˜ }Ñ5Ô5€HðNð Nð Nð Nð Nð Nr   rÈ  c                   ón   — e Zd ZdZd„ Zd„ ZeZd„ Zd„ Z e	ee¦  «        xZ
Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ ZdS )ÚCharacterData)Ú_datarl   rH   rR   rQ   c                 ó€   — d x| _         | _        d x| _        | _        d| _        t
                               | ¦  «         d S r   )rl   rH   rR   rQ   rÛ  r   rÂ   r   s    r   rÂ   zCharacterData.__init__ý  s@   € Ø/3Ð3ˆÔ˜Tœ_Ø26Ð6ˆÔ˜tÔ/ØˆŒ
Ý�Š�dÑÔÐÐÐr   c                 ó*   — t          | j        ¦  «        S r.   )r  rc   r   s    r   r  zCharacterData._get_length  ó   € Ý�4”9‰~Œ~Ðr   c                 ó   — | j         S r.   ©rÛ  r   s    r   Ú	_get_datazCharacterData._get_data  rà   r   c                 ó   — || _         d S r.   rà  ©r   rc   s     r   Ú	_set_datazCharacterData._set_data	  s   € ØˆŒ
ˆ
ˆ
r   c                 óz   — | j         }t          |¦  «        dk    rd}nd}d| j        j        ›d|dd…         ›|›d�S )Né
   z...r   z<DOM z node "r   z">)rc   r  rf  rž   )r   rc   Ú	dotdotdots      r   rg  zCharacterData.__repr__  sO   € ØŒyˆÝˆt‰9Œ9�rŠ>ˆ>ØˆIˆIàˆIøàŒNÔ#Ð#Ð# T¨!¨B¨$¤Z Z°°°ð<ð 	<r   c                 ó(  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚| j        |||z   …         S ©Nr   úoffset cannot be negativeú#offset cannot be beyond end of datazcount cannot be negative©rD   rE   ÚIndexSizeErrr  rc   ©r   ÚoffsetÚcounts      r   ÚsubstringDatazCharacterData.substringData  s‚   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØŒy˜  u¡Ð,Ô-Ð-r   c                 ó$   — | j         |z   | _         d S r.   rÍ  )r   Úargs     r   Ú
appendDatazCharacterData.appendData   s   € Ø”I ‘OˆŒ	ˆ	ˆ	r   c                 ó  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|r)| j        d |…         ›|›| j        |d …         ›�| _        d S d S )Nr   rê  rë  rì  )r   rï  ró  s      r   Ú
insertDatazCharacterData.insertData#  s�   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØð 	=à”	˜'˜6˜'Ô"Ð" C C¨¬°6°7°7Ô);Ð);ð=ˆDŒIˆIˆIð	=ð 	=r   c                 ó^  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚|r)| j        d |…         | j        ||z   d …         z   | _        d S d S ré  rì  rî  s      r   Ú
deleteDatazCharacterData.deleteData,  s«   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØð 	FØœ	 ' 6 'Ô*¨T¬Y°v¸e±|°}°}Ô-EÑEˆDŒIˆIˆIð	Fð 	Fr   c                 ód  — |dk     rt           j                             d¦  «        ‚|t          | j        ¦  «        k    rt           j                             d¦  «        ‚|dk     rt           j                             d¦  «        ‚|r,| j        d |…         ›|›| j        ||z   d …         ›�| _        d S d S ré  rì  )r   rï  rð  ró  s       r   ÚreplaceDatazCharacterData.replaceData6  s¸   € Ø�AŠ:ˆ:Ý”'×&Ò&Ð'BÑCÔCÐCØ•S˜œ‘^”^Ò#Ð#Ý”'×&Ò&Ð'LÑMÔMÐMØ�1Š9ˆ9Ý”'×&Ò&Ð'AÑBÔBÐBØð 	Cà”	˜'˜6˜'Ô"Ð" C C¨¬°6¸%±<°=°=Ô)AÐ)AðCˆDŒIˆIˆIð	Cð 	Cr   N)rž   rŸ   r    r  rÂ   r  r]  rá  rä  r  rc   rÄ   rg  rñ  rô  rö  rø  rú  r   r   r   rÚ  rÚ  ú  sÔ   € € € € € ØW€Iðð ð ðð ð à€Gðð ð ðð ð ð  �x 	¨9Ñ5Ô5Ð5€Dˆ9ð<ð <ð <ð.ð .ð .ð$ð $ð $ð=ð =ð =ðFð Fð Fð	Cð 	Cð 	Cð 	Cð 	Cr   rÚ  zLength of the string data.c                   óH   — e Zd ZdZej        ZdZdZd„ Z	d
d„Z
d„ Zd„ Zd	„ ZdS )rÓ   r   z#textNc                 ó¸  — |dk     s|t          | j        ¦  «        k    rt          j                             d¦  «        ‚|                      ¦   «         }| j        |d …         |_        | j        |_        | j        }| j        rF| | j        j	        v r8|€| j         
                    |¦  «         n| j                             ||¦  «         | j        d |…         | _        |S )Nr   zillegal offset value)r  rc   rD   rE   rí  rf  rl   rQ   rH   r0   rJ   rB   )r   rï  ÚnewTextÚnexts       r   Ú	splitTextzText.splitTextK  sÎ   € Ø�AŠ:ˆ:˜¥# d¤i¡.¤.Ò0Ð0Ý”'×&Ò&Ð'=Ñ>Ô>Ð>Ø—.’.Ñ"Ô"ˆØ”y   Ô)ˆŒØ $Ô 2ˆÔØÔˆØŒ?ð 	<˜t t¤Ô'AÐAÐAØˆ|Ø”×+Ò+¨GÑ4Ô4Ð4Ð4à”×,Ò,¨W°dÑ;Ô;Ð;Ø”I˜g˜v˜gÔ&ˆŒ	Øˆr   r   c                 ó<   — t          ||›| j        ›|›�¦  «         d S r.   )r´   rc   rØ  s        r   r'   zText.writexmlZ  s'   € Ý�F¨¨°´	°	¸4¸4Ð@ÑAÔAÐAÐAÐAr   c                 ór  — | j         g}| j        }|�E|j        t          j        t          j        fv r#|                     d|j         ¦  «         |j        }nn|­E| j        }|�D|j        t          j        t          j        fv r"|                     |j         ¦  «         |j        }nn|­Dd 	                    |¦  «        S )Nr   r   )
rc   rR   r%   r   rb   rÆ   rP   rQ   re   Újoin)r   rh   rK  s      r   Ú_get_wholeTextzText._get_wholeText_  s¸   € ØŒYˆKˆØÔ ˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ—’˜˜AœFÑ#Ô#Ð#ØÔ%��àð ˆmð ÔˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ—’˜œÑ Ô Ð Ø”M��àð ˆmð �wŠw�q‰zŒzÐr   c                 ó€  — | j         }| j        }|�A|j        t          j        t          j        fv r|j        }|                     |¦  «         |}nn|­A| j        }|s|                     | ¦  «         |�A|j        t          j        t          j        fv r|j        }|                     |¦  «         |}nn|­A|r	|| _        | S d S r.   )	rH   rR   r%   r   rb   rÆ   rI   rQ   rc   )r   Úcontentr¹   rK  rþ  s        r   ÚreplaceWholeTextzText.replaceWholeTextq  så   € ð ”ˆØÔ ˆØˆmØŒz�dœn­dÔ.EÐFÐFÐFØÔ(�Ø×"Ò" 1Ñ%Ô%Ð%Ø��àð ˆmð ÔˆØð 	%Ø×Ò˜tÑ$Ô$Ð$ØˆmØŒz�dœn­dÔ.EÐFÐFÐFØ”}�Ø×"Ò" 1Ñ%Ô%Ð%Ø��àð ˆmð ð 	ØˆDŒIØˆKà�4r   c                 óÂ   — | j                              ¦   «         rdS t          | ¦  «        }|€dS | j                             |¦  «        }|€dS |                     ¦   «         S r—  )rc   ÚstripÚ_get_containing_elementrl   rû   ÚisElementContent)r   rù   rÿ   s      r   Ú!_get_isWhitespaceInElementContentz&Text._get_isWhitespaceInElementContent�  sd   € ØŒ9�?Š?ÑÔð 	Ø�5Ý& tÑ,Ô,ˆØˆ<Ø�5ØÔ!×0Ò0°Ñ6Ô6ˆØˆ<Ø�5à×(Ò(Ñ*Ô*Ð*r   r±  )rž   rŸ   r    r  r   rb   r%   rÃ   rÅ   rÿ  r'   r  r  r  r   r   r   rÓ   rÓ   D  s~   € € € € € Ø€IàŒ~€HØ€HØ€Jðð ð ðBð Bð Bð Bð
ð ð ð$ð ð ð8
+ð 
+ð 
+ð 
+ð 
+r   rÓ   ÚisWhitespaceInElementContentzKTrue iff this text node contains only whitespace and is in element content.Ú	wholeTextz.The text of all logically-adjacent text nodes.c                 óX   — | j         }|� |j        t          j        k    r|S |j         }|­ d S r.   )rH   r%   r   rf   ©rV   rU   s     r   r	  r	     s8   € ØŒ€AØ
ˆ-ØŒ:�Ô*Ò*Ð*ØˆHØŒLˆð ˆ-ð ˆ4r   c                 óX   — | j         }|� |j        t          j        k    r|S |j         }|­ d S r.   )rH   r%   r   rÇ   r  s     r   r¯  r¯  ¨  s8   € ØŒ€AØ
ˆ-ØŒ:�Ô3Ò3Ð3ØˆHØŒLˆð ˆ-ð ˆ4r   c                   ó.   — e Zd Zej        ZdZd„ Zdd„ZdS )ÚCommentz#commentc                 óH   — t                                | ¦  «         || _        d S r.   )rÚ  rÂ   rÛ  rã  s     r   rÂ   zComment.__init__µ  s!   € Ý×Ò˜tÑ$Ô$Ð$ØˆŒ
ˆ
ˆ
r   r   c                 óz   — d| j         v rt          d¦  «        ‚|                     |›d| j         ›d|›�¦  «         d S )Nz--z%'--' is not allowed in a comment nodez<!--z-->)rc   rL   r³   rØ  s        r   r'   zComment.writexml¹  sI   € Ø�4”9ÐÐÝÐDÑEÔEÐEØ�Š¨¨¨°´	°	°	¸4¸4Ð@ÑAÔAÐAÐAÐAr   Nr±  )	rž   rŸ   r    r   rÉ   r%   rÃ   rÂ   r'   r   r   r   r  r  ±  sJ   € € € € € ØÔ €HØ€Hðð ð ðBð Bð Bð Bð Bð Br   r  c                   ó,   — e Zd ZdZej        ZdZdd„ZdS )ÚCDATASectionr   z#cdata-sectionr   c                 óš   — | j                              d¦  «        dk    rt          d¦  «        ‚|                     d| j         z  ¦  «         d S )Nz]]>r   z$']]>' not allowed in a CDATA sectionz<![CDATA[%s]]>)rc   ÚfindrL   r³   rØ  s        r   r'   zCDATASection.writexmlÅ  sJ   € ØŒ9�>Š>˜%Ñ Ô  AÒ%Ð%ÝÐCÑDÔDÐDØ�ŠÐ%¨¬	Ñ1Ñ2Ô2Ð2Ð2Ð2r   Nr±  )	rž   rŸ   r    r  r   rÆ   r%   rÃ   r'   r   r   r   r  r  ¿  s:   € € € € € Ø€IàÔ&€HØ€Hð3ð 3ð 3ð 3ð 3ð 3r   r  c                   ób   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚReadOnlySequentialNamedNodeMap©Ú_seqr   c                 ó   — || _         d S r.   r  )r   Úseqs     r   rÂ   z'ReadOnlySequentialNamedNodeMap.__init__Î  s   € àˆŒ	ˆ	ˆ	r   c                 ó*   — t          | j        ¦  «        S r.   ©r  r  r   s    r   r]  z&ReadOnlySequentialNamedNodeMap.__len__Ò  rÞ  r   c                 ó*   — t          | j        ¦  «        S r.   r   r   s    r   r  z*ReadOnlySequentialNamedNodeMap._get_lengthÕ  rÞ  r   c                 ó8   — | j         D ]}|j        |k    r|c S Œd S r.   )r  rÃ   rJ  s      r   rD  z+ReadOnlySequentialNamedNodeMap.getNamedItemØ  s8   € Ø”ð 	ð 	ˆAØŒz˜TÒ!Ð!Ø���ð "ð	ð 	r   c                 óN   — | j         D ]}|j        |k    r|j        |k    r|c S Œd S r.   )r  r¡   r¦   rN  s       r   rG  z-ReadOnlySequentialNamedNodeMap.getNamedItemNSÝ  s@   € Ø”ð 	ð 	ˆAØŒ~ Ò-Ð-°!´+ÀÒ2JÐ2JØ���øð	ð 	r   c                 ó’   — t          |t          ¦  «        r | j        |Ž }n|                      |¦  «        }|€t	          |¦  «        ‚|S r.   )r  rA   rG  rD  r‚   )r   Úname_or_tuplerV   s      r   r<  z*ReadOnlySequentialNamedNodeMap.__getitem__â  sP   € Ý�m¥UÑ+Ô+ð 	4Ø&�4Ô&¨Ð6ˆDˆDà×$Ò$ ]Ñ3Ô3ˆDØˆ<Ý˜=Ñ)Ô)Ð)Øˆr   c                 óP   — |dk     rd S 	 | j         |         S # t          $ r Y d S w xY wr7   )r  r  r  s     r   r  z#ReadOnlySequentialNamedNodeMap.itemë  sD   € Ø�1Š9ˆ9Ø�4ð	Ø”9˜UÔ#Ð#øÝð 	ð 	ð 	Ø�4�4ð	øøøs   Š —
%¤%c                 ó@   — t           j                             d¦  «        ‚©Nz"NamedNodeMap instance is read-only©rD   rE   r°  rC  s     r   rL  z.ReadOnlySequentialNamedNodeMap.removeNamedItemó  ó   € ÝŒg×.Ò.Ø0ñ2ô 2ð 	2r   c                 ó@   — t           j                             d¦  «        ‚r(  r)  rF  s      r   rO  z0ReadOnlySequentialNamedNodeMap.removeNamedItemNS÷  r*  r   c                 ó@   — t           j                             d¦  «        ‚r(  r)  rR  s     r   r>  z+ReadOnlySequentialNamedNodeMap.setNamedItemû  r*  r   c                 ó@   — t           j                             d¦  «        ‚r(  r)  rR  s     r   rS  z-ReadOnlySequentialNamedNodeMap.setNamedItemNSÿ  r*  r   c                 ó   — | j         gS r.   r  r   s    r   rW  z+ReadOnlySequentialNamedNodeMap.__getstate__  s   € Ø”	ˆ{Ðr   c                 ó    — |d         | _         d S r7   r  rY  s     r   r[  z+ReadOnlySequentialNamedNodeMap.__setstate__  s   € Ø˜!”HˆŒ	ˆ	ˆ	r   N)r   )rž   rŸ   r    r  rÂ   r]  r  rD  rG  r<  r  rL  rO  r>  rS  rW  r[  r   r   r   r  r  Ë  sá   € € € € € Ø€Iðð ð ð ðð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ð2ð 2ð 2ðð ð ðð ð ð ð r   r  z&Number of entries in the NamedNodeMap.c                   ó(   — e Zd ZdZdZd„ Zd„ Zd„ ZdS )Ú
Identifiedz@Mix-in class that supports the publicId and systemId attributes.©ÚpublicIdÚsystemIdc                 ó"   — || _         || _        d S r.   r2  )r   r3  r4  s      r   Ú_identified_mixin_initz!Identified._identified_mixin_init  s   € Ø ˆŒØ ˆŒˆˆr   c                 ó   — | j         S r.   )r3  r   s    r   Ú_get_publicIdzIdentified._get_publicId  ó
   € ØŒ}Ðr   c                 ó   — | j         S r.   )r4  r   s    r   Ú_get_systemIdzIdentified._get_systemId  r9  r   N)rž   rŸ   r    r\  r  r6  r8  r;  r   r   r   r1  r1    sL   € € € € € ØJÐJà&€Ið!ð !ð !ðð ð ðð ð ð ð r   r1  c                   óJ   — e Zd Zej        ZdZdZdZdZ	dZ
d„ Zd„ Zd„ Zdd„ZdS )ÚDocumentTypeNc                 ó    — t          ¦   «         | _        t          ¦   «         | _        |rt          |¦  «        \  }}|| _        | j        | _        d S r.   )r  ÚentitiesÚ	notationsr€  rº   rÃ   )r   r‚  r¢   rƒ  s       r   rÂ   zDocumentType.__init__$  sJ   € Ý6Ñ8Ô8ˆŒÝ7Ñ9Ô9ˆŒØð 	"Ý (¨Ñ 7Ô 7ÑˆF�IØ!ˆDŒIØœ	ˆŒˆˆr   c                 ó   — | j         S r.   )ÚinternalSubsetr   s    r   Ú_get_internalSubsetz DocumentType._get_internalSubset,  ó   € ØÔ"Ð"r   c                 óà  — | j         �€et          d ¦  «        }| j        |_        | j        |_        t          j        j        j        }|�rg |j        _	        g |j
        _	        | j
        j	        D ]X}t          |j        |j        |j        ¦  «        }|j
        j	                             |¦  «         |                     |||¦  «         ŒY| j        j	        D ]‚}t!          |j        |j        |j        |j        ¦  «        }|j        |_        |j        |_        |j        |_        |j        j	                             |¦  «         |                     |||¦  «         Œƒ|                      || |¦  «         |S d S r.   )rl   r=  rº   rÃ   rD   rE   ÚUserDataHandlerÚNODE_CLONEDr?  r  r@  ÚNotationr3  r4  re   r“   ÚEntityÚnotationNameÚactualEncodingr   rt   )r   rm   Úcloner�   rK  ÚnotationÚeÚentitys           r   rn   zDocumentType.cloneNode/  s^  € ØÔÑ%å  Ñ&Ô&ˆEØœˆEŒJØ!œYˆEŒNÝœÔ/Ô;ˆIØñ DØ&(�”Ô#Ø')�”Ô$ØœÔ,ð Fð F�AÝ'¨¬
°A´JÀÄ
ÑKÔK�HØ”OÔ(×/Ò/°Ñ9Ô9Ð9Ø×-Ò-¨i¸¸HÑEÔEÐEÐEØœÔ+ð Dð D�AÝ# A¤J°´
¸A¼JØ$%¤Nñ4ô 4�Fà,-Ô,<�FÔ)Ø&'¤j�F”OØ%&¤Y�F”NØ”NÔ'×.Ò.¨vÑ6Ô6Ð6Ø×-Ò-¨i¸¸FÑCÔCÐCÐCØ×(Ò(¨°D¸%Ñ@Ô@Ð@ØˆLà�4r   r   c           
      óÞ  — |                      d¦  «         |                      | j        ¦  «         | j        r,|                      |›d| j        ›d|›d| j        ›d�¦  «         n'| j        r |                      |›d| j        ›d�¦  «         | j        �D|                      d¦  «         |                      | j        ¦  «         |                      d¦  «         |                      d|z   ¦  «         d S )	Nz
<!DOCTYPE z
  PUBLIC 'ú'z  'z
  SYSTEM 'z [ú]r±   )r³   rº   r3  r4  rB  rØ  s        r   r'   zDocumentType.writexmlJ  sÿ   € Ø�Š�\Ñ"Ô"Ð"Ø�Š�T”YÑÔÐØŒ=ð 	DØ�LŠLØ ˜D˜D $¤- - -°°°°t´}°}°}ðFñ Gô Gð Gð GàŒ]ð 	DØ�LŠL¨d¨d¨d°D´M°M°MÐBÑCÔCÐCØÔÐ*Ø�LŠL˜ÑÔÐØ�LŠL˜Ô,Ñ-Ô-Ð-Ø�LŠL˜ÑÔÐØ�Š�S˜‘XÑÔÐÐÐr   r±  )rž   rŸ   r    r   ÚDOCUMENT_TYPE_NODEr%   rÄ   rº   r3  r4  rB  rÂ   rC  rn   r'   r   r   r   r=  r=    sv   € € € € € ØÔ&€HØ€IØ€DØ€HØ€HØ€Nð"ð "ð "ð#ð #ð #ðð ð ð6ð ð ð ð ð r   r=  c                   ó`   — e Zd ZdZej        ZdZdZdZ	dZ
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd	„ ZdS )
rI  Nc                 ót   — || _         || _        t          ¦   «         | _        |                      ||¦  «         d S r.   )rÃ   rJ  r•   r0   r6  )r   rº   r3  r4  rM  s        r   rÂ   zEntity.__init__a  s8   € ØˆŒØ$ˆÔÝ"™*œ*ˆŒØ×#Ò# H¨hÑ7Ô7Ð7Ð7Ð7r   c                 ó   — | j         S r.   ©rK  r   s    r   Ú_get_actualEncodingzEntity._get_actualEncodingg  rD  r   c                 ó   — | j         S r.   ©r   r   s    r   Ú_get_encodingzEntity._get_encodingj  r9  r   c                 ó   — | j         S r.   ©rt   r   s    r   Ú_get_versionzEntity._get_versionm  rì   r   c                 ó@   — t           j                             d¦  «        ‚)Nz(cannot append children to an entity node©rD   rE   rF   )r   rS   s     r   rJ   zEntity.appendChildp  s   € ÝŒg×)Ò)Ø6ñ8ô 8ð 	8r   c                 ó@   — t           j                             d¦  «        ‚)Nz+cannot insert children below an entity noder`  rÁ  s      r   rB   zEntity.insertBeforet  s   € ÝŒg×)Ò)Ø9ñ;ô ;ð 	;r   c                 ó@   — t           j                             d¦  «        ‚)Nz*cannot remove children from an entity noder`  r_   s     r   rI   zEntity.removeChildx  s   € ÝŒg×)Ò)Ø8ñ:ô :ð 	:r   c                 ó@   — t           j                             d¦  «        ‚)Nz)cannot replace children of an entity noder`  rÅ  s      r   r\   zEntity.replaceChild|  s   € ÝŒg×)Ò)Ø7ñ9ô 9ð 	9r   )rž   rŸ   r    rÅ   r   ÚENTITY_NODEr%   rÄ   rK  r   rt   rÂ   rX  r[  r^  rJ   rB   rI   r\   r   r   r   rI  rI  X  s­   € € € € € Ø€JØÔ€HØ€Ià€NØ€HØ€Gð8ð 8ð 8ð#ð #ð #ðð ð ðð ð ð8ð 8ð 8ð;ð ;ð ;ð:ð :ð :ð9ð 9ð 9ð 9ð 9r   rI  c                   ó&   — e Zd Zej        ZdZd„ ZdS )rH  Nc                 ó@   — || _         |                      ||¦  «         d S r.   )rÃ   r6  )r   rº   r3  r4  s       r   rÂ   zNotation.__init__„  s%   € ØˆŒØ×#Ò# H¨hÑ7Ô7Ð7Ð7Ð7r   )rž   rŸ   r    r   rÊ   r%   rÄ   rÂ   r   r   r   rH  rH  €  s0   € € € € € ØÔ!€HØ€Ið8ð 8ð 8ð 8ð 8r   rH  c                   ó4   — e Zd Zg d¢Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚDOMImplementation))Úcoreú1.0)ri  ú2.0)ri  N)rD   rj  )rD   rk  )rD   N)úls-loadz3.0)rl  Nc                 óL   — |dk    rd }|                      ¦   «         |f| j        v S r   )ÚlowerÚ	_featuresrr   s      r   rq   zDOMImplementation.hasFeature”  s*   € Ø�bŠ=ˆ=ØˆGØ—’‘” Ð)¨T¬^Ð;Ð;r   c                 ób  — |r&|j         �t          j                             d¦  «        ‚|                      ¦   «         }|d u o|d u o|d u  }|s!|rt          j                             d¦  «        ‚|r¢t          |¦  «        \  }}|dk    r%|dk    rt          j                             d¦  «        ‚|r!|st          j                             d¦  «        ‚|                     ||¦  «        }|r| 	                    |¦  «         | 	                    |¦  «         |r|x|_         |_
        ||_        | |_        |S )Nz(doctype object owned by another DOM treezElement with no namerD   z$http://www.w3.org/XML/1998/namespacezillegal use of 'xml' prefixz(illegal use of prefix without namespaces)rH   rD   rE   ÚWrongDocumentErrÚ_create_documentÚInvalidCharacterErrr€  rï   ÚcreateElementNSrJ   rl   Údoctyperp   )	r   r¡   r‚  ru  r¤   Úadd_root_elementr¢   rƒ  rµ  s	            r   ÚcreateDocumentz DOMImplementation.createDocument™  sz  € Øð 	<�wÔ)Ð5Ý”'×*Ò*Ø:ñ<ô <ð <à×#Ò#Ñ%Ô%ˆà ,°Ð 4ð !4Ø$1°TÐ$9ð!4à$+¨t Oð5Ðð ð 	FÐ!1ð 	Fõ ”'×-Ò-Ð.DÑEÔEÐEàð 	%Ý (¨Ñ 7Ô 7ÑˆF�IØ˜ŠˆØÐ#IÒIÐIÝ”g×*Ò*Ð+HÑIÔIÐIØð @˜lð @Ý”g×*Ò*Ø>ñ@ô @ð @à×)Ò)¨,¸ÑFÔFˆGØð )Ø—’ Ñ(Ô(Ð(Ø�OŠO˜GÑ$Ô$Ð$àð 	=Ø9<Ð<ˆGÔ Ô!6àˆŒØ!ˆÔØˆ
r   c                 ó@   — t          |¦  «        }||_        ||_        |S r.   )r=  r3  r4  )r   r‚  r3  r4  ru  s        r   ÚcreateDocumentTypez$DOMImplementation.createDocumentTypeÆ  s$   € Ý˜}Ñ-Ô-ˆØ#ˆÔØ#ˆÔØˆr   c                 ó6   — |                       |d ¦  «        r| S d S r.   )rq   r}   s     r   r~   zDOMImplementation.getInterfaceÎ  s"   € Ø�?Š?˜7 DÑ)Ô)ð 	ØˆKà�4r   c                 ó   — t          ¦   «         S r.   )ÚDocumentr   s    r   rr  z"DOMImplementation._create_documentÕ  s   € Ý‰zŒzÐr   N)	rž   rŸ   r    ro  rq   rw  ry  r~   rr  r   r   r   rh  rh  ‰  sq   € € € € € ðð ð €Ið<ð <ð <ð
+ð +ð +ðZð ð ðð ð ðð ð ð ð r   rh  c                   óL   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚElementInfoz÷Object that represents content-model information for an element.

    This implementation is not expected to be used in practice; DOM
    builders should provide implementations which do the right thing
    using information available to it.

    rs  c                 ó   — || _         d S r.   rs  rC  s     r   rÂ   zElementInfo.__init__ã  s   € ØˆŒˆˆr   c                 ó   — t           S r.   ©r  ©r   Úanames     r   r  zElementInfo.getAttributeTypeæ  ó   € Ýˆr   c                 ó   — t           S r.   r�  rF  s      r   r  zElementInfo.getAttributeTypeNSé  r„  r   c                 ó   — dS r—  r   r   s    r   r
  zElementInfo.isElementContentì  r¾  r   c                 ó   — dS )zQReturns true iff this element is declared to have an EMPTY
        content model.Fr   r   s    r   ÚisEmptyzElementInfo.isEmptyï  s	   € ð ˆur   c                 ó   — dS )z7Returns true iff the named attribute is a DTD-style ID.Fr   r‚  s     r   rý   zElementInfo.isIdô  ó   € àˆur   c                 ó   — dS )z<Returns true iff the identified attribute is a DTD-style ID.Fr   rF  s      r   rü   zElementInfo.isIdNSø  rŠ  r   c                 ó   — | j         S r.   rs  r   s    r   rW  zElementInfo.__getstate__ü  rì   r   c                 ó   — || _         d S r.   rs  rY  s     r   r[  zElementInfo.__setstate__ÿ  s   € ØˆŒˆˆr   N)rž   rŸ   r    r\  r  rÂ   r  r  r
  rˆ  rý   rü   rW  r[  r   r   r   r~  r~  Ø  s¬   € € € € € ðð ð €Iðð ð ðð ð ðð ð ðð ð ðð ð ð
ð ð ðð ð ðð ð ðð ð ð ð r   r~  c                 óê   — | j         t          j        k    r"| j                             ¦   «          d | _        d S t          | ¦  «        r,| j        j                             ¦   «          d | j        _        d S d S r.   )r%   r   r&   Ú	_id_cacheÚclearÚ_id_search_stackr¬   rl   r«   s    r   rO   rO     sw   € Ø„}�Ô*Ò*Ð*ØŒ×ÒÑÔÐØ $ˆÔÐÐÝ	�dÑ	Ô	ð 2ØÔÔ$×*Ò*Ñ,Ô,Ð,Ø-1ˆÔÔ+Ð+Ð+ð2ð 2r   c                   ól  — e Zd ZdZej        ej        ej        ej        fZ	 e
¦   «         Zej        ZdZdZdZdZdxZZdZdZdZdZdZdZdZdZd„ Zd„ Zd„ Zd	„ Zd
„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d„ Z4d„ Z5d „ Z6d!„ Z7d"„ Z8d#„ Z9d$„ Z:	 	 d(d&„Z;d'„ Z<dS ))r|  )Ú
_elem_inforu  r‘  r0   r�  z	#documentNFr   c                 ód   — d | _         t          ¦   «         | _        i | _        i | _        d | _        d S r.   )ru  r•   r0   r“  r�  r‘  r   s    r   rÂ   zDocument.__init__%  s2   € ØˆŒÝ"™*œ*ˆŒð ˆŒØˆŒØ $ˆÔÐÐr   c                 óp   — |j         r|j         |j        f}n|j        }| j                             |¦  «        S r.   )r¡   r¦   r·   r“  r(  )r   rµ  r„   s      r   rû   zDocument._get_elem_info.  s<   € ØÔð 	"ØÔ&¨Ô(9Ð9ˆCˆCà”/ˆCØŒ×"Ò" 3Ñ'Ô'Ð'r   c                 ó   — | j         S r.   rW  r   s    r   rX  zDocument._get_actualEncoding5  rD  r   c                 ó   — | j         S r.   )ru  r   s    r   Ú_get_doctypezDocument._get_doctype8  rì   r   c                 ó   — | j         S r.   )ÚdocumentURIr   s    r   Ú_get_documentURIzDocument._get_documentURI;  s   € ØÔÐr   c                 ó   — | j         S r.   rZ  r   s    r   r[  zDocument._get_encoding>  r9  r   c                 ó   — | j         S r.   )ÚerrorHandlerr   s    r   Ú_get_errorHandlerzDocument._get_errorHandlerA  s   € ØÔ Ð r   c                 ó   — | j         S r.   )r   r   s    r   Ú_get_standalonezDocument._get_standaloneD  r5   r   c                 ó   — | j         S r.   )ÚstrictErrorCheckingr   s    r   Ú_get_strictErrorCheckingz!Document._get_strictErrorCheckingG  s   € ØÔ'Ð'r   c                 ó   — | j         S r.   r]  r   s    r   r^  zDocument._get_versionJ  rì   r   c                 ó¢  — |j         | j        vr>t          j                             t          |¦  «        ›dt          | ¦  «        ›�¦  «        ‚|j        �|j                             |¦  «         |j         t          j	        k    r3|  
                    ¦   «         rt          j                             d¦  «        ‚t                               | |¦  «        S )Nr>   z two document elements disallowed)r%   rC   rD   rE   rF   rG   rH   rI   r   rf   Ú_get_documentElementrJ   rR  s     r   rJ   zDocument.appendChildM  sÀ   € ØŒ= Ô 6Ð6Ð6Ý”'×-Ò-Ý.2°4©j¬j¨j¨j½$¸t¹*¼*¸*ÐEñGô Gð GàŒ?Ð&ð ŒO×'Ò'¨Ñ-Ô-Ð-àŒ=�DÔ-Ò-Ð-Ø×(Ò(Ñ*Ô*ð .å”'×-Ò-Ø2ñ4ô 4ð 4å×Ò  dÑ+Ô+Ð+r   c                 óà   — 	 | j                              |¦  «         n,# t          $ r t          j                             ¦   «         ‚w xY wd x|_        |_        d |_        | j	        |u rd | _	        |S r.   )
r0   r^   rL   rD   rE   rM   rQ   rR   rH   ÚdocumentElementr_   s     r   rI   zDocument.removeChild]  s‚   € ð	(ØŒO×"Ò" 8Ñ,Ô,Ð,Ð,øÝð 	(ð 	(ð 	(Ý”'×%Ò%Ñ'Ô'Ð'ð	(øøøà:>Ð>ˆÔ˜xÔ7Ø"ˆÔØÔ 8Ð+Ð+Ø#'ˆDÔ àˆr`   c                 óL   — | j         D ]}|j        t          j        k    r|c S Œd S r.   )r0   r%   r   rf   rR  s     r   r§  zDocument._get_documentElementi  s;   € Ø”Oð 	ð 	ˆDØŒ}¥Ô 1Ò1Ð1Ø���ð 2ð	ð 	r   c                 óˆ   — | j         � | j                              ¦   «          d | _         t                               | ¦  «         d S r.   )ru  rd   r   r   s    r   rd   zDocument.unlinkn  s=   € ØŒ<Ð#ØŒL×ÒÑ!Ô!Ð!ØˆDŒLÝ�Š�DÑÔÐÐÐr   c                 ó  — |sd S | j                              d d d ¦  «        }| j        |_        | j        |_        | j        |_        | j        D ]”}t          |||¦  «        }|j                             |¦  «        sJ ‚|j         	                    |¦  «         |j
        t          j        k    r
|j        �J ‚n%|j
        t          j        k    r|j        �J ‚||_        ||_        Œ•|                      t$          j        j        j        | |¦  «         |S r.   )rp   rw  r   r   rt   r0   rk   rl   r{   re   r%   r   r&   r©  rS  ru  rH   r“   rD   rE   rF  rG  )r   rm   rL  rK  Ú
childclones        r   rn   zDocument.cloneNodet  s  € Øð 	Ø�4ØÔ#×2Ò2°4¸¸tÑDÔDˆØœˆŒØœ?ˆÔØœˆŒØ”ð 		*ð 		*ˆAÝ$ Q¨¨eÑ4Ô4ˆJØÔ+×6Ò6°uÑ=Ô=Ð=Ð=Ð=ØÔ×#Ò# JÑ/Ô/Ð/ØÔ"¥dÔ&8Ò8Ð8ØÔ,Ð4Ð4Ð4Ð4ØÔ$­Ô(?Ò?Ð?Ø”}Ð,Ð,Ð,Ø *�”Ø$)ˆJÔ!Ð!Ø×$Ò$¥S¤WÔ%<Ô%HØ%)¨5ñ	2ô 	2ð 	2àˆr   c                 ó0   — t          ¦   «         }| |_        |S r.   )rÀ   rl   )r   r‰   s     r   ÚcreateDocumentFragmentzDocument.createDocumentFragment‰  s   € ÝÑÔˆØˆŒØˆr   c                 ó2   — t          |¦  «        }| |_        |S r.   )rm  rl   )r   r·   rN  s      r   ÚcreateElementzDocument.createElementŽ  s   € Ý�GÑÔˆØˆŒØˆr   c                 ó†   — t          |t          ¦  «        st          d¦  «        ‚t          ¦   «         }||_        | |_        |S ©Nznode contents must be a string)r  r   r?  rÓ   rc   rl   )r   rc   Úts      r   ÚcreateTextNodezDocument.createTextNode“  s?   € Ý˜$¥Ñ$Ô$ð 	>ÝÐ<Ñ=Ô=Ð=Ý‰FŒFˆØˆŒØˆŒØˆr   c                 ó†   — t          |t          ¦  «        st          d¦  «        ‚t          ¦   «         }||_        | |_        |S r³  )r  r   r?  r  rc   rl   ©r   rc   rU   s      r   ÚcreateCDATASectionzDocument.createCDATASection›  s?   € Ý˜$¥Ñ$Ô$ð 	>ÝÐ<Ñ=Ô=Ð=Ý‰NŒNˆØˆŒØˆŒØˆr   c                 ó2   — t          |¦  «        }| |_        |S r.   )r  rl   r·  s      r   ÚcreateCommentzDocument.createComment£  s   € Ý�D‰MŒMˆØˆŒØˆr   c                 ó4   — t          ||¦  «        }| |_        |S r.   )rÈ  rl   )r   rÊ  rc   Úps       r   ÚcreateProcessingInstructionz$Document.createProcessingInstruction¨  s   € Ý! &¨$Ñ/Ô/ˆØˆŒØˆr   c                 ó@   — t          |¦  «        }| |_        d|_        |S r   )rÌ   rl   rã   )r   rÔ   Úas      r   ÚcreateAttributezDocument.createAttribute­  s    € Ý�‰KŒKˆØˆŒØˆŒØˆr   c                 óZ   — t          |¦  «        \  }}t          |||¦  «        }| |_        |S r.   )r€  rm  rl   )r   r¡   r‚  r¢   r¦   rN  s         r   rt  zDocument.createElementNS³  s1   € Ý$ ]Ñ3Ô3Ñˆ�	Ý�M <°Ñ8Ô8ˆØˆŒØˆr   c                 ój   — t          |¦  «        \  }}t          ||||¦  «        }| |_        d|_        |S r   )r€  rÌ   rl   rã   )r   r¡   r‚  r¢   r¦   r¿  s         r   ÚcreateAttributeNSzDocument.createAttributeNS¹  s:   € Ý$ ]Ñ3Ô3Ñˆ�	Ý� ¨i¸Ñ@Ô@ˆØˆŒØˆŒØˆr   c                 ó8   — t          ||||¦  «        }| |_        |S r.   )rI  rl   )r   rº   r3  r4  rJ  rN  s         r   Ú_create_entityzDocument._create_entityÃ  s!   € Ý�4˜ 8¨\Ñ:Ô:ˆØˆŒØˆr   c                 ó6   — t          |||¦  «        }| |_        |S r.   )rH  rl   )r   rº   r3  r4  rK  s        r   Ú_create_notationzDocument._create_notationÈ  s   € Ý�T˜8 XÑ.Ô.ˆØˆŒØˆr   c                 ó†  — || j         v r| j         |         S | j        s	| j        sd S | j        }|€| j        g}|| _        n|sd S d }|�rx|                     ¦   «         }|                     d„ |j        D ¦   «         ¦  «         |                      |¦  «        }|rÝ|j	         
                    ¦   «         D ]Â}|j        rG|                     |j        |j        ¦  «        r&|| j         |j        <   |j        |k    r|}ŒF|j        s ntŒP|                     |j        ¦  «        r'|| j         |j        <   |j        |k    r|}Œ‡|j        s n3Œ‘|j        r*|| j         |j        <   |j        |k    r|}Œµ|j        dk    r nŒÃnF|j        r?|j	         
                    ¦   «         D ]%}|j        r|| j         |j        <   |j        |k    r|}Œ&|�n|�°x|S )Nc                 ó.   — g | ]}|j         t          v ¯|‘ŒS r   )r%   rN   )Ú.0ri   s     r   ú
<listcomp>z+Document.getElementById.<locals>.<listcomp>á  s2   € ð Ið Ið I EØ"œ^Õ/GÐGÐGð  ØGÐGÐGr   r?   )r�  r“  rø   r‘  r©  ÚpopÚextendr0   rû   rÅ   r  r¡   rü   r¦   rã   r÷   rý   rº   rö   )r   r+  ÚstackÚresultrV   rÿ   rv  s          r   ÚgetElementByIdzDocument.getElementByIdÍ  sN  € Ø�”ÐÐØ”> "Ô%Ð%Ø”ð 	 4Ô#7ð 	Ø�4àÔ%ˆØˆ=àÔ)Ð*ˆEØ$)ˆDÔ!Ð!Øð 	ð �4àˆØñ &	Ø—9’9‘;”;ˆDà�LŠLð Ið I¨T¬_ð Iñ Iô Iñ Jô Jð Jð ×&Ò& tÑ,Ô,ˆDØð *ð !œO×2Ò2Ñ4Ô4ð "ð "�DØÔ(ð "ØŸ;š; tÔ'8¸$¼.ÑIÔIð &Ø9=˜DœN¨4¬:Ñ6Ø#œz¨RÒ/Ð/Ø)-  Ø%)Ô%9ð &Ø % øØŸš 4¤9Ñ-Ô-ð "Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜F˜FØ!%Ô!5ð "Ø!˜Eð"àœð "Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜F˜FØ!Ô1°QÒ6Ð6Ø!˜EøøØÔ%ð *Ø œO×2Ò2Ñ4Ô4ð *ð *�DØ”{ð *Ø59˜œ t¤zÑ2Øœ:¨Ò+Ð+Ø%)˜FøØÐ!ØðM ñ &	ðN ˆr   c                 ó<   — t          | |t          ¦   «         ¦  «        S r.   rš  rC  s     r   r›  zDocument.getElementsByTagName  s   € Ý.¨t°T½8¹:¼:ÑFÔFÐFr   c                 ó>   — t          | ||t          ¦   «         ¦  «        S r.   r�  rF  s      r   rž  zDocument.getElementsByTagNameNS
  rŸ  r   c                 ó8   — | j                              ||¦  «        S r.   )rp   rq   rr   s      r   ru   zDocument.isSupported  s   € ØÔ"×-Ò-¨g°wÑ?Ô?Ð?r   c                 óô   — |j         t          j        k    rt          j                             d¦  «        ‚|j         t          j        k    rt          j                             d¦  «        ‚t          ||| ¦  «        S )Nzcannot import document nodesz!cannot import document type nodes)r%   r   r&   rD   rE   ÚNotSupportedErrrS  rk   )r   rV   rm   s      r   Ú
importNodezDocument.importNode  sb   € ØŒ=�DÔ.Ò.Ð.Ý”'×)Ò)Ð*HÑIÔIÐIØŒ]�dÔ5Ò5Ð5Ý”'×)Ò)Ð*MÑNÔNÐNÝ˜4  tÑ,Ô,Ð,r   r   c                 ó  — g }|r|                      d|› d�¦  «         |�|                      d|rdnd› d�¦  «         |                     dd                     |¦  «        › d|› �¦  «         | j        D ]}|                     ||||¦  «         Œd S )	Nz
encoding="r°   zstandalone="ÚyesÚnoz<?xml version="1.0" re  r×  )re   r³   r  r0   r'   )	r   r,   r*   r£  r+   r   r   ÚdeclarationsrV   s	            r   r'   zDocument.writexml  sÃ   € àˆàð 	:Ø×ÒÐ 8¨XÐ 8Ð 8Ð 8Ñ9Ô9Ð9ØÐ!Ø×ÒÐ O¸
Ð/L¨u¨uÈÐ OÐ OÐ OÑPÔPÐPà�ŠÐL¨C¯HªH°\Ñ,BÔ,BÐLÐLÀdÐLÐLÑMÔMÐMà”Oð 	;ð 	;ˆDØ�MŠM˜& &¨)°TÑ:Ô:Ð:Ð:ð	;ð 	;r   c                 ó´  — |j         | ur*t          j                             d| ›d|j         ›�¦  «        ‚|j        t
          j        t
          j        fvrt          j                             d¦  «        ‚|t          k    r¬d|v rT| 
                    dd¦  «        \  }}|dk    r4|t          j        j        k    rt          j                             d¦  «        ‚nX|dk    rI|t          j        j        k    r4|j        t
          j        k    rt          j                             d¦  «        ‚d }|}nd }d }|j        t
          j        k    r&|j        }|�|j        }|                     |¦  «         nd }||_        ||_        ||_        ||_        |j        t
          j        k    r||_        n5||_        |�,|                     |¦  «         |r|                     |¦  «         |S )	Nz3cannot rename nodes from other documents;
expected z,
found z8renameNode() only applies to element and attribute nodesr×   r?   rî   zillegal use of 'xmlns' prefixz$illegal use of the 'xmlns' attribute)rl   rD   rE   rq  r%   r   rf   r  rÕ  r   rØ   r   rï   rÑ   rö   rŠ  r¢   rÐ   r¡   rÃ   r·   rº   r}  r©  )r   rK  r¡   rº   r¢   r¦   rµ  Úis_ids           r   Ú
renameNodezDocument.renameNode(  sû  € ØŒ? $Ð&Ð&Ý”'×*Ò*Ð*à,0¨D¨D°!´/°/ðCñDô Dð Dð Œ:�dÔ/µÔ1DÐEÐEÐEÝ”'×)Ò)ØJñLô Lð Là�?Ò*Ð*Ø�dˆ{ˆ{Ø$(§J¢J¨s°AÑ$6Ô$6Ñ!�˜	Ø Ò'Ð'Ø&­#¬'Ô*AÒAÐAÝœ'×.Ò.Ø7ñ9ô 9ð 9øð ˜g’o�oØ&­#¬'Ô*AÒAÐAØœ*­Ô(;Ò;Ð;Ýœ'×.Ò.Ø>ñ@ô @ð @à�Ø �	�	àˆFØˆIØŒ:�Ô,Ò,Ð,Ø”nˆGØÐ"Øœ�Ø×+Ò+¨AÑ.Ô.Ð.øàˆGØˆŒØ ˆŒØ%ˆŒØˆŒ
ØŒ:�Ô*Ò*Ð*ØˆAŒIˆIð ˆAŒFØÐ"Ø×(Ò(¨Ñ+Ô+Ð+Øð 2Ø×.Ò.¨qÑ1Ô1Ð1ð ˆr   )r   r   r   NN)=rž   rŸ   r    r  r   rf   rÈ   rÉ   rS  rC   rh  rp   r&   r%   rÃ   rÄ   rÅ   rH   rR   rQ   rK  r   r   rt   r£  rž  rš  rø   rÂ   rû   rX  r˜  r›  r[  rŸ  r¡  r¤  r^  rJ   rI   r§  rd   rn   r¯  r±  rµ  r¸  rº  r½  rÀ  rt  rÃ  rÅ  rÇ  rÐ  r›  rž  ru   rÖ  r'   rÝ  r   r   r   r|  r|  
  s¡  € € € € € ð@€IàÔ*¨DÔ,LØÔ*¨DÔ,CðEÐð 'Ð&Ñ(Ô(€NØÔ!€HØ€HØ€IØ€JØ€JØ$(Ð(€O�kð
 €NØ€HØ€JØ€GØÐØ€LØ€Kà€Oð%ð %ð %ð(ð (ð (ð#ð #ð #ðð ð ð ð  ð  ðð ð ð!ð !ð !ðð ð ð(ð (ð (ðð ð ð,ð ,ð ,ð 
ð 
ð 
ðð ð ð
ð ð ðð ð ð*ð ð ð
ð ð ð
ð ð ðð ð ðð ð ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ð
ð ð ð
8ð 8ð 8ðtGð Gð Gð7ð 7ð 7ð@ð @ð @ð-ð -ð -ð KOØ ð;ð ;ð ;ð ;ð 3ð 3ð 3ð 3ð 3r   r|  r©  z#Top-level element of this document.c                 ó	  — | j                              |¦  «        rt          j        j        j        }nt          j        j        j        }| j        t          j	        k    rÂ| 
                    | j        | j        ¦  «        }| j                             ¦   «         D ]T}|                     |j        |j        |j        ¦  «         |                     |j        |j        ¦  «        }|j        |_        ŒU|r0| j        D ](}t+          |||¦  «        }|                     |¦  «         Œ)�nG| j        t          j        k    rH|                     ¦   «         }|r0| j        D ](}t+          |||¦  «        }|                     |¦  «         Œ)�nê| j        t          j        k    r|                     | j        ¦  «        }�n¹| j        t          j        k    r|                     | j        ¦  «        }�nˆ| j        t          j        k    r"|                     | j         | j        ¦  «        }�nQ| j        t          j!        k    r| "                    | j        ¦  «        }�n | j        t          j#        k    r5| $                    | j        | j        ¦  «        }d|_        | j        |_        �nÖ| j        t          j%        k    �r‘| j         |usJ ‚t          j        j        j        }|j&         '                    | j(        | j)        | j*        ¦  «        }||_         |�r:g |j+        _,        g |j-        _,        | j-        j,        D ]o}	t]          |	j        |	j)        |	j*        ¦  «        }
||
_         |j-        j,         /                    |
¦  «         ta          |	d¦  «        r|	 1                    ||	|
¦  «         Œp| j+        j,        D ]™}te          |j        |j)        |j*        |j3        ¦  «        }|j4        |_4        |j5        |_5        |j6        |_6        ||_         |j+        j,         /                    |¦  «         ta          |d¦  «        r| 1                    |||¦  «         Œšn/t          j         7                    dtq          | ¦  «        z  ¦  «        ‚ta          | d¦  «        r|  1                    || |¦  «         |S )zo
    Clone a node and give it the new owner document.
    Called by Node.cloneNode and Document.importNode
    Tr“   zCannot clone node %s)9rl   r{   rD   rE   rF  rG  ÚNODE_IMPORTEDr%   r   rf   rt  r¡   rÃ   rÅ   r  r„  rã   r�  r¦   rÛ   r0   rk   rJ   r@   r¯  rb   rµ  rc   rÆ   r¸  rÈ   r½  rÊ  rÉ   rº  r  rÃ  rS  rp   ry  rº   r3  r4  r?  r  r@  rH  re   rŒ   r“   rI  rJ  rK  r   rt   rÕ  rG   )rV   rm   ÚnewOwnerDocumentr�   rL  rv  r¿  ri   rU   rK  rM  rN  rO  s                r   rk   rk   a  sK  € ð
 Ô×$Ò$Ð%5Ñ6Ô6ð :Ý”GÔ+Ô7ˆ	ˆ	å”GÔ+Ô9ˆ	Ø„}�Ô)Ò)Ð)Ø ×0Ò0°Ô1BØ15´ñ@ô @ˆà”O×*Ò*Ñ,Ô,ð 	)ð 	)ˆDØ× Ò  Ô!2°D´MÀ4Ä:ÑNÔNÐNØ×(Ò(¨Ô):¸D¼NÑKÔKˆAØœ.ˆAŒKˆKàð 	%Øœð %ð %�Ý  tÐ-=Ñ>Ô>�Ø×!Ò! !Ñ$Ô$Ð$Ð$ùà	Œ�$Ô5Ò	5Ð	5Ø ×7Ò7Ñ9Ô9ˆØð 	%Øœð %ð %�Ý  tÐ-=Ñ>Ô>�Ø×!Ò! !Ñ$Ô$Ð$Ð$ùà	Œ�$œ.Ò	(Ð	(Ø ×/Ò/°´	Ñ:Ô:ˆ‰Ø	Œ�$Ô1Ò	1Ð	1Ø ×3Ò3°D´IÑ>Ô>ˆ‰Ø	Œ�$Ô:Ò	:Ð	:Ø ×<Ò<¸T¼[Ø=A¼YñHô Hˆ‰à	Œ�$Ô+Ò	+Ð	+Ø ×.Ò.¨t¬yÑ9Ô9ˆ‰Ø	Œ�$Ô-Ò	-Ð	-Ø ×2Ò2°4Ô3DØ37´=ñBô BˆàˆŒØ”jˆŒ‰Ø	Œ�$Ô1Ò	1Ñ	1ØÔ!Ð)9Ð9Ð9Ð9Ð9Ý”GÔ+Ô9ˆ	Ø Ô/×BÒBØŒI�t”} d¤mñ5ô 5ˆà.ˆÔØñ 	DØ"$ˆEŒNÔØ#%ˆEŒOÔ Ø”^Ô(ð Fð F�Ý# A¤J°´
¸A¼JÑGÔG�Ø)9�Ô&Ø”Ô$×+Ò+¨HÑ5Ô5Ð5Ý˜1Ð7Ñ8Ô8ð FØ×-Ò-¨i¸¸HÑEÔEÐEøØ”]Ô'ð 	Dð 	D�Ý ¤
¨A¬J¸¼
Ø !¤ñ0ô 0�à()Ô(8�Ô%Ø"#¤*�”Ø!"¤�”Ø'7�Ô$Ø”Ô#×*Ò*¨6Ñ2Ô2Ð2Ý˜1Ð7Ñ8Ô8ð DØ×-Ò-¨i¸¸FÑCÔCÐCøøõ
 Œg×%Ò%Ð&<½tÀD¹z¼zÑ&IÑJÔJÐJõ
 ˆtÐ.Ñ/Ô/ð =Ø×$Ò$ Y°°eÑ<Ô<Ð<Ø€Lr   c                 ól   — |                       dd¦  «        }t          |¦  «        dk    r|S d |d         fS )Nr×   r?   é   r   )rØ   r  )r‚  Úfieldss     r   r€  r€  ³  s<   € Ø× Ò   aÑ(Ô(€FÝ
ˆ6�{„{�aÒÐØˆà�f˜Q”iÐ Ð r   c                 ó–   —  | |i |¤Ž}|                      ¦   «         \  }}|                     |¦  «         |                     ¦   «          |S r.   )ÚgetEventÚ
expandNoder�  )ÚfuncÚargsÚkwargsÚeventsÚtoktypeÚrootNodes         r   Ú_do_pulldom_parserí  »  sP   € ØˆT�4Ð"˜6Ð"Ð"€FØŸšÑ)Ô)Ñ€GˆXØ
×Ò�hÑÔÐØ
‡L‚L�N„N€NØ€Or   c                 ó€   — |€|sddl m} |                     | ¦  «        S ddl m} t	          |j        | f||dœ¦  «        S )z3Parse a file into a DOM by filename or file object.Nr   ©Úexpatbuilder©Úpulldom)ÚparserÚbufsize)Úxml.domrð  Úparserò  rí  )Úfileró  rô  rð  rò  s        r   rö  rö  Â  sh   € à€~˜g€~Ø(Ð(Ð(Ð(Ð(Ð(Ø×!Ò! $Ñ'Ô'Ð'à#Ð#Ð#Ð#Ð#Ð#Ý  ¤°°Ø¨'Ð2Ð2ñ4ô 4ð 	4r   c                 óz   — |€ddl m} |                     | ¦  «        S ddl m} t	          |j        | fd|i¦  «        S )z&Parse a file into a DOM from a string.Nr   rï  rñ  ró  )rõ  rð  ÚparseStringrò  rí  )Ústringró  rð  rò  s       r   rù  rù  Ì  sb   € à€~Ø(Ð(Ð(Ð(Ð(Ð(Ø×'Ò'¨Ñ/Ô/Ð/à#Ð#Ð#Ð#Ð#Ð#Ý  Ô!4°v°iØ"*¨FÐ!3ñ5ô 5ð 	5r   c                 óÆ   — | rTt          | t          ¦  «        rt          j        | ¦  «        } | D ](\  }}t          j                             ||¦  «        s d S Œ)t          j        S r.   )r  r   r   Ú_parse_feature_stringr|  rp   rq   )ÚfeaturesÚfÚvs      r   ÚgetDOMImplementationr   Ö  so   € Øð Ý�h¥Ñ$Ô$ð 	>ÝÔ3°HÑ=Ô=ˆHØð 	ð 	‰DˆAˆqÝÔ*×5Ò5°a¸Ñ;Ô;ð Ø�t�tðåÔ"Ð"r   r�   r.   )7r\  r!   rõ  rD   r   r   r   r   Úxml.dom.minicompatÚxml.dom.xmlbuilderr   r	   rE   r   rf   rÇ   rN   ÚdefpropertyrY   r¬   r´   r¸   r½   rÀ   rÌ   Úobjectr  ÚAttributeListr`  r  rm  r‹  r·  rÈ  rÚ  rÓ   r	  r¯  r  r  r  r1  r=  rI  rH  rh  r~  rO   r|  rk   r€  rí  rö  rù  r   r   r   r   ú<module>r     s  ððð ð" 
€	€	€	Ø €€€à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ  Ð  Ð  Ð  Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ð  œGœLÔ5ØœGœLÔ>ð@Ð ðtð tð tð tð tˆ3Œ7Œ<ñ tô tð tðl €ˆD�,Ð$@Ð AÑ AÔ AÐ AØ €ˆD�+Ð$?Ð @Ñ @Ô @Ð @Ø €ˆD�+Ð$HÐ IÑ IÔ IÐ Iðð ð ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ð %ð %�tñ %ô %ð %ð$y8ð y8ð y8ð y8ð y8ˆ4ñ y8ô y8ð y8ðv €ˆD�&Ð$FÐ GÑ GÔ GÐ GØ €ˆD�+Ð$MÐ NÑ NÔ NÐ NØ €ˆD�,Ð$EÐ FÑ FÔ FÐ Fða?ð a?ð a?ð a?ð a?�6ñ a?ô a?ð a?ðF €ˆL˜(Ø6ð8ñ 8ô 8ð 8ð €ðð ð ð ð ˆvñ ô ð ð( ˆ8�D˜$ÑÔ€ðL"ð L"ð L"ð L"ð L"ˆdñ L"ô L"ð L"ð\ €ˆG�\Ø<ð>ñ >ô >ð >à €ˆG�[Ø7ð9ñ 9ô 9ð 9ð	 ð 	 ð 	 ð&;ð &;ð &;ð &;ð &;ñ &;ô &;ð &;ðRNð Nð Nð Nð N˜I tñ Nô Nð Nð4ECð ECð ECð ECð EC�I˜tñ ECô ECð ECðN €ˆM˜8Ð)EÐ FÑ FÔ FÐ FðS+ð S+ð S+ð S+ð S+ˆ=ñ S+ô S+ð S+ðj €ˆDÐ0ð.ð/ñ /ô /ð /ð €ˆD�+Ø@ðBñ Bô Bð Bðð ð ðð ð ðBð Bð Bð Bð Bˆmñ Bô Bð Bð	3ð 	3ð 	3ð 	3ð 	3�4ñ 	3ô 	3ð 	3ð<ð <ð <ð <ð < Vñ <ô <ð <ð| €Ð*¨HØ8ð:ñ :ô :ð :ðð ð ð ð ñ ô ð ð:ð :ð :ð :ð :�:˜y¨$ñ :ô :ð :ðx&9ð &9ð &9ð &9ð &9ˆZ˜ñ &9ô &9ð &9ðP8ð 8ð 8ð 8ð 8ˆz˜9 dñ 8ô 8ð 8ðMð Mð Mð Mð MÐ+ñ Mô Mð Mð^(ð (ð (ð (ð (�&ñ (ô (ð (ðT2ð 2ð 2ðQð Qð Qð Qð Qˆt�Zñ Qô Qð Qðf
 €ˆHÐ'Ø5ð7ñ 7ô 7ð 7ðOð Oð Oðd!ð !ð !ðð ð ð4ð 4ð 4ð 4ð5ð 5ð 5ð 5ð#ð #ð #ð #ð #ð #r   