Ë
    ¡ëiÀG  ã            	       ó°  — d Z dZ	 dZddlZd„ Z ej
                  ddddedd¬«      Zdddi fd„Z G d„ d	«      Z	 e	«       Z	d
Z
dZdZdZ ee«      ZdZg d¢Zd„ Zddefd„ZereZd„ ZdZd„ Zddefd„Zd„ Zdd„Zdd„Zedk(  r¹ ed¬«       ddlZddlZddlmZ ddlZ e«       Z dZ!ejD                  dd D ]j  Z#ejH                  jK                  e#«      s	 e&d«       Œ' e'e#«      5 Z(e(jS                  «       Z*ddd«        e&de#›d ee*«      › �«        ee*d¬«       e!dz  Z!Œl e!r e&d e«       e z
  d›d�«       yyy# e$ r dZY �Œw xY w# 1 sw Y   ŒVxY w) at  Very simple and fast XML parser, used for intra-paragraph text.

Devised by Aaron Watters in the bad old days before Python had fast
parsers available.  Constructs the lightest possible in-memory
representation; parses most files we have seen in pure python very
quickly.

The output structure is the same as the one produced by pyRXP,
our validating C-based parser, which was written later.  It will
use pyRXP if available.

This is used to parse intra-paragraph markup.

Example parse::

    <this type="xml">text <b>in</b> xml</this>

    ( "this",
      {"type": "xml"},
      [ "text ",
        ("b", None, ["in"], None),
        " xml"
        ]
       None )

    { 0: "this"
      "type": "xml"
      1: ["text ",
          {0: "b", 1:["in"]},
          " xml"]
    }

Ie, xml tag translates to a tuple:
 (name, dictofattributes, contentlist, miscellaneousinfo)

where miscellaneousinfo can be anything, (but defaults to None)
(with the intention of adding, eg, line number information)

special cases: name of "" means "top level, no containing tag".
Top level parse always looks like this::

    ("", list, None, None)

 contained text of None means <simple_tag/>

In order to support stuff like::

    <this></this><one></one>

AT THE MOMENT &amp; ETCETERA ARE IGNORED. THEY MUST BE PROCESSED
IN A POST-PROCESSING STEP.

PROLOGUES ARE NOT UNDERSTOOD.  OTHER STUFF IS PROBABLY MISSING.
é    Nc                 ó   — t        | «       y )N)Úprint)Úss    úW/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/lib/rparsexml.pyÚwarnCBr   >   s	   € Üˆa�ó    é   zstring input)ÚErrorOnValidityErrorsÚNoNoDTDWarningÚExpandCharacterEntitiesÚExpandGeneralEntitiesr   ÚsrcNameÚ
ReturnUTF8c                 ób   — |t         _        t        j                  | fi |¤Ž}|xr |xs dd |gd fS )NÚ )ÚpyRXP_parserÚeoCBÚparse)ÚxmlTextÚoneOutermostTagr   ÚentityReplacerÚ	parseOptsÚps         r   Úparsexmlr   I   s:   € Ø ŒÔÜ×Ñ˜wÑ3¨Ñ3ˆØÒ$ 1Ò:¨¨D°!°°TÐ(:Ð:r   c                   ó   — e Zd Zed„ «       Zy)ÚsmartDecodec                 óf   ‡— ddl mŠ ˆfd„}t        |«      t        j                  _         || «      S )Nr   )Údetectc                 ó`   •— t        | t        «      r| S  ‰| «      }| j                  |d   «      S )NÚencoding)Ú
isinstanceÚstrÚdecode)r   Úcddr   s     €r   Ú__call__z&smartDecode.__call__.<locals>.__call__T   s-   ø€ Ü˜!œCÔ ¨ (Ù˜“)ˆCØ—8‘8˜C 
™OÓ,Ð,r   )Úcharset_normalizerr   Ústaticmethodr   Ú	__class__r%   )r   r%   r   s     @r   r%   zsmartDecode.__call__Q   s*   ø€ å-ô	-ô *6°hÓ)?Œ×ÑÔ&Ù˜“Ðr   N)Ú__name__Ú
__module__Ú__qualname__r'   r%   © r   r   r   r   P   s   „ Øñó ñr   r   r   ú	<![CDATA[z]]>))z&lt;ú<)z&gt;ú>)z&amp;ú&c                 ó‚   — g }| D ]7  }d|v r t         D ]  \  }}|j                  ||«      }Œ |j                  |«       Œ9 |S )Nr0   )ÚreplacelistÚreplaceÚappend)ÚcontentListÚresultÚeÚoldÚnews        r   ÚunEscapeContentListr:   d   sS   € Ø€FØò ˆØ�!‰8Ü)ò (‘
��cØ—I‘I˜c 3Ó'‘ð(à�‰�aÕð	ð
 €Mr   c                 ó\   — t         rt        d«      ‚t        | |¬«      \  }}|r|d   d   S |S )z.official interface: discard unused cursor infoz)pyRXP not found, fallback parser disabled)r   é   r   )ÚRequirePyRXPÚImportErrorÚ	parsexml0)Úxmltextr   r   r   r6   Úcursors         r   ÚparsexmlSimplerB   m   s8   € åÜÐEÓFÐFÜ  ¸ÔGÑ€VˆVÙØ�a‰y˜‰|Ðàˆr   c                 óL   — t        | d«      j                  «       }t        |«      S )NÚr)ÚopenÚreadr   )ÚfilenameÚraws     r   Ú	parseFilerI   z   s!   € Ü
ˆx˜Ó
×
"Ñ
"Ó
$€CÜ�C‹=Ðr   c                 óö   — d}d}|€r| j                  d|«      }|dk  r	 |S |dz   }d}|D ]E  }t        |«      }| |||z    |k(  sŒd}| j                  d|«      }|dk  rt        d|z  «      ‚|dz   }ŒG |€d}|€Œr|S )zBskip any prologue found after cursor, return index of rest of text)z!DOCTYPEz?xmlz!--Nr.   r   r	   r/   zcan't close prologue %r)ÚfindÚlenÚ
ValueError)	ÚtextrA   Úprologue_elementsÚdoneÚopenbracketÚpastÚfoundr7   Úles	            r   Úskip_prologuerU   €   s¿   € ð 4ÐØ€DØ
ˆ,à—i‘i  VÓ,ˆØ�qŠ=˜%ð €Mð ˜1‰}ˆØˆØ"ò 	"ˆAÜ�Q“ˆBØ�D˜˜b™Ð! 1Ó$Ø�ØŸ™ 3¨Ó-�Ø˜!’8Ü$Ð%>ÀÑ%BÓCÐCØ ™‘ð	"ð ˆ=ØˆDð ‰,ð" €Mr   c                 ó¼  — t        | «      } t        }dx}x}}|�| j                  «       } |}| j                  d|«      }	| |	dz   |	dz    }
d}|	dk  r@|�!| |d g}|r ||«      }||||ft	        | «      fS t        dt        | ||dz    «      z  «      ‚g }|�t        x}}t        | |«      }�nU|	dk  rt        dt        | dd	 «      z  «      ‚|
d
k(  rj| |	|	dz    dk(  r_|	dz   }| j                  t        |«      }|dk  rt        dt        | ||dz    «      z  «      ‚t        }| || g}|t	        t        «      z   }d}�nÇ|
dk(  rs| |	|	dz    dk(  rh| j                  d|	dz   «      }||	k  rt        dt        | ||dz    «      z  «      ‚|dz   }| |   dk7  rt        dt        | ||dz    «      z  «      ‚d|dz   fS | j                  d|	«      }|dk  }|dz   }|	dz   }| || }d|vr%|d   dk(  r|dd }d}|j                  «       }|}|}�n d|v rpd}|s t	        |dz   j                  d«      «      dz  rd}|€H| j                  d|«      }|dz   }|dk  }| || }|s t	        |dz   j                  d«      «      dz  rd}|€ŒH|rt        dt        | |	|	dz    «      z  «      ‚|}| |dz
     dk(  r|dz
  }|dd }d}|j                  «       }|j                  d«      }|d   }|j                  «       }|d   }|}|d   }|d   dz   |d<   i x}}d}t	        |«      }||k  rñ||   }|dz   }|j                  «       }|d   dk7  rt        dt        |«      z   «      ‚d|dd vr5||kD  rt        dt        |«      z   «      ‚||   } |dz   }|›d| ›�}d|dd vrŒ5|j                  «       }|j                  «       }!|!d   }"|dt	        |"«        }#|#j                  «       }#	 |#d   }$|#d   }%|$|%cxk(  rdk(  sn |$|%cxk(  rd k(  rn n|#dd }#|#||<   |"}||k  rŒñ|�|}|��£| j                  d|«      }&|&|k  rQt        k(  r(d}| |d }'t	        | «      }|'�rj|j                  |'«       �nWt        d!|›d"t        | ||dz    «      ›�«      ‚| |&dz      dk(  rï| j                  d|&«      }(|(|&k  rt        d#t        | |&|&dz    «      z  «      ‚| |&dz   |( })|)j                  «       }*|*d   }+|+k7  ry| d| },t	        |,j                  d$«      «      }-| d| },t	        |,j                  d$«      «      }.t        d%|.›d&|-›d't        |«      ›d&t        |+«      ›d(t        | ||d)z    «      ›�
«      ‚| ||& }'|'r|j                  |'«       |(dz   }d}n=| ||& }'|'r|j                  |'«       t        | |&d|¬*«      \  }/}|/r|j                  |/«       |��Œ£|r
|r ||«      }||||f}0|0|fS #  t        dt        |#||!f«      z   «      ‚xY w)+z‰simple recursive descent xml parser...
       return (dictionary, endcharacter)
       special case: comment returns (None, endcharacter)Nr.   r	   é   r   zno tags at non-toplevel %sé   z.non top level entry should be at start tag: %sé
   z![é	   r-   zunclosed CDATA %sz!-é   z<!--z--zunterminated comment %sr<   r/   z*invalid comment: contains double dashes %sú=éÿÿÿÿú/ú"ú.zunclosed start tag %sz fz-attribute value must start with double quoteszunclosed value zattvalue,attentry,attlist=ú'zno close bracket for z found after zunclosed close tag %sú
z	at lines z...z close tag name doesn't match ú éd   )Ú
startingatÚtoplevelr   )r   ÚNONAMEÚstriprK   rL   rM   ÚreprrU   ÚCDATAENDMARKERÚCDATAMARKERÚsplitr4   r?   )1r@   re   rf   r   Ú
NameStringÚContentListÚAttDictÚ
ExtraStuffrA   ÚfirstbracketÚafterbracket2charÚ
docontentsÚLÚnameÚ
startcdataÚendcdataÚendcommentdashesÚ
endcommentÚclosebracketÚnocloseÚstartsearchÚpastfirstbracketÚ
tagcontentÚstopÚtaglistÚtaglist0Útaglist0listÚattributenameÚDÚtaglistindexÚlasttaglistindexÚattentryÚnextattentryÚattlistÚnextattnameÚattvalueÚfirstÚlastÚnextopenbracketÚ	remainderÚnextclosebracketÚclosetagcontentsÚclosetaglistÚ	closenameÚprefixÚ
endlinenumÚlinenumÚ	parsetreeÚts1                                                    r   r?   r?   ˜   s±  € ô ˜'Ó"€Gô €JØ)-Ð-€KÐ-�'˜JØÐð —-‘-“/ˆØ€Fà—<‘<  VÓ,€LØ ¨Q¡¨|¸A©~Ð>Ðð
 €JØ�A‚~ð Ð#à& v wÐ/Ð0�Ù!±ÀÓ1L ;Ø" G¨[¸*ÐEÄsÈ7Ã|ÐSÐSä Ð!=ÄÀWÈVÐTZÐ[]ÑT]ÐE^Ó@_Ñ!_Ó`Ð`à
€Að
 Ðä &Ð&ˆJ˜Ü" 7¨FÓ3ŠFà	�aŠÜÐMÔPTÐU\Ð]`Ð^`ÐUaÓPbÑbÓcÐcà	˜DÒ	  W¨\¸,Àq¹.Ð%IÈ;Ò%Vð & a™ˆJØ—|‘|¤N°JÓ?ˆHØ˜ŠzÜ Ð!4´t¸GÀFÈ6ÐRTÉ9Ð<UÓ7VÑ!VÓWÐWÜ$ˆJØ" :¨xÐ8Ð9ˆKØœc¤.Ó1Ñ1ˆFØŠJà	˜DÒ	  W¨\¸,Àq¹.Ð%IÈ6Ò%Qà&Ÿ|™|¨D°,¸q±.ÓAÐØ Ò,Ü Ð!:¼TÀ'È&ÐQWÐXZÑQZÐB[Ó=\Ñ!\Ó]Ð]Ø)¨!Ñ+ˆJØ�zÑ" CÒ'Ü Ð!MÔPTÐU\Ð]cÐdjÐkmÑdmÐUnÓPoÑ!oÓpÐpØ˜* Q™,Ð'Ð'ð
 #Ÿ<™<¨¨\Ó:ˆLØ" 1‘nˆGØ& q™.ˆKØ+¨A™~ÐØ Ð!1°,Ð?ˆJà˜*Ñ$Ø˜b‘> 3Ò&ð ",¨C¨R �JØ!%�JØ!×'Ñ'Ó)�Ø!�
Ø$’à˜*Ñ$à�Dá¤# z°#¡~×&<Ñ&<¸SÓ&AÓ"BÀAÒ"EØ˜Ø˜,Ø'.§|¡|°C¸Ó'E˜Ø&2°1¡n˜Ø".¨q¡.˜Ø%,Ð-=¸lÐ%K˜
á"¤c¨:°c©>×*@Ñ*@ÀÓ*EÓ&FÈÒ&IØ!"˜Dð ™,ñ Ü$Ð%<¼tÀGÈLÐYeÐfhÑYhÐDiÓ?jÑ%jÓkÐkØ$�ð ˜<¨™>Ñ*¨CÒ/à#/°¡>�LØ!+¨C¨R �JØ!%�Jà'×-Ñ-Ó/�
Ø$×*Ñ*¨3Ó/�ð # 1™:�Ø'Ÿ~™~Ó/�ð $ A‘�à!�
à ,¨RÑ 0�à% b™k¨$Ñ.�˜‘Ø Ð �˜!Ø �Ü#& w£<Ð à"Ð#3Ò3à& |Ñ4�HØ#/°¡>�LØ'Ÿ~™~Ó/�HØ ‘{ CÒ'Ü(Ð)XÔ[_Ð`hÓ[iÑ)iÓjÐjØ X¨a¨b \Ñ1à'Ð(8Ò8Ü",Ð->ÄÀhÃÑ-OÓ"PÐPØ'.¨|Ñ'<˜Ø'3°A¡~˜Ú.6¹Ð#E˜ð  X¨a¨b \Ò1ð  (Ÿ~™~Ó/�HØ&Ÿn™nÓ.�GØ")¨"¡+�KØ'Ð(:¬#¨kÓ*:Ð):Ð;�HØ'Ÿ~™~Ó/�HðjØ (¨¡˜°(¸2±,¨Tð ˜dÔ' CÔ'¨5°$Ô+;¸Õ+;Ø#+¨A¨b >˜à'/�A�mÑ$Ø$/�Mð7 #Ð#3Ó3ð: ÐàˆØ
Ñ
 Ø%Ÿl™l¨3°Ó7ˆOØ˜vÒ%àœ’<à#�JØ '¨¨Ð 0�IÜ  ›\�FÚ ØŸ™ Ö+å$ÒQUÔVZÐ[bÐciÐkqÐrtÑktÐ[uÔVvÐ%wÓxÐxà˜¨Ñ*Ñ+¨SÒ0à#*§<¡<°°_Ó#EÐ Ø# OÒ3Ü$Ð%<¼tÀGÈOÐ]lÐmoÑ]oÐDpÓ?qÑ%qÓrÐrØ#*¨?¸1Ñ+<Ð>NÐ#OÐ Ø/×5Ñ5Ó7�ð
 )¨™O�	à˜’?Ø$ W fÐ-�FÜ!$ V§\¡\°$Ó%7Ó!8�JØ$ [ jÐ1�FÜ! &§,¡,¨tÓ"4Ó5�GÝ$Ú¢
¬D°­J¼¸Y½ÌÈgÐV\Ð^dÐehÑ^hÐNiÔIjð&ló mð mà# F¨?Ð;�	Ùà—H‘H˜YÔ'Ø)¨!Ñ+�à!‘
ð $ F¨?Ð;�	ÙØ—H‘H˜YÔ'ô '0°ÀOÐ^bð  tBô  'CÑ#�˜FÙØ—H‘H˜YÔ'ði Ò
 ñt Ù©¸Ó)D˜;Ø	�W˜k¨:Ð6€AØˆvˆ;ÐøðQjÜ(Ð)EÄdÈHÐV^Ð_fÐKgÓFhÑ)hÓiÐiús   Ï
V? Ö?Wc           	      óØ  — t        | t        t        f«      r| S | \  }}}}|si }g }|j                  «       D ]&  }||   }|j	                  |›dt        |«      ›�«       Œ( dj                  |«      }|s|rt        d«      ‚|�bt        t        t        |«      «      }	dj                  |	«      }
|s|
S |
j                  d«      }ddj                  |«      z   }
d|›d|›d|
›d	|›d
�	S d|›d|›d�S )z!pretty printer mainly for testingr\   rc   zname missing with attributes???rb   z   z
   r.   z>
z
</r/   z/>)r!   r"   ÚbytesÚkeysr4   ri   ÚjoinrM   ÚlistÚmapÚpprettyprintrl   )Ú	parsedxmlru   ÚattdictÚtextlistÚextrar‰   ÚkÚvÚ
attributesÚtextlistpprintÚ
textpprintÚnllists               r   rŸ   rŸ   €  sö   € ä�)œS¤˜KÔ(ØÐØ'0Ñ$€Tˆ7�H˜eÙ˜B�GØ€GØ�\‰\‹^ò /ˆØ�A‰JˆØ�‰¢!¤T¨!¤WÐ-Õ.ð/ð —‘˜'Ó"€JÙ‘JÜÐ:Ó;Ð;ØÐäœc¤,°Ó9Ó:ˆØ—Y‘Y˜~Ó.ˆ
ÙØÐà×!Ñ! $Ó'ˆØ˜WŸ\™\¨&Ó1Ñ2‰
Ú'+ªZºÂTÐJÐJð ò šzÐ*Ð*r   c                 óÔ   — ddl m } ddlm}  |«       }t        | d¬«      }t        d |«       |z
  «       |dz  r ||«       |dz  r"t        d«       t	        |«      }t        |«       y y )	Nr   ©Útime)Úpprintr	   )r   ÚDONEr[   z============== reformatting)r¬   r­   rB   r   rŸ   )r   Údumpr¬   r­   Únowr„   r   s          r   Ú	testparser±   š  s^   € ÝÝÙ
‹&€CÜ�q¨Ô+€AÜ	ˆ&‘$“&˜‘*ÔØˆA‚vÙˆqŒ	àˆA‚vÜÐ+Ô,Ü˜‹OˆÜˆa�ð r   c                 ó   — t        d| ¬«       y )Na-  <this type="xml">text &lt;&gt;<b>in</b> <funnytag foo="bar"/> xml</this>
                 <!-- comment -->
                 <![CDATA[
                 <this type="xml">text <b>in</b> xml</this> ]]>
                 <tag with="<brackets in values>">just testing brackets feature</tag>
                 ©r¯   )r±   r³   s    r   Útestr´   ¨  s   € Üð ð
 ö r   Ú__main__r³   r«   z!!!!! no file at {f!r}zparsing z |t|=z	timed at z.2fz secs.)r   )+Ú__doc__r=   ÚsimpleparseÚpyRXPUr   ÚParserr   r   r>   r   rg   ÚNAMEKEYÚCONTENTSKEYrk   rL   ÚLENCDATAMARKERrj   r2   r:   rB   rI   ÚverboserU   r?   rŸ   r±   r´   r)   ÚsysÚosr¬   Ú	reportlabr°   ÚseenÚargvÚfÚpathÚisfiler   rE   Ú_frF   r˜   r,   r   r   ú<module>rÇ      sÒ  ðñ5ðn €ðà€KÛòà �6—=‘=Ø./Ø'(Ø01Ø./Ø!'Ø .Ø%&ô€Lð +,°ÀTÐTVó ;÷	ñ 	ñ ‹m€à	€Ø
€Ø€Ø€Ù�[Ó!€Ø€Ú<€òð -.°4ÐGZó ñ Ø€Hòð €òð0 #$¨aà*ófòP+ó4ó ð ˆZÒÙˆa…LßÝÛÙ
‹&€CØ€DØ�X‰X�a�bˆ\ò ˆØ�w‰w�~‰~˜aÔ ÙÐ*Õ+á�a“ð ˜BØ—G‘G“I�÷á�H˜Q˜E ¡s¨1£v hÐ/Ô0Ù�a˜QÕØ�A‰I‰Dðñ Ù�	™$›& ™* SÐ)¨Ð0Õ1ð ð! øðG ò ØƒKðú÷\ð ús   †*D> Ã&EÄ>E	ÅE	ÅE	