
    ^h$2                         S SK JrJrJr  S SKJr  S SKrS SKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  \R                  " S5      rSS jr\" \5      rg)    )absolute_importdivisionunicode_literals)	text_typeN)copy   )base   )	_ihatexml)	constants)
namespaces)moduleFactoryFactoryz{([^}]*)}(.*)c           
      l  ^ ^^^^^^^	^
^ T m	T	R                  S5      R                  m
 " U	4S jS[        R                  5      m " U	4S jST5      m " U4S jST5      m " U4S jS	T5      m " U4S
 jST5      mU
4S jmU	U
4S jn " UUUUUU UU4S jS[        R                  5      n[        5       $ )Nasdc                      > \ rS rSrSU 4S jjrS rS rS r\" \\5      r	S r
S r\" \\
5      rS	 rS
 r\" \\5      rS rS r\" \\5      rS rS rS rS rSS jrS rS rSrg) getETreeBuilder.<locals>.Element   Nc                 
  > Xl         X l        TR                  U R                  UU5      5      U l        Uc  [
        S   U R                   4U l        OU R                  U R                   4U l        S U l        / U l        / U l	        g )Nhtml)
_name
_namespaceElement_getETreeTag_elementr   	nameTupleparent_childNodes_flags)selfname	namespaceElementTrees      d/home/james-whalen/.local/lib/python3.13/site-packages/bleach/_vendor/html5lib/treebuilders/etree.py__init__)getETreeBuilder.<locals>.Element.__init__   sx    J'O'//0A0A$BK1M NDM !+F!3TZZ!?!%$**!<DK!DDK    c                 (    Uc  UnU$ SU< SU< 3nU$ )N{} )r   r    r!   	etree_tags       r#   r   -getETreeBuilder.<locals>.Element._getETreeTag%   s,      	 	 ! )248	r&   c                 z    Xl         U R                  U R                   U R                  5      U R                  l        g N)r   r   r   r   tag)r   r    s     r#   _setName)getETreeBuilder.<locals>.Element._setName,   s(    J $ 1 1$**doo NDMMr&   c                     U R                   $ r.   )r   r   s    r#   _getName)getETreeBuilder.<locals>.Element._getName0   s    ::r&   c                 z    Xl         U R                  U R                  U R                   5      U R                  l        g r.   )r   r   r   r   r/   )r   r!   s     r#   _setNamespace.getETreeBuilder.<locals>.Element._setNamespace5   s(    'O $ 1 1$**doo NDMMr&   c                     U R                   $ r.   )r   r3   s    r#   _getNamespace.getETreeBuilder.<locals>.Element._getNamespace9   s    ??"r&   c                 .    U R                   R                  $ r.   )r   attribr3   s    r#   _getAttributes/getETreeBuilder.<locals>.Element._getAttributes>   s    =='''r&   c                     U R                   R                  nUR                  5         U(       aF  UR                  5        H1  u  p4[	        U[
        5      (       a  SUS   < SUS   < 3nOUnXBU'   M3     g g )Nr(   r
   r)   r   )r   r=   clearitems
isinstancetuple)r   
attributes	el_attribkeyvaluer    s         r#   _setAttributes/getETreeBuilder.<locals>.Element._setAttributesA   se    ,,IOO #-"2"2"4JC!#u--+.q63q6:"&+dO #5 r&   c                     U R                   $ r.   )r   r3   s    r#   _getChildNodes/getETreeBuilder.<locals>.Element._getChildNodesP   s    ###r&   c                 d    U R                   S S 2	 / U l        U H  nU R                  U5        M     g r.   )r   r   insertChild)r   rH   elements      r#   _setChildNodes/getETreeBuilder.<locals>.Element._setChildNodesS   s.    a !D   ) !r&   c                 x    [        U R                  R                  =(       d    [        U R                  5      5      $ )z,Return true if the node has children or text)boolr   textlenr3   s    r#   
hasContent+getETreeBuilder.<locals>.Element.hasContent[   s%    **@c$--.@AAr&   c                     U R                   R                  U5        U R                  R                  UR                  5        Xl        g r.   )r   appendr   r   r   nodes     r#   appendChild,getETreeBuilder.<locals>.Element.appendChild_   s1    ##D)MM  /Kr&   c                     [        U R                  5      R                  UR                  5      nU R                  R                  X1R                  5        Xl        g r.   )listr   indexinsertr   )r   r\   refNodera   s       r#   insertBefore-getETreeBuilder.<locals>.Element.insertBefored   s<    '--g.>.>?EMM  6Kr&   c                     U R                   R                  U5        U R                  R                  UR                  5        S Ul        g r.   )r   remover   r   r[   s     r#   removeChild,getETreeBuilder.<locals>.Element.removeChildi   s3    ##D)MM  /DKr&   c                 >   [        U R                  5      (       dL  U R                  R                  (       d  SU R                  l        U R                  =R                  U-  sl        g UcU  U R                  S   R                  (       d  SU R                  S   l        U R                  S   =R                  U-  sl        g [	        U R                  5      nUR                  UR                  5      nUS:  a^  U R                  US-
     R                  (       d  SU R                  US-
     l        U R                  US-
     =R                  U-  sl        g U R                  R                  (       d  SU R                  l        U R                  =R                  U-  sl        g )N r   r   )rV   r   rU   tailr`   ra   )r   datard   childrenra   s        r#   
insertText+getETreeBuilder.<locals>.Element.insertTextn   s$   t}}%%}})))+DMM&""d*"%}}R(---/DMM"%*b!&&$.&  . |'<'<=19==3888:eai05MM%!),11T91==---/*MM&&$.&r&   c                     [        U 5      " U R                  U R                  5      nU R                  R                  (       a.  [        U R                  R                  5      UR                  l        U$ r.   )typer    r!   r   r=   r   )r   rP   s     r#   	cloneNode*getETreeBuilder.<locals>.Element.cloneNode   sI    4jDNN;G}}##*.t}}/C/C*D  'Nr&   c                    UR                   (       aA  UR                   S   R                  =R                  U R                  R                  -  sl        OvUR                  R                  (       d  SUR                  l        U R                  R                  b3  UR                  =R                  U R                  R                  -  sl        SU R                  l        [        R
                  R                  X5        g )Nrl   rk   )
childNodesr   rm   rU   r	   NodereparentChildren)r   	newParents     r#   ry   1getETreeBuilder.<locals>.Element.reparentChildren   s    ##$$R(1166$--:L:LL6 ))...0I&&+==%%1&&++t}}/A/AA+!#DMMII&&t7r&   )r   r   r   r   r   r   r   r.   )__name__
__module____qualname____firstlineno__r$   r   r0   r4   propertyr    r7   r:   r!   r>   rI   rE   rL   rQ   rw   rW   r]   rd   rh   rp   rt   ry   __static_attributes__r"   s   r#   r   r      s    			O	 (+	O	# ]M:		(	, nn=
	$	* nn=
	B	
	
	
	/.			8r&   r   c                   @   > \ rS rSrU 4S jrS rS r\" \\5      rSr	g) getETreeBuilder.<locals>.Comment   c                 \   > TR                  U5      U l        S U l        / U l        / U l        g r.   )Commentr   r   r   r   )r   rn   r"   s     r#   r$   )getETreeBuilder.<locals>.Comment.__init__   s-     (//5DMDK!DDKr&   c                 .    U R                   R                  $ r.   r   rU   r3   s    r#   _getData)getETreeBuilder.<locals>.Comment._getData   s    ==%%%r&   c                 $    XR                   l        g r.   r   r   rH   s     r#   _setData)getETreeBuilder.<locals>.Comment._setData   s    !&MMr&   )r   r   r   r   N)
r|   r}   r~   r   r$   r   r   r   rn   r   r   s   r#   r   r      s     		&	' (+r&   r   c                   ^   > \ rS rSrU 4S jrS rS r\" \\5      rS r	S r
\" \	\
5      rSrg)	%getETreeBuilder.<locals>.DocumentType   c                 b   > TR                  U S5        XR                  l        X l        X0l        g )N
<!DOCTYPE>)r$   r   rU   publicIdsystemId)r   r    r   r   r   s       r#   r$   .getETreeBuilder.<locals>.DocumentType.__init__   s'    T<0!%MM$M$Mr&   c                 :    U R                   R                  SS5      $ )Nr   rk   r   getr3   s    r#   _getPublicId2getETreeBuilder.<locals>.DocumentType._getPublicId       ==$$Z44r&   c                 D    Ub  U R                   R                  SU5        g g )Nr   r   setr   s     r#   _setPublicId2getETreeBuilder.<locals>.DocumentType._setPublicId   !     !!*e4 !r&   c                 :    U R                   R                  SS5      $ )Nr   rk   r   r3   s    r#   _getSystemId2getETreeBuilder.<locals>.DocumentType._getSystemId   r   r&   c                 D    Ub  U R                   R                  SU5        g g )Nr   r   r   s     r#   _setSystemId2getETreeBuilder.<locals>.DocumentType._setSystemId   r   r&   )r   r   N)r|   r}   r~   r   r$   r   r   r   r   r   r   r   r   r   s   r#   DocumentTyper      s8    	%	5	5 L,7	5	5 L,7r&   r   c                   "   > \ rS rSrU 4S jrSrg)!getETreeBuilder.<locals>.Document   c                 *   > TR                  U S5        g )NDOCUMENT_ROOTr$   r   r   s    r#   r$   *getETreeBuilder.<locals>.Document.__init__   s    T?3r&   r*   Nr|   r}   r~   r   r$   r   r   s   r#   Documentr      s    	4 	4r&   r   c                   "   > \ rS rSrU 4S jrSrg))getETreeBuilder.<locals>.DocumentFragment   c                 *   > TR                  U S5        g )NDOCUMENT_FRAGMENTr   r   s    r#   r$   2getETreeBuilder.<locals>.DocumentFragment.__init__   s    T#67r&   r*   Nr   r   s   r#   DocumentFragmentr      s    	8 	8r&   r   c                 T   >^^ / mSUUU4S jjmT" U S5        SR                  T5      $ )Nr   c           	        > [        U S5      (       d  U R                  5       n U R                  S:X  a  U R                  S5      (       d  U R                  S5      (       a^  U R                  S5      =(       d    SnU R                  S5      =(       d    SnTR	                  SU R
                  < SU< SU< S	35        GOTR	                  SU R
                  < S
35        GOU R                  S:X  a  TR	                  S5        U R
                  b*  TR	                  SSUS-   -  < SU R
                  < S35        U R                  b  [        S5      e[        U S5      (       a%  [        U R                  5      (       a  [        S5      eGOU R                  T:X  a)  TR	                  SSU-  < SU R
                  < S35        GO[        U R                  [        5      (       d,   S[        U R                  5      < SU R                  < 35       e[        R                  U R                  5      nUc  U R                  nO.UR                  5       u  pe[         R"                  U   nU< SU< 3nTR	                  SSU-  < SU< S
35        [        U S5      (       a  / nU R                  R%                  5        H`  u  pY[        R                  U5      nUb/  UR                  5       u  pe[         R"                  U   nU< SU< 3n
OUn
UR	                  X45        Mb     ['        U5       H(  u  pYTR	                  SSUS-   -  < U< SU	< S35        M*     U R
                  (       a*  TR	                  SSUS-   -  < SU R
                  < S35        US-  nU  H  nT" X5        M     U R                  (       a+  TR	                  SSUS-
  -  < SU R                  < S35        g g )Nr/   r   r   r   rk   
<!DOCTYPE z "" "">>r   z	#document| r
   "Document node cannot have tailr=   $Document node cannot have attributesz<!-- z -->zExpected unicode, got z, <=")hasattrgetrootr/   r   rZ   rU   rm   	TypeErrorrV   r=   rC   r   rs   
tag_regexpmatchgroupsr   prefixesrB   sorted)rP   indentr   r   nsmatchr    nsprefixrE   rH   attr_stringchildElementTreeCommentTypervserializeElements               r#   r   AgetETreeBuilder.<locals>.testSerializer.<locals>.serializeElement   s   7E**!//+{{l*;;z**gkk*.E.E&{{:6<"H&{{:6<"HII&||XxA B II?@/		+&<<+IISFQJ-?NO<<+#$DEE7H--#gnn2E2E#$JKK 66		cFlGLLIJ!'++y99 V6:7;;6GUV9$**7;;7?";;D&~~/HB&//3F&,d3D		sV|T:;7H--!#J'.~~';';'=","2"24"8".'.~~'7HB%.%7%7%;F5;T*BK*.K"));*>? (> (.j'9		#!2DdE"RS (:<<IISFQJ-?NOaKF  / !||		
);W\\JK r&   
)r   )join)rP   r   r   r   s    @@r#   testSerializer'getETreeBuilder.<locals>.testSerializer   s/    6	L 6	Ln 	!$yy}r&   c                 ~   >^^^ / m[         R                  " 5       mUUUUU4S jmT" U 5        SR                  T5      $ )z4Serialize an element and its child nodes to a stringc           
        > [        U TR                  5      (       a  U R                  5       n U R                  S:X  a  U R	                  S5      (       d  U R	                  S5      (       a^  U R	                  S5      =(       d    SnU R	                  S5      =(       d    SnT
R                  SU R                  < SU< SU< S35        GOT
R                  SU R                  < S	35        GOU R                  S
:X  a  U R                  b  T
R                  U R                  5        U R                  b  [        S5      e[        U S5      (       a%  [        U R                  5      (       a  [        S5      eU  H  nT" U5        M     GOIU R                  T:X  a"  T
R                  SU R                  < S35        GOU R                  (       d0  T
R                  ST	R                  U R                  5      < S	35        OySR                  U R                  R                  5        VVs/ s H  u  pET	R                  U5      < SU< S3PM      snn5      nT
R                  SU R                  < SU< S	35        U R                  (       a  T
R                  U R                  5        U  H  nT" U5        M     T
R                  SU R                  < S	35        U R                  (       a  T
R                  U R                  5        g g s  snnf )Nr   r   r   rk   r   z	 PUBLIC "r   r   r   r   r   r=   r   z<!--z-->r   r   r   r   z</)rC   r"   r   r/   r   rZ   rU   rm   r   r   rV   r=   fromXmlNamer   rB   )rP   r   r   r   r    rH   attrr"   r   filterr   r   s          r#   r   ;getETreeBuilder.<locals>.tostring.<locals>.serializeElement  s&   ';#:#:;;!//+{{l*;;z**gkk*.E.E&{{:6<"H&{{:6<"HII&||XxA B II?@/<<+IIgll+<<+#$DEE7H--#gnn2E2E#$JKK$E$U+ %  66		78 ~~II(:(:7;;(GIJ88+2>>+?+?+A%C+AKD **40%&9+A%C DD II7;;=><<IIgll+$E$U+ % 		W[[23||		',,' %Cs   %K9
rk   )r   InfosetFilterr   )rP   r   r   r   r"   r   s    @@@r#   tostring!getETreeBuilder.<locals>.tostring  s9    ((*+	( +	(Z 	!wwr{r&   c                   X   > \ rS rSr Yr Yr Yr Y r Yr Yr	U4S jr
U4S jrS rSrg)$getETreeBuilder.<locals>.TreeBuilderi<  c                    > T" U5      $ r.   r*   )r   rP   r   s     r#   r   3getETreeBuilder.<locals>.TreeBuilder.testSerializerD  s    !'**r&   c                   > T(       a  U R                   R                  $ U R                  b2  U R                   R                  R                  SU R                  -  5      $ U R                   R                  R                  S5      $ )Nz{%s}htmlr   )documentr   defaultNamespacefind)r   fullTrees    r#   getDocument0getETreeBuilder.<locals>.TreeBuilder.getDocumentG  sj    }}---((4==1166"T%:%::< <  ==1166v>>r&   c                 T    [         R                  R                  U 5      R                  $ r.   )r	   TreeBuildergetFragmentr   r3   s    r#   r   0getETreeBuilder.<locals>.TreeBuilder.getFragmentQ  s    ##//5>>>r&   r*   N)r|   r}   r~   r   documentClassdoctypeClasselementClasscommentClassfragmentClassimplementationr   r   r   r   )r   r   r   r   r   ElementTreeImplementationr   r   s   r#   r   r   <  s0     #(2	+	?	?r&   r   )r   r/   r	   rx   r   locals)r   r   r   r   r   r   r   r   r   r"   r   r   s   ``  @@@@@@@@r#   getETreeBuilderr     s    +K(007;;}8$)) }8~,' ,"8w 8247 487 8<|4l? ?d&& ?0 8Or&   )F)
__future__r   r   r   bleach.six_shimr   rer   rk   r	   r   r   r   _utilsr   compiler   r  getETreeModuler*   r&   r#   <module>r     sF    B B & 	     " )ZZ(
AH
 &o6r&   