+
    ÂHàj—–  ã                  ó:  € R t ^ RIHt ^RIHt ^ RIHtHtHtH	t	 ^ RI
t
^ RIHu Ht ^ RIHt ]'       d   ^ RIHt R R ltR	t R
t Rt Rt Rt Rt Rt Rt Rt Rt Rt Rt Rt ]R,           t  Rt! ] t" ]!t# Rt$ Rt% Rt& Rt' Rt( Rt) R R lt* ! R  R!]	4      t+ ! R" R#4      t, ! R$ R%],4      t- ! R& R'],4      t. ! R( R)]-4      t/ ! R* R+]-4      t0 ! R, R-],4      t1 ! R. R/]-4      t2 ! R0 R1]14      t3 ! R2 R3]24      t4 ! R4 R5]-4      t5 ! R6 R7]14      t6 ! R8 R9]24      t7 ! R: R;]-4      t8 ! R< R=]-4      t9 ! R> R?]94      t: ! R@ RA]-4      t; ! RB RC];4      t< ! RD RE];4      t= ! RF RG]=4      t> ! RH RI]=4      t? ! RJ RK]?4      t@ ! RL RM]-4      tA ! RN RO]-4      tBR# )PaB  
In version 3.0, a new, more flexible inline processor was added, [`markdown.inlinepatterns.InlineProcessor`][].   The
original inline patterns, which inherit from [`markdown.inlinepatterns.Pattern`][] or one of its children are still
supported, though users are encouraged to migrate.

The new `InlineProcessor` provides two major enhancements to `Patterns`:

1. Inline Processors no longer need to match the entire block, so regular expressions no longer need to start with
  `r'^(.*?)'` and end with `r'(.*?)%'`. This runs faster. The returned [`Match`][re.Match] object will only contain
   what is explicitly matched in the pattern, and extension pattern groups now start with `m.group(1)`.

2.  The `handleMatch` method now takes an additional input called `data`, which is the entire block under analysis,
    not just what is matched with the specified pattern. The method now returns the element *and* the indexes relative
    to `data` that the return element is replacing (usually `m.start(0)` and `m.end(0)`).  If the boundaries are
    returned as `None`, it is assumed that the match did not take place, and nothing will be altered in `data`.

    This allows handling of more complex constructs than regular expressions can handle, e.g., matching nested
    brackets, and explicit control of the span "consumed" by the processor.

)Úannotations)Úutil)ÚTYPE_CHECKINGÚAnyÚ
CollectionÚ
NamedTupleN)Úentities)ÚMarkdownc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úmdr	   Úkwargsr   Úreturnzutil.Registry[InlineProcessor]© )Úformats   "Ú™/home/ubuntu/.hermes/installs/5f0a1ff4045d044e/environments/50f6b671e3f94b538e344231dfcb664f/venv/lib/python3.14/site-packages/markdown/inlinepatterns.pyÚ__annotate__r   5   s"   € ÷ *ñ *˜Xð *°ð *Ð9Wñ *ó    c                ó8  € \         P                  ! 4       pVP                  \        \        4      R^¾4       VP                  \        \        V 4      R^´4       VP                  \        \        V 4      R^ª4       VP                  \        \        V 4      R^ 4       VP                  \        \        V 4      R^–4       VP                  \        \        V 4      R^Œ4       VP                  \        \        V 4      R^‚4       VP                  \!        \        V 4      R^}4       VP                  \#        \$        V 4      R	^x4       VP                  \'        \(        V 4      R
^n4       VP                  \+        \,        R4      R^d4       VP                  \/        \0        V 4      R^Z4       VP                  \/        \2        V 4      R^P4       VP                  \5        \6        4      R^F4       VP                  \9        R4      R^<4       VP                  \;        R4      R^24       V# )aì  
Build the default set of inline patterns for Markdown.

The order in which processors and/or patterns are applied is very important - e.g. if we first replace
`http://.../` links with `<a>` tags and _then_ try to replace inline HTML, we would end up with a mess. So, we
apply the expressions in the following order:

* backticks and escaped characters have to be handled before everything else so that we can preempt any markdown
  patterns by escaping them;

* then we handle the various types of links (auto-links must be handled before inline HTML);

* then we handle inline HTML.  At this point we will simply replace all inline HTML strings with a placeholder
  and add the actual HTML to a stash;

* finally we apply strong, emphasis, etc.

ÚbacktickÚescapeÚ	referenceÚlinkÚ
image_linkÚimage_referenceÚshort_referenceÚshort_image_refÚautolinkÚautomailÚbrÚ	linebreakÚhtmlÚentityÚ
not_strongz\*Ú	em_strongÚ_Ú
em_strong2)r   ÚRegistryÚregisterÚBacktickInlineProcessorÚBACKTICK_REÚEscapeInlineProcessorÚ	ESCAPE_REÚReferenceInlineProcessorÚREFERENCE_REÚLinkInlineProcessorÚLINK_REÚImageInlineProcessorÚIMAGE_LINK_REÚImageReferenceInlineProcessorÚIMAGE_REFERENCE_REÚShortReferenceInlineProcessorÚ"ShortImageReferenceInlineProcessorÚAutolinkInlineProcessorÚAUTOLINK_REÚAutomailInlineProcessorÚAUTOMAIL_REÚSubstituteTagInlineProcessorÚLINE_BREAK_REÚHtmlInlineProcessorÚHTML_REÚ	ENTITY_REÚSimpleTextInlineProcessorÚNOT_STRONG_REÚAsteriskProcessorÚUnderscoreProcessor)r   r   ÚinlinePatternss   &, r   Úbuild_inlinepatternsrE   5   sÆ  € ô& —]’]“_€NØ×ÑÔ3´KÓ@À*ÈcÔRØ×ÑÔ1´)¸RÓ@À(ÈCÔPØ×ÑÔ4´\À2ÓFÈÐUXÔYØ×ÑÔ/´¸Ó<¸fÀcÔJØ×ÑÔ0´ÀÓCÀ\ÐSVÔWØ×ÑÜ%Ô&8¸"Ó=Ð?PÐRUôð ×ÑÜ%¤l°BÓ7Ð9JÈCôð ×ÑÜ*Ô+=¸rÓBÐDUÐWZôð ×ÑÔ3´KÀÓDÀjÐRUÔVØ×ÑÔ3´KÀÓDÀjÐRUÔVØ×ÑÔ8¼ÈÓMÈ{Ð\_Ô`Ø×ÑÔ/´¸Ó<¸fÀbÔIØ×ÑÔ/´	¸2Ó>ÀÈ"ÔMØ×ÑÔ5´mÓDÀlÐTVÔWØ×ÑÔ-¨eÓ4°kÀ2ÔFØ×ÑÔ/°Ó5°|ÀRÔHØÐr   z(?<!\!)z;(?:(?<!\\)((?:\\{2})+)(?=`+)|(?<!\\)(`+)(.+?)(?<!`)\2(?!`))z\\(.)z(\*)([^\*]+)\1z(\*{2})(.+?)\1z%(?<!\w)(_{2})(?!_)(.+?)(?<!_)\1(?!\w)z"(?<!\w)(_)(?!_)(.+?)(?<!_)\1(?!\w)z7(?<!\w)(\_)\1(?!\1)(.+?)(?<!\w)\1(?!\1)(.+?)\1{3}(?!\w)z(\*)\1{2}(.+?)\1(.*?)\1{2}z(_)\1{2}(.+?)\1(.*?)\1{2}z(\*)\1{2}(.+?)\1{2}(.*?)\1z(_)\1{2}(.+?)\1{2}(.*?)\1z&(\*)\1(?!\1)([^*]+?)\1(?!\1)(.+?)\1{3}z\[z\!\[z%((^|(?<=\s))(\*{1,3}|_{1,3})(?=\s|$))z+<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^<>]*)>z<([^<> !]+@[^@<> ]+)>z(<(\/?[a-zA-Z][^<>@ ]*( [^<>]*)?|!--(?:(?!<!--|-->).)*--|[?](?:(?!<[?]|[?]>).)*[?]|!\[CDATA\[(?:(?!<!\[CDATA\[|\]\]>).)*\]\])>)z-(&(?:\#[0-9]+|\#x[0-9a-fA-F]+|[a-zA-Z0-9]+);)z  \nc               ó    € V ^8„  d   QhRRRR/# )r   ÚstringÚstrr   r   )r   s   "r   r   r   ±   s   € ÷ ñ �Cð ˜Cñ r   c                óÈ   € V P                  R4      '       d   V P                  R4      '       g/   V P                  R4      '       d   V P                  R4      '       d   V ^R # V # )z#Remove quotes from around a string.Ú"Ú'éÿÿÿÿ)Ú
startswithÚendswith)rG   s   &r   ÚdequoterO   ±   sQ   € à	×	Ñ	˜3×	Ò	 F§O¡O°C×$8Ò$8Ø×Ñ˜#×Ò 6§?¡?°3×#7Ò#7Ø�a˜ˆ|Ðàˆr   c                  ó:   € ] tR t^ºt$ RtR]R&   R]R&   R]R&   RtR# )	ÚEmStrongItemzEmphasis/strong pattern item.úre.Pattern[str]ÚpatternrH   ÚbuilderÚtagsr   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__Ú__static_attributes__r   r   r   rQ   rQ   º   s   ‡ Ù'ØÓØƒLØ
‡Ir   rQ   c                  óŠ   € ] tR t^Åt$ Rt]! 4       tR]R&    R]R&   R]R&   RR	 R
 lltR R lt	R R lt
R R ltR R ltRtR# )ÚPatterna¹  
Base class that inline patterns subclass.

Inline patterns are handled by means of `Pattern` subclasses, one per regular expression.
Each pattern object uses a single regular expression and must support the following methods:
[`getCompiledRegExp`][markdown.inlinepatterns.Pattern.getCompiledRegExp] and
[`handleMatch`][markdown.inlinepatterns.Pattern.handleMatch].

All the regular expressions used by `Pattern` subclasses must capture the whole block.  For this
reason, they all start with `^(.*)` and end with `(.*)!`.  When passing a regular expression on
class initialization, the `^(.*)` and `(.*)!` are added automatically and the regular expression
is pre-compiled.

It is strongly suggested that the newer style [`markdown.inlinepatterns.InlineProcessor`][] that
use a more efficient and flexible search approach be used instead. However, the older style
`Pattern` remains for backward compatibility with many existing third-party extensions.

zCollection[str]ÚANCESTOR_EXCLUDESrR   Úcompiled_reúMarkdown | Noner   Nc               ó    € V ^8„  d   QhRRRR/# ©r   rS   rH   r   ra   r   )r   s   "r   r   ÚPattern.__annotate__â   ó   € ÷ ñ  ð ¨ñ r   c                óª   € Wn         \        P                  ! RV,          \        P                  \        P                  ,          4      V n        W n        R# )zñ
Create an instant of an inline pattern.

Arguments:
    pattern: A regular expression that matches a pattern.
    md: An optional pointer to the instance of `markdown.Markdown` and is available as
        `self.md` on the class instance.


z^(.*?)%s(.*)$N)rS   ÚreÚcompileÚDOTALLÚUNICODEr`   r   ©ÚselfrS   r   s   &&&r   Ú__init__ÚPattern.__init__â   s9   € ð ŒÜŸ:š:Ð&6¸Õ&@Ü&(§i¡i´"·*±*Õ&<ó>ˆÔð Žr   c               ó   € V ^8„  d   QhRR/# )r   r   z
re.Patternr   )r   s   "r   r   rd   ó   s   € ÷  ñ   :ñ  r   c                ó   € V P                   # )z&Return a compiled regular expression. )r`   ©rl   s   &r   ÚgetCompiledRegExpÚPattern.getCompiledRegExpó   s   € à×ÑÐr   c               ó    € V ^8„  d   QhRRRR/# )r   Úmúre.Match[str]r   zetree.Element | strr   )r   s   "r   r   rd   ÷   s   € ÷ ñ ˜]ð Ð/Bñ r   c                ó   € R# )zËReturn a ElementTree element from the given match.

Subclasses should override this method.

Arguments:
    m: A match object containing a match of the pattern.

Returns: An ElementTree Element object.

Nr   ©rl   ru   s   &&r   ÚhandleMatchÚPattern.handleMatch÷   s   € ñ 	r   c               ó   € V ^8„  d   QhRR/# )r   r   rH   r   )r   s   "r   r   rd     s   € ÷ 'ñ '�cñ 'r   c                ó.   € V P                   P                  # )z*Return class name, to define pattern type )Ú	__class__rV   rq   s   &r   ÚtypeÚPattern.type  s   € à�~‰~×&Ñ&Ð&r   c               ó    € V ^8„  d   QhRRRR/# ©r   ÚtextrH   r   r   )r   s   "r   r   rd     s   € ÷ ?ñ ?˜Sð ? Sñ ?r   c                óÄ   a€  V P                   P                  R,          P                  oT3R lp\        P
                  P                  Y!4      #   \         d    Tu # i ; i)ú=Return unescaped text given text with an inline placeholder. Úinlinec                óÈ   <€ V P                  ^4      pVS9   dI   SP                  V4      p\        V\        4      '       d   V# RP	                  VP                  4       4      # R# )é   Ú N)ÚgroupÚgetÚ
isinstancerH   ÚjoinÚitertext)ru   ÚidÚvalueÚstashs   &  €r   Ú	get_stashÚ#Pattern.unescape.<locals>.get_stash  sS   ø€ Ø—‘˜“ˆBØ�UŒ{ØŸ	™	 "›�Ü˜e¤S×)Ò)Ø �Lð Ÿ7™7 5§>¡>Ó#3Ó4Ð4ñ r   ©r   ÚtreeprocessorsÚstashed_nodesÚKeyErrorr   ÚINLINE_PLACEHOLDER_REÚsub©rl   r‚   r‘   r�   s   && @r   ÚunescapeÚPattern.unescape  sV   ø€ ð	Ø—G‘G×*Ñ*¨8Õ4×BÑBˆEõ	5ô ×)Ñ)×-Ñ-¨iÓ>Ð>øô ô 	ØŠKð	ús   ƒ'A ÁAÁA)r`   r   rS   ©N)rV   rW   rX   rY   rZ   Útupler_   r[   rm   rr   ry   r~   rš   r\   r   r   r   r^   r^   Å   sG   ‡ ññ& */«Ð�Ó0ðð
 !Ó ØÓ÷õ" õõ'÷?ñ ?r   r^   c                  ó6   € ] tR tRtRtR	R R lltR R ltRtR# )
ÚInlineProcessori  z‘
Base class that inline processors subclass.

This is the newer style inline processor that uses a more
efficient and flexible search approach.

Nc               ó    € V ^8„  d   QhRRRR/# rc   r   )r   s   "r   r   ÚInlineProcessor.__annotate__$  re   r   c                óª   € Wn         \        P                  ! V\        P                  \        P                  ,          4      V n        RV n        W n        R# )zò
Create an instant of an inline processor.

Arguments:
    pattern: A regular expression that matches a pattern.
    md: An optional pointer to the instance of `markdown.Markdown` and is available as
        `self.md` on the class instance.

FN)rS   rg   rh   ri   rj   r`   Ú	safe_moder   rk   s   &&&r   rm   ÚInlineProcessor.__init__$  s7   € ð ŒÜŸ:š: g¬r¯y©y¼2¿:¹:Õ/EÓFˆÔð ˆŒØŽr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   rv   ÚdatarH   r   z9tuple[etree.Element | str | None, int | None, int | None]r   )r   s   "r   r   r¡   5  s"   € ÷ ñ ˜]ð °#ð Ð:sñ r   c                ó   € R# )a9  Return a ElementTree element from the given match and the
start and end index of the matched text.

If `start` and/or `end` are returned as `None`, it will be
assumed that the processor did not find a valid region of text.

Subclasses should override this method.

Arguments:
    m: A re match object containing a match of the pattern.
    data: The buffer currently under analysis.

Returns:
    el: The ElementTree element, text or None.
    start: The start of the region that has been matched or None.
    end: The end of the region that has been matched or None.

Nr   ©rl   ru   r¦   s   &&&r   ry   ÚInlineProcessor.handleMatch5  s   € ñ& 	r   )r`   r   rS   r£   rœ   ©rV   rW   rX   rY   rZ   rm   ry   r\   r   r   r   rŸ   rŸ     s   † ñ÷÷"ñ r   rŸ   c                  ó&   € ] tR tRtRtR R ltRtR# )ÚSimpleTextPatterniK  z1Return a simple text of `group(2)` of a Pattern. c               ó    € V ^8„  d   QhRRRR/# ©r   ru   rv   r   rH   r   )r   s   "r   r   ÚSimpleTextPattern.__annotate__M  s   € ÷ ñ ˜]ð ¨sñ r   c                ó$   € VP                  ^4      # )z;Return string content of `group(2)` of a matching pattern. )r‰   rx   s   &&r   ry   ÚSimpleTextPattern.handleMatchM  s   € à�w‰w�q‹zÐr   r   N©rV   rW   rX   rY   rZ   ry   r\   r   r   r   r¬   r¬   K  s   † Ù<÷ñ r   r¬   c                  ó&   € ] tR tRtRtR R ltRtR# )r@   iR  z1Return a simple text of `group(1)` of a Pattern. c               ó$   € V ^8„  d   QhRRRRRR/# ©r   ru   rv   r¦   rH   r   ztuple[str, int, int]r   )r   s   "r   r   Ú&SimpleTextInlineProcessor.__annotate__T  s"   € ÷ 0ñ 0˜]ð 0°#ð 0Ð:Nñ 0r   c                óf   € VP                  ^4      VP                  ^ 4      VP                  ^ 4      3# )z;Return string content of `group(1)` of a matching pattern. )r‰   ÚstartÚendr¨   s   &&&r   ry   Ú%SimpleTextInlineProcessor.handleMatchT  s'   € à�w‰w�q‹z˜1Ÿ7™7 1›: q§u¡u¨Q£xÐ/Ð/r   r   Nr²   r   r   r   r@   r@   R  s   † Ù<÷0ñ 0r   r@   c                  ó&   € ] tR tRtRtR R ltRtR# )r+   iY  zReturn an escaped character. c               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   rv   r¦   rH   r   ztuple[str | None, int, int]r   )r   s   "r   r   Ú"EscapeInlineProcessor.__annotate__\  s"   € ÷ .ñ .˜]ð .°#ð .Ð:Uñ .r   c                óP  € VP                  ^4      pW0P                  P                  9   dZ   RP                  \        P
                  \        V4      \        P                  4      VP                  ^ 4      VP                  ^ 4      3# RVP                  ^ 4      VP                  ^ 4      3# )a�  
If the character matched by `group(1)` of a pattern is in [`ESCAPED_CHARS`][markdown.Markdown.ESCAPED_CHARS]
then return the integer representing the character's Unicode code point (as returned by [`ord`][]) wrapped
in [`util.STX`][markdown.util.STX] and [`util.ETX`][markdown.util.ETX].

If the matched character is not in [`ESCAPED_CHARS`][markdown.Markdown.ESCAPED_CHARS], then return `None`.
ú{}{}{}N)
r‰   r   ÚESCAPED_CHARSr   r   ÚSTXÚordÚETXr¸   r¹   )rl   ru   r¦   Úchars   &&& r   ry   Ú!EscapeInlineProcessor.handleMatch\  su   € ð �w‰w�q‹zˆØ—7‘7×(Ñ(Ô(Ø—?‘?¤4§8¡8¬S°«Y¼¿¹ÓAÀ1Ç7Á7È1Ã:ÈqÏuÉuÐUVËxÐWÐWà˜Ÿ™ › Q§U¡U¨1£XÐ-Ð-r   r   Nr²   r   r   r   r+   r+   Y  s   † Ù(÷.ñ .r   r+   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	ÚSimpleTagPatternil  zQ
Return element of type `tag` with a text attribute of `group(3)`
of a Pattern.

c               ó    € V ^8„  d   QhRRRR/# ©r   rS   rH   Útagr   )r   s   "r   r   ÚSimpleTagPattern.__annotate__r  ó   € ÷ 1ñ 1 ð 1¨#ñ 1r   c                ó<   € \         P                  W4       W n        R# )z�
Create an instant of an simple tag pattern.

Arguments:
    pattern: A regular expression that matches a pattern.
    tag: Tag of element.

N)r^   rm   rÊ   ©rl   rS   rÊ   s   &&&r   rm   ÚSimpleTagPattern.__init__r  s   € ô 	×Ñ˜Ô'ØŒÙ0r   c               ó    € V ^8„  d   QhRRRR/# ©r   ru   rv   r   úetree.Elementr   )r   s   "r   r   rË     s   € ÷ ñ ˜]ð ¨}ñ r   c                ór   € \         P                  ! V P                  4      pVP                  ^4      Vn        V# )zŒ
Return [`Element`][xml.etree.ElementTree.Element] of type `tag` with the string in `group(3)` of a
matching pattern as the Element's text.
)ÚetreeÚElementrÊ   r‰   r‚   )rl   ru   Úels   && r   ry   ÚSimpleTagPattern.handleMatch  s*   € ô
 �]Š]˜4Ÿ8™8Ó$ˆØ—'‘'˜!“*ˆŒØˆ	r   ©rÊ   Nrª   r   r   r   rÇ   rÇ   l  s   † ñõ
1÷ñ r   rÇ   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	ÚSimpleTagInlineProcessori‰  zQ
Return element of type `tag` with a text attribute of `group(2)`
of a Pattern.

c               ó    € V ^8„  d   QhRRRR/# rÉ   r   )r   s   "r   r   Ú%SimpleTagInlineProcessor.__annotate__�  rÌ   r   c                ó<   € \         P                  W4       W n        R# )z�
Create an instant of an simple tag processor.

Arguments:
    pattern: A regular expression that matches a pattern.
    tag: Tag of element.

N)rŸ   rm   rÊ   rÎ   s   &&&r   rm   Ú!SimpleTagInlineProcessor.__init__�  s   € ô 	× Ñ  Ô/ØŒÙ0r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   ru   rv   r¦   rH   r   ztuple[etree.Element, int, int]r   )r   s   "r   r   rÜ   œ  s"   € ÷ (ñ (˜]ð (°#ð (Ð:Xñ (r   c                ó²   € \         P                  ! V P                  4      pVP                  ^4      Vn        W1P                  ^ 4      VP                  ^ 4      3# )zŒ
Return [`Element`][xml.etree.ElementTree.Element] of type `tag` with the string in `group(2)` of a
matching pattern as the Element's text.
)rÔ   rÕ   rÊ   r‰   r‚   r¸   r¹   ©rl   ru   r¦   rÖ   s   &&& r   ry   Ú$SimpleTagInlineProcessor.handleMatchœ  s@   € ô
 �]Š]˜4Ÿ8™8Ó$ˆØ—'‘'˜!“*ˆŒØ—7‘7˜1“:˜qŸu™u Q›xÐ'Ð'r   rØ   Nrª   r   r   r   rÚ   rÚ   ‰  s   † ñõ
1÷(ñ (r   rÚ   c                  ó&   € ] tR tRtRtR R ltRtR# )ÚSubstituteTagPatterni¦  ú2Return an element of type `tag` with no children. c               ó    € V ^8„  d   QhRRRR/# rÑ   r   )r   s   "r   r   Ú!SubstituteTagPattern.__annotate__¨  s   € ÷ 'ñ '˜]ð '¨}ñ 'r   c                óB   € \         P                  ! V P                  4      # ©zGReturn empty [`Element`][xml.etree.ElementTree.Element] of type `tag`. )rÔ   rÕ   rÊ   rx   s   &&r   ry   Ú SubstituteTagPattern.handleMatch¨  s   € ä�}Š}˜TŸX™XÓ&Ð&r   r   Nr²   r   r   r   rå   rå   ¦  s   † Ù=÷'ñ 'r   rå   c                  ó&   € ] tR tRtRtR R ltRtR# )r;   i­  ræ   c               ó$   € V ^8„  d   QhRRRRRR/# rà   r   )r   s   "r   r   Ú)SubstituteTagInlineProcessor.__annotate__¯  s"   € ÷ =ñ =˜]ð =°#ð =Ð:Xñ =r   c                ó„   € \         P                  ! V P                  4      VP                  ^ 4      VP	                  ^ 4      3# rê   )rÔ   rÕ   rÊ   r¸   r¹   r¨   s   &&&r   ry   Ú(SubstituteTagInlineProcessor.handleMatch¯  s,   € ä�}Š}˜TŸX™XÓ&¨¯©°«
°A·E±E¸!³HÐ<Ð<r   r   Nr²   r   r   r   r;   r;   ­  s   † Ù=÷=ñ =r   r;   c                  ó2   € ] tR tRtRtR R ltR R ltRtR# )	r)   i´  z@Return a `<code>` element containing the escaped matching text. c               ó   € V ^8„  d   QhRR/# )r   rS   rH   r   )r   s   "r   r   Ú$BacktickInlineProcessor.__annotate__¶  s   € ÷ 1ñ 1 ñ 1r   c                	ó¸   € \         P                  W4       R P                  \        P                  \        R4      \        P                  4      V n        RV n        R# )r¿   Ú\ÚcodeN)	rŸ   rm   r   r   rÁ   rÂ   rÃ   ÚESCAPED_BSLASHrÊ   )rl   rS   s   &&r   rm   Ú BacktickInlineProcessor.__init__¶  s;   € Ü× Ñ  Ô/Ø&Ÿo™o¬d¯h©h¼¸D»	Ä4Ç8Á8ÓLˆÔØˆŒÙ0r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   ru   rv   r¦   rH   r   z$tuple[etree.Element | str, int, int]r   )r   s   "r   r   ró   ¼  s'   € ÷ Yñ Y˜]ð Y°#ð YÐ:^ñ Yr   c                óä  € VP                  ^4      '       d�   \        P                  ! V P                  4      p\        P
                  ! \        P                  ! VP                  ^4      P                  4       4      4      Vn        W1P                  ^ 4      VP                  ^ 4      3# VP                  ^4      P                  RV P                  4      VP                  ^ 4      VP                  ^ 4      3# )aX  
If the match contains `group(3)` of a pattern, then return a `code`
[`Element`][xml.etree.ElementTree.Element] which contains HTML escaped text (with
[`code_escape`][markdown.util.code_escape]) as an [`AtomicString`][markdown.util.AtomicString].

If the match does not contain `group(3)` then return the text of `group(1)` backslash escaped.

z\\)r‰   rÔ   rÕ   rÊ   r   ÚAtomicStringÚcode_escapeÚstripr‚   r¸   r¹   Úreplacer÷   râ   s   &&& r   ry   Ú#BacktickInlineProcessor.handleMatch¼  s©   € ð �7‰7�1�:Š:Ü—’˜tŸx™xÓ(ˆBÜ×'Ò'¬×(8Ò(8¸¿¹À»×9IÑ9IÓ9KÓ(LÓMˆBŒGØ—w‘w˜q“z 1§5¡5¨£8Ð+Ð+à—7‘7˜1“:×%Ñ% f¨d×.AÑ.AÓBÀAÇGÁGÈAÃJÐPQ×PUÑPUÐVWÓPXÐXÐXr   )r÷   rÊ   Nrª   r   r   r   r)   r)   ´  s   † ÙKõ1÷Yñ Yr   r)   c                  ó&   € ] tR tRtRtR R ltRtR# )ÚDoubleTagPatterniÍ  ú^Return a ElementTree element nested in tag2 nested in tag1.

Useful for strong emphasis etc.

c               ó    € V ^8„  d   QhRRRR/# rÑ   r   )r   s   "r   r   ÚDoubleTagPattern.__annotate__Ó  s   € ÷ ñ ˜]ð ¨}ñ r   c                ó,  € V P                   P                  R4      w  r#\        P                  ! V4      p\        P                  ! WC4      pVP                  ^4      Vn        \        VP                  4       4      ^8X  d   VP                  ^4      Vn	        V# )z”
Return [`Element`][xml.etree.ElementTree.Element] in following format:
`<tag1><tag2>group(3)</tag2>group(4)</tag2>` where `group(4)` is optional.

Ú,)
rÊ   ÚsplitrÔ   rÕ   Ú
SubElementr‰   r‚   ÚlenÚgroupsÚtail)rl   ru   Útag1Útag2Úel1Úel2s   &&    r   ry   ÚDoubleTagPattern.handleMatchÓ  sk   € ð —X‘X—^‘^ CÓ(‰
ˆÜ�mŠm˜DÓ!ˆÜ×Ò˜sÓ)ˆØ—7‘7˜1“:ˆŒÜˆq�x‰x‹z‹?˜aÔØ—w‘w˜q“zˆCŒHØˆ
r   r   Nr²   r   r   r   r  r  Í  s   † ñ÷
ñ r   r  c                  ó&   € ] tR tRtRtR R ltRtR# )ÚDoubleTagInlineProcessoriâ  r  c               ó$   € V ^8„  d   QhRRRRRR/# rà   r   )r   s   "r   r   Ú%DoubleTagInlineProcessor.__annotate__è  s"   € ÷ )ñ )˜]ð )°#ð )Ð:Xñ )r   c                ól  € V P                   P                  R4      w  r4\        P                  ! V4      p\        P                  ! WT4      pVP                  ^4      Vn        \        VP                  4       4      ^8X  d   VP                  ^4      Vn	        WQP                  ^ 4      VP                  ^ 4      3# )z”
Return [`Element`][xml.etree.ElementTree.Element] in following format:
`<tag1><tag2>group(2)</tag2>group(3)</tag2>` where `group(3)` is optional.

r  )rÊ   r  rÔ   rÕ   r  r‰   r‚   r	  r
  r  r¸   r¹   )rl   ru   r¦   r  r  r  r  s   &&&    r   ry   Ú$DoubleTagInlineProcessor.handleMatchè  s�   € ð —X‘X—^‘^ CÓ(‰
ˆÜ�mŠm˜DÓ!ˆÜ×Ò˜sÓ)ˆØ—7‘7˜1“:ˆŒÜˆq�x‰x‹z‹?˜aÔØ—w‘w˜q“zˆCŒHØ—G‘G˜A“J §¡ a£Ð(Ð(r   r   Nr²   r   r   r   r  r  â  s   † ñ÷
)ñ )r   r  c                  ó>   € ] tR tRtRtR R ltR R ltR R ltR	tR
# )r=   i÷  z0Store raw inline html and return a placeholder. c               ó$   € V ^8„  d   QhRRRRRR/# rµ   r   )r   s   "r   r   Ú HtmlInlineProcessor.__annotate__ù  s"   € ÷ 2ñ 2˜]ð 2°#ð 2Ð:Nñ 2r   c                óî   € V P                  V P                  VP                  ^4      4      4      pV P                  P                  P                  V4      pWAP                  ^ 4      VP                  ^ 4      3# )zKStore the text of `group(1)` of a pattern and return a placeholder string. )Úbackslash_unescaperš   r‰   r   Ú	htmlStashÚstorer¸   r¹   )rl   ru   r¦   ÚrawhtmlÚplace_holders   &&&  r   ry   ÚHtmlInlineProcessor.handleMatchù  sX   € à×)Ñ)¨$¯-©-¸¿¹À»
Ó*CÓDˆØ—w‘w×(Ñ(×.Ñ.¨wÓ7ˆØŸW™W Q›Z¨¯©¨q«Ð1Ð1r   c               ó    € V ^8„  d   QhRRRR/# r�   r   )r   s   "r   r   r  ÿ  s   € ÷ ?ñ ?˜Sð ? Sñ ?r   c                óÎ   a a€  S P                   P                  R,          P                  oR T T3R llp\        P
                  P                  Y!4      #   \         d    Tu # i ; i)r„   r…   c               ó    € V ^8„  d   QhRRRR/# r®   r   )r   s   "r   r   Ú2HtmlInlineProcessor.unescape.<locals>.__annotate__  s   € ÷ 	*ñ 	*˜ð 	*¨3ñ 	*r   c                óÞ   <€ V P                  ^4      pSP                  V4      pVe,    SP                  SP                  P	                  V4      4      # R#   \
         d    RT,          u # i ; i)r‡   Nz\%s)r‰   rŠ   rš   r   Ú
serializerÚ	Exception)ru   rŽ   r�   rl   r�   s   &  €€r   r‘   Ú/HtmlInlineProcessor.unescape.<locals>.get_stash  sf   ø€ Ø—‘˜“ˆBØ—I‘I˜b“MˆEØÒ ð*àŸ=™=¨¯©×);Ñ);¸EÓ)BÓCÐCñ !øô !ô *Ø! E�>Ò)ð*ús   ©)A ÁA,Á+A,r“   r™   s   f& @r   rš   ÚHtmlInlineProcessor.unescapeÿ  s[   ù€ ð	Ø—G‘G×*Ñ*¨8Õ4×BÑBˆE÷	*ñ 	*ô ×)Ñ)×-Ñ-¨iÓ>Ð>øô ô 	ØŠKð	ús   „'A ÁA$Á#A$c               ó    € V ^8„  d   QhRRRR/# r�   r   )r   s   "r   r   r    s   € ÷ 
'ñ 
' sð 
'¨sñ 
'r   c                ó¦   €  V P                   P                  R,          P                  pR R lpTP	                  Y14      #   \         d    Tu # i ; i)zFReturn text with backslash escapes undone (backslashes are restored). rš   c               ó    € V ^8„  d   QhRRRR/# r®   r   )r   s   "r   r   Ú<HtmlInlineProcessor.backslash_unescape.<locals>.__annotate__  s   € ÷ 	(ñ 	(˜ð 	(¨3ñ 	(r   c                óH   € \        \        V P                  ^4      4      4      # )r‡   )ÚchrÚintr‰   )ru   s   &r   Ú	_unescapeÚ9HtmlInlineProcessor.backslash_unescape.<locals>._unescape  s   € Ü”s˜1Ÿ7™7 1›:“Ó'Ð'r   )r   r”   ÚREr–   r˜   )rl   r‚   r3  r1  s   &&  r   r  Ú&HtmlInlineProcessor.backslash_unescape  sM   € ð	Ø—‘×'Ñ'¨
Õ3×6Ñ6ˆBõ	(ð �v‰v�iÓ&Ð&øô ô 	ØŠKð	ús   ‚'A  Á AÁAr   N)	rV   rW   rX   rY   rZ   ry   rš   r  r\   r   r   r   r=   r=   ÷  s   † Ù;õ2õ?÷&
'ñ 
'r   r=   c                  óz  € ] tR tRtRt]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR	4      .t R
 R ltR R ltR R ltR R ltR R ltR R ltRtR# )rB   i  zGEmphasis processor for handling strong and em matches inside asterisks.Údoubleú	strong,emú	em,strongÚdouble2ÚsingleÚstrongÚemc               ó(   € V ^8„  d   QhRRRRRRRR/# )	r   ru   rv   rÊ   rH   Úidxr0  r   rÒ   r   )r   s   "r   r   ÚAsteriskProcessor.__annotate__+  s(   € ÷ ñ ˜mð °#ð ¸Cð ÀMñ r   c                óz   € \         P                  ! V4      pVP                  ^4      pV P                  WTRV4       V# )zReturn single tag.N)rÔ   rÕ   r‰   Úparse_sub_patterns)rl   ru   rÊ   r>  r  r‚   s   &&&&  r   Úbuild_singleÚAsteriskProcessor.build_single+  s4   € ä�mŠm˜CÓ ˆØ�w‰w�q‹zˆØ×Ñ ¨4°Ô5Øˆ
r   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©	r   ru   rv   rU   rH   r>  r0  r   rÒ   r   )r   s   "r   r   r?  2  s(   € ÷ ñ ˜mð °3ð ¸Sð À]ñ r   c                óp  € VP                  R4      w  rE\        P                  ! V4      p\        P                  ! V4      pVP                  ^4      pV P	                  W‡RV4       VP                  V4       \        VP                  4       4      ^8X  d$   VP                  ^4      pV P	                  W†Ws4       V# )zReturn double tag.r  N)r  rÔ   rÕ   r‰   rA  Úappendr	  r
  ©	rl   ru   rU   r>  r  r  r  r  r‚   s	   &&&&     r   Úbuild_doubleÚAsteriskProcessor.build_double2  s�   € ð —Z‘Z “_‰
ˆÜ�mŠm˜DÓ!ˆÜ�mŠm˜DÓ!ˆØ�w‰w�q‹zˆØ×Ñ ¨4°Ô5Ø�
‰
�3ŒÜˆq�x‰x‹z‹?˜aÔØ—7‘7˜1“:ˆDØ×#Ñ# D¨sÔ8Øˆ
r   c               ó(   € V ^8„  d   QhRRRRRRRR/# rE  r   )r   s   "r   r   r?  @  s(   € ÷ ñ ˜}ð °Cð ¸cð Àmñ r   c                ó6  € VP                  R4      w  rE\        P                  ! V4      p\        P                  ! V4      pVP                  ^4      pV P	                  W†RV4       VP                  ^4      pVP                  V4       V P	                  W‡RV4       V# )zFReturn double tags (variant 2): `<strong>text <em>text</em></strong>`.r  N)r  rÔ   rÕ   r‰   rA  rG  rH  s	   &&&&     r   Úbuild_double2ÚAsteriskProcessor.build_double2@  s}   € ð —Z‘Z “_‰
ˆÜ�mŠm˜DÓ!ˆÜ�mŠm˜DÓ!ˆØ�w‰w�q‹zˆØ×Ñ ¨4°Ô5Ø�w‰w�q‹zˆØ�
‰
�3ŒØ×Ñ ¨4°Ô5Øˆ
r   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r   r¦   rH   ÚparentrÒ   Úlastzetree.Element | Noner>  r0  r   ÚNoner   )r   s   "r   r   r?  M  s4   € ÷ ;#ñ ;#Øð;#Ø!.ð;#Ø6Jð;#ØQTð;#à	ñ;#r   c                óˆ  € ^ p^ p\        V4      pWg8  Ed   V P                  P                  W4      '       dß   Rp\        V P                  4       F¬  w  ršW”8:  d   K  V
P
                  P                  W4      pV'       g   K2  WVP                  ^ 4       pV'       d   Ve   WÃn        MWÂn        V P                  WºP                  V
P                  V	4      pVP                  V4       TpVP                  ^ 4      ;rVRpK®  	  V'       g   V^,          pEK  EK  V^,          pEK  WR pV'       d   Ve	   WÃn        R# WÂn        R# R# )zÿ
Parses sub patterns.

`data`: text to evaluate.

`parent`: Parent to attach text and sub elements to.

`last`: Last appended child to parent. Can also be None if parent has no children.

`idx`: Current pattern index that was used to evaluate the parent.
FNT)r	  r`   ÚmatchÚ	enumerateÚPATTERNSrS   r¸   r  r‚   Úbuild_elementrT   rU   rG  r¹   )rl   r¦   rP  rQ  r>  ÚoffsetÚposÚlengthÚmatchedÚindexÚitemru   r‚   rÖ   s   &&&&&         r   rA  Ú$AsteriskProcessor.parse_sub_patternsM  s  € ð ˆØˆä�T“ˆØ�là×Ñ×%Ñ% d×0Ò0Ø�ä#,¨T¯]©]Ö#;‘K�Eà”|Ù ØŸ™×*Ñ*¨4Ó5�Aß‘qð
  $¨1¯7©7°1«:Ð6˜ßØ#Ò/Ø,0¥	à.2¤Ø!×/Ñ/°·<±<ÀÇÁÈEÓR˜ØŸ™ bÔ)Ø!˜à'(§u¡u¨Q£xÐ/˜Ø"&šñ+ $<÷, à˜1•H“Cò ð
 �q•“ð �Gˆ}ˆßØÒØ –	à"–ñ	 r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   ru   rv   rT   rH   rU   r\  r0  r   rÒ   r   )r   s   "r   r   r?  Š  s0   € ÷ 5ñ 5˜}ð 5°sð 5À#ð 5Ècð 5ÐVcñ 5r   c                óŠ   € VR8X  d   V P                  WV4      # VR8X  d   V P                  WV4      # V P                  WV4      # )zElement builder.r9  r6  )rM  rI  rB  )rl   ru   rT   rU   r\  s   &&&&&r   rW  ÚAsteriskProcessor.build_elementŠ  sM   € ð �iÔØ×%Ñ% a¨uÓ5Ð5Ø˜Ô Ø×$Ñ$ Q¨eÓ4Ð4à×$Ñ$ Q¨eÓ4Ð4r   c               ó$   € V ^8„  d   QhRRRRRR/# ©r   ru   rv   r¦   rH   r   z3tuple[etree.Element | None, int | None, int | None]r   )r   s   "r   r   r?  ”  s"   € ÷ ñ ˜]ð °#ð Ð:mñ r   c                óL  € RpRpRp\        V P                  4       F‚  w  rgVP                  P                  W!P	                  ^ 4      4      pV'       g   K9  VP	                  ^ 4      pVP                  ^ 4      pV P                  W‡P                  VP                  V4      p M	  W4V3# )zParse patterns.N)	rU  rV  rS   rT  r¸   r¹   rW  rT   rU   )	rl   ru   r¦   rÖ   r¸   r¹   r\  r]  Úm1s	   &&&      r   ry   ÚAsteriskProcessor.handleMatch”  sŽ   € ð ˆØˆØˆä$ T§]¡]Ö3‰KˆEØ—‘×#Ñ# D¯'©'°!«*Ó5ˆBß‰rØŸ™ ›�Ø—f‘f˜Q“i�Ø×'Ñ'¨¯L©L¸$¿)¹)ÀUÓK�Ùñ 4ð ˜#ˆ~Ðr   r   N)rV   rW   rX   rY   rZ   rQ   rg   rh   ÚEM_STRONG_REri   rj   ÚSTRONG_EM_REÚSTRONG_EM3_REÚ	STRONG_REÚEMPHASIS_RErV  rB  rI  rM  rA  rW  ry   r\   r   r   r   rB   rB     sð   † ÙQñ 	�R—Z’Z ¨b¯i©i¸"¿*¹*Õ.DÓEÀxÐQ\Ó]Ù�R—Z’Z ¨b¯i©i¸"¿*¹*Õ.DÓEÀxÐQ\Ó]Ù�R—Z’Z ¨r¯y©y¸2¿:¹:Õ/EÓFÈ	ÐS^Ó_Ù�R—Z’Z 	¨2¯9©9°r·z±zÕ+AÓBÀHÈhÓWÙ�R—Z’Z ¨R¯Y©Y¸¿¹Õ-CÓDÀhÐPTÓUð€Hð Põõõõ;#õz5÷ñ r   rB   c                  ó0  € ] tR tRtRt]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR4      ]! ]P                  ! ]]P                  ]P                  ,          4      RR	4      .tR
tR# )rC   i¥  zIEmphasis processor for handling strong and em matches inside underscores.r6  r7  r8  r9  r:  r;  r<  r   N)rV   rW   rX   rY   rZ   rQ   rg   rh   ÚEM_STRONG2_REri   rj   ÚSTRONG_EM2_REÚSMART_STRONG_EM_REÚSMART_STRONG_REÚSMART_EMPHASIS_RErV  r\   r   r   r   rC   rC   ¥  sÏ   † ÙSñ 	�R—Z’Z ¨r¯y©y¸2¿:¹:Õ/EÓFÈÐR]Ó^Ù�R—Z’Z ¨r¯y©y¸2¿:¹:Õ/EÓFÈÐR]Ó^Ù�R—Z’ZÐ 2°B·I±IÀÇ
Á
Õ4JÓKÈYÐXcÓdÙ�R—Z’Z °·±¸R¿Z¹ZÕ1GÓHÈ(ÐT\Ó]Ù�R—Z’ZÐ 1°2·9±9¸r¿z¹zÕ3IÓJÈHÐVZÓ[ð€Hó Pr   rC   c                  ó¾   € ] tR tRtRt]P                  ! R]P                  ]P                  ,          4      t	]P                  ! R4      t
R R ltR R ltR	 R
 ltRtR# )r/   i²  z,Return a link element from the given match. z2\(\s*(?:(<[^<>]*>)\s*(?:('[^']*'|"[^"]*")\s*)?\))?z\sc               ó$   € V ^8„  d   QhRRRRRR/# rc  r   )r   s   "r   r   Ú LinkInlineProcessor.__annotate__·  s"   € ÷ %ñ %˜]ð %°#ð %Ð:mñ %r   c                óF  € V P                  W!P                  ^ 4      4      w  r4pV'       g   R# V P                  W$4      w  rgrEV'       g   R# \        P                  ! R4      pW8n        VP                  RV4       Ve   VP                  RV4       W�P                  ^ 4      V3# )zRReturn an `a` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. ÚaÚhrefÚtitle©NNN)ÚgetTextr¹   ÚgetLinkrÔ   rÕ   r‚   Úsetr¸   )	rl   ru   r¦   r‚   r\  Úhandledrw  rx  rÖ   s	   &&&      r   ry   ÚLinkInlineProcessor.handleMatch·  sŠ   € à#Ÿ|™|¨D·%±%¸³(Ó;Ñˆ�WçØ#Ð#à&*§l¡l°4Ó&?Ñ#ˆ�UßØ#Ð#ä�]Š]˜3ÓˆØŒà
�‰ˆv�tÔàÒØ�F‰F�7˜EÔ"à—7‘7˜1“:˜uÐ$Ð$r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r¦   rH   r\  r0  r   z!tuple[str, str | None, int, bool]r   )r   s   "r   r   rt  Ì  s'   € ÷ r+ñ r+˜Cð r+¨ð r+Ð0Qñ r+r   c           	     ó  € RpRpRpV P                   P                  WR7      pV'       dz   VP                  ^4      '       dc   VP                  ^4      ^R	 P                  4       pVP                  ^4      '       d   VP                  ^4      ^R	 pVP	                  ^ 4      pRpEMôV'       Edì   ^p^pVP	                  4       p	T	pR	p
RpR	pR	pRpRpR	pR	pRp\        V\        V4      4       EF‡  pVV,          pVR8X  d$   V'       g   V^,          pMÏV^ 8”  d
   V^,          pM¾VR8X  dS   VR	8w  d   VV8X  g   VR	8w  d   VV8X  d   ^ pM˜V'       g   V^,          pM†V^ 8”  d   V^,          pV^ 8X  d
   V^,           p
MeVR
9   d_   V'       g   RpTp^pV^,           pTpMDVV8w  d   V'       g   V^,           pTpM)VV8X  d   V^,           pMV'       d   VV8X  d
   V^,           pV^,          pV^ 8X  dw   V^ 8¼  d.   VV8X  d'   WV^,
           pRP                  WV^,
           4      pM@V^ 8¼  d/   VV8X  d(   WV^,
           pRP                  VVV^,
           4      pMWV^,
           p MVR8w  g   EK…  TpEKŠ  	  V^ 8w  d   V^ 8X  d   WV
^,
           pT
p^ pV^ 8H  pVeC   V P                  P                  R\        V P                  VP                  4       4      4      4      pV P                  V4      P                  4       pW4W%3# )z?Parse data between `()` of `[Text]()` allowing recursive `()`. rˆ   NF©rY  TÚ(Ú)Ú rL   )rK   rJ   )ÚRE_LINKrT  r‰   rý   r¹   Úranger	  rŒ   ÚRE_TITLE_CLEANr˜   rO   rš   )rl   r¦   r\  rw  rx  r}  ru   Úbracket_countÚbacktrack_countÚstart_indexÚlast_bracketÚquoteÚstart_quoteÚ
exit_quoteÚignore_matchesÚ	alt_quoteÚstart_alt_quoteÚexit_alt_quoterQ  rY  Úcs   &&&                  r   r{  ÚLinkInlineProcessor.getLinkÌ  s  € ð ˆØ ˆØˆà�L‰L×Ñ˜tÐÓ/ˆß�—‘˜—’à—7‘7˜1“:˜a Ð#×)Ñ)Ó+ˆDØ�w‰w�q�zŠzØŸ™ ›
 1 RÐ(�Ø—E‘E˜!“HˆEØŠGßˆQàˆMØˆOØŸ%™%›'ˆKØˆEØˆLð !%ˆEØˆKØˆJØ"ˆNð ˆIØ ˆOØˆNð ˆDä˜U¤C¨£I×.�Ø˜•I�Ø˜”8÷ *Ø%¨Õ*™Ø(¨1Ô,Ø'¨1Õ,˜øØ˜#”Xð $ rÔ)¨e°t¬mÀÐSUÔAUÐZcÐgkÔZkØ()™ß+Ø%¨Õ*™Ø(¨1Ô,Ø'¨1Õ,˜à*¨aÔ/Ø+0°1­9˜Løà˜*”_ç ð *.˜Ø*7˜Ø()˜Ø&+¨a¥i˜Ø !™à˜eœ¯IØ*/°!­)˜Ø$%™	à˜eœØ%*¨Q¥Y™
ç" q¨I¤~Ø).°­˜à˜•
�ð ! AÔ%à! Q”¨5°D¬=Ø#°¸aµÐ@˜Ø "§¡¨¸Àa½Ð(HÓ I™Ø'¨1Ô,°¸dÔ1BØ#°À!Õ0CÐD˜Ø "§¡¨¨_¸^ÈaÕ=OÐ(PÓ Q™à#°¸µ	Ð:˜Ùà˜—8Ø“Dñw /ðB  Ô! o¸Ô&:Ø¨°qÕ(8Ð9�Ø$�Ø !�à# qÑ(ˆGàÒØ×'Ñ'×+Ñ+¨C´¸¿¹ÀuÇ{Á{Ã}Ó9UÓ1VÓWˆEà�}‰}˜TÓ"×(Ñ(Ó*ˆà˜EÐ*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r¦   rH   r\  r0  r   útuple[str, int, bool]r   )r   s   "r   r   rt  @  s"   € ÷ 8ñ 8˜Cð 8¨ð 8Ð0Eñ 8r   c                ó  € ^p. p\        V\        V4      4       FO  pW,          pVR8X  d   V^,          pMVR8X  d
   V^,          pV^,          pV^ 8X  d    MVP                  V4       KQ  	  RP                  V4      W#^ 8H  3# )zcParse the content between `[]` of the start of an image or link
resolving nested square brackets.

Ú]Ú[rˆ   )r†  r	  rG  rŒ   )rl   r¦   r\  rˆ  r‚   rY  r“  s   &&&    r   rz  ÚLinkInlineProcessor.getText@  s…   € ð
 ˆØˆÜ˜¤ D£	Ö*ˆCØ•	ˆAØ�CŒxØ Õ"‘Ø�c”Ø Õ"�Ø�Q�JˆEØ Ô!ÙØ�K‰K˜ŽNñ +ð �w‰w�t‹}˜e°aÑ%7Ð7Ð7r   r   N)rV   rW   rX   rY   rZ   rg   rh   ri   rj   r…  r‡  ry   r{  rz  r\   r   r   r   r/   r/   ²  sM   † Ù7Ø�jŠjÐRÐTV×T]ÑT]Ð`b×`jÑ`jÕTjÓk€GØ—Z’Z Ó&€Nõ%õ*r+÷h8ñ 8r   r/   c                  ó&   € ] tR tRtRtR R ltRtR# )r1   iT  z-Return a `img` element from the given match. c               ó$   € V ^8„  d   QhRRRRRR/# rc  r   )r   s   "r   r   Ú!ImageInlineProcessor.__annotate__W  s"   € ÷ %ñ %˜]ð %°#ð %Ð:mñ %r   c                ó|  € V P                  W!P                  ^ 4      4      w  r4pV'       g   R# V P                  W$4      w  rgrEV'       g   R# \        P                  ! R4      pVP                  RV4       Ve   VP                  RV4       VP                  RV P                  V4      4       W�P                  ^ 4      V3# )zTReturn an `img` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. ÚimgÚsrcrx  Úaltry  )rz  r¹   r{  rÔ   rÕ   r|  rš   r¸   )	rl   ru   r¦   r‚   r\  r}  r   rx  rÖ   s	   &&&      r   ry   Ú ImageInlineProcessor.handleMatchW  sœ   € à#Ÿ|™|¨D·%±%¸³(Ó;Ñˆ�WßØ#Ð#à%)§\¡\°$Ó%>Ñ"ˆ�EßØ#Ð#ä�]Š]˜5Ó!ˆà
�‰ˆu�cÔàÒØ�F‰F�7˜EÔ"à
�‰ˆu�d—m‘m DÓ)Ô*Ø—7‘7˜1“:˜uÐ$Ð$r   r   Nr²   r   r   r   r1   r1   T  s   † Ù8÷%ñ %r   r1   c                  óÔ   € ] tR tRtRt]P                  ! R]P                  4      t]P                  ! R]P                  ]P                  ,          4      tR R ltR R ltR	 R
 ltRtR# )r-   il  z5Match to a stored reference and return link element. z\s+z\s?\[([^\]]*)\]c               ó$   € V ^8„  d   QhRRRRRR/# rc  r   )r   s   "r   r   Ú%ReferenceInlineProcessor.__annotate__r  s'   € ÷ @ñ @˜]ð @°#ð @Ð:mñ @r   c                ó´  € V P                  W!P                  ^ 4      4      w  r4pV'       g   R# V P                  W$V4      w  rgpV'       g   R# V P                  P	                  RV4      pW`P
                  P                  9  d   RVP                  ^ 4      V3# V P
                  P                  V,          w  r‰V P                  W‰V4      VP                  ^ 4      V3# )zj
Return [`Element`][xml.etree.ElementTree.Element] returned by `makeTag` method or `(None, None, None)`.

Nr„  ry  )	rz  r¹   ÚevalIdÚNEWLINE_CLEANUP_REr˜   r   Ú
referencesr¸   ÚmakeTag)
rl   ru   r¦   r‚   r\  r}  rŽ   r¹   rw  rx  s
   &&&       r   ry   Ú$ReferenceInlineProcessor.handleMatchr  s»   € ð
  $Ÿ|™|¨D·%±%¸³(Ó;Ñˆ�WßØ#Ð#àŸ;™; t°DÓ9Ñˆ�ßØ#Ð#ð ×$Ñ$×(Ñ(¨¨bÓ1ˆØ—W‘W×'Ñ'Ô'Ø˜Ÿ™ › SÐ(Ð(à—g‘g×(Ñ(¨Õ,‰ˆà�|‰|˜D¨Ó.°·±¸³
¸CÐ?Ð?r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r   r¦   rH   r\  r0  r‚   r   ztuple[str | None, int, bool]r   )r   s   "r   r   r¥  ˆ  s)   € ÷ ñ ˜3ð  sð °#ð Ð:Vñ r   c                óì   € V P                   P                  WR7      pV'       g   RVR3# VP                  ^4      P                  4       pVP	                  ^ 4      pV'       g   VP                  4       pWVR3# )zD
Evaluate the id portion of `[ref][id]`.

If `[ref][]` use `[ref]`.
r�  NFT)r…  rT  r‰   Úlowerr¹   )rl   r¦   r\  r‚   ru   rŽ   r¹   s   &&&&   r   r§  ÚReferenceInlineProcessor.evalIdˆ  sf   € ð �L‰L×Ñ˜tÐÓ/ˆßØ˜ Ð%Ð%à—‘˜“×!Ñ!Ó#ˆBØ—%‘%˜“(ˆCßØ—Z‘Z“\�Ø˜ˆ}Ðr   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   rw  rH   rx  r‚   r   rÒ   r   )r   s   "r   r   r¥  ˜  s(   € ÷ 	ñ 	˜Cð 	¨ð 	°3ð 	¸=ñ 	r   c                ó–   € \         P                  ! R4      pVP                  RV4       V'       d   VP                  RV4       W4n        V# )z:Return an `a` [`Element`][xml.etree.ElementTree.Element]. rv  rw  rx  )rÔ   rÕ   r|  r‚   ©rl   rw  rx  r‚   rÖ   s   &&&& r   rª  Ú ReferenceInlineProcessor.makeTag˜  s9   € ä�]Š]˜3Óˆà
�‰ˆv�tÔßØ�F‰F�7˜EÔ"àŒØˆ	r   r   N)rV   rW   rX   rY   rZ   rg   rh   Ú	MULTILINEr¨  ri   rj   r…  ry   r§  rª  r\   r   r   r   r-   r-   l  sM   † Ù@ØŸš F¨B¯L©LÓ9Ðà�jŠjÐ+¨R¯Y©Y¸¿¹Õ-CÓD€Gõ@õ,÷ 	ñ 	r   r-   c                  ó&   € ] tR tRtRtR R ltRtR# )r5   i¤  z%Short form of reference: `[google]`. c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   r¦   rH   r\  r0  r‚   r   r–  r   )r   s   "r   r   Ú*ShortReferenceInlineProcessor.__annotate__¦  ó)   € ÷ )ñ )˜3ð ) sð )°#ð )Ð:Oñ )r   c                ó(   € VP                  4       VR3# ©zEvaluate the id of `[ref]`.  T©r®  ©rl   r¦   r\  r‚   s   &&&&r   r§  Ú$ShortReferenceInlineProcessor.evalId¦  ó   € ð �z‰z‹|˜U DÐ(Ð(r   r   N©rV   rW   rX   rY   rZ   r§  r\   r   r   r   r5   r5   ¤  s   † Ù/÷)ñ )r   r5   c                  ó&   € ] tR tRtRtR R ltRtR# )r3   i¬  z6Match to a stored reference and return `img` element. c               ó(   € V ^8„  d   QhRRRRRRRR/# r±  r   )r   s   "r   r   Ú*ImageReferenceInlineProcessor.__annotate__®  s(   € ÷ ñ ˜Cð ¨ð °3ð ¸=ñ r   c                óÌ   € \         P                  ! R4      pVP                  RV4       V'       d   VP                  RV4       VP                  RV P                  V4      4       V# )z<Return an `img` [`Element`][xml.etree.ElementTree.Element]. rŸ  r   rx  r¡  )rÔ   rÕ   r|  rš   r³  s   &&&& r   rª  Ú%ImageReferenceInlineProcessor.makeTag®  sK   € ä�]Š]˜5Ó!ˆØ
�‰ˆu�dÔßØ�F‰F�7˜EÔ"Ø
�‰ˆu�d—m‘m DÓ)Ô*Øˆ	r   r   N)rV   rW   rX   rY   rZ   rª  r\   r   r   r   r3   r3   ¬  s   † ÙA÷ñ r   r3   c                  ó&   € ] tR tRtRtR R ltRtR# )r6   i¸  z)Short form of image reference: `![ref]`. c               ó(   € V ^8„  d   QhRRRRRRRR/# r¸  r   )r   s   "r   r   Ú/ShortImageReferenceInlineProcessor.__annotate__º  rº  r   c                ó(   € VP                  4       VR3# r¼  r½  r¾  s   &&&&r   r§  Ú)ShortImageReferenceInlineProcessor.evalIdº  rÀ  r   r   NrÁ  r   r   r   r6   r6   ¸  s   † Ù4÷)ñ )r   r6   c                  ó&   € ] tR tRtRtR R ltRtR# )r7   iÀ  zCReturn a link Element given an auto-link (`<http://example/com>`). c               ó$   € V ^8„  d   QhRRRRRR/# rà   r   )r   s   "r   r   Ú$AutolinkInlineProcessor.__annotate__Â  s"   € ÷ (ñ (˜]ð (°#ð (Ð:Xñ (r   c                ó&  € \         P                  ! R4      pVP                  RV P                  VP	                  ^4      4      4       \
        P                  ! VP	                  ^4      4      Vn        W1P                  ^ 4      VP                  ^ 4      3# )zHReturn an `a` [`Element`][xml.etree.ElementTree.Element] of `group(1)`. rv  rw  )
rÔ   rÕ   r|  rš   r‰   r   rû   r‚   r¸   r¹   râ   s   &&& r   ry   Ú#AutolinkInlineProcessor.handleMatchÂ  sd   € ä�]Š]˜3ÓˆØ
�‰ˆv�t—}‘} Q§W¡W¨Q£ZÓ0Ô1Ü×#Ò# A§G¡G¨A£JÓ/ˆŒØ—7‘7˜1“:˜qŸu™u Q›xÐ'Ð'r   r   Nr²   r   r   r   r7   r7   À  s   † ÙN÷(ñ (r   r7   c                  ó&   € ] tR tRtRtR R ltRtR# )r9   iÊ  zO
Return a `mailto` link Element given an auto-mail link (`<foo@example.com>`).
c               ó$   € V ^8„  d   QhRRRRRR/# rà   r   )r   s   "r   r   Ú$AutomailInlineProcessor.__annotate__Î  s"   € ÷ (ñ (˜]ð (°#ð (Ð:Xñ (r   c           
     óp  € \         P                  ! R4      pV P                  VP                  ^4      4      pVP	                  R4      '       d   V\        R4      R pR R lpV Uu. uF  qe! \        V4      4      NK  	  pp\        P                  ! RP                  V4      4      Vn
        RV,           pRP                  V Uu. uF*  p\        P                  R\        V4      ,          ,           NK,  	  up4      pVP                  RV4       W1P                  ^ 4      VP                  ^ 4      3# u upi u upi )	z`Return an [`Element`][xml.etree.ElementTree.Element] containing a `mailto` link  of `group(1)`. rv  zmailto:Nc               ó    € V ^8„  d   QhRRRR/# )r   rö   r0  r   rH   r   )r   s   "r   r   Ú9AutomailInlineProcessor.handleMatch.<locals>.__annotate__Õ  s   € ÷ 	>ñ 	> ð 	>¨ñ 	>r   c                óÂ   € \         P                  P                  V 4      pV'       d!   RP                  \        P
                  V4      # R\        P
                  V 3,          # )z=Return entity definition by code, or the code if not defined.z{}{};z%s#%d;)r   Úcodepoint2namerŠ   r   r   ÚAMP_SUBSTITUTE)rö   r"   s   & r   rØ  Ú;AutomailInlineProcessor.handleMatch.<locals>.codepoint2nameÕ  sH   € ä×,Ñ,×0Ñ0°Ó6ˆFßØ—~‘~¤d×&9Ñ&9¸6ÓBÐBà¤4×#6Ñ#6¸Ð"=Õ=Ð=r   rˆ   z#%d;rw  )rÔ   rÕ   rš   r‰   rM   r	  rÂ   r   rû   rŒ   r‚   rÙ  r|  r¸   r¹   )	rl   ru   r¦   rÖ   ÚemailrØ  ÚletterÚlettersÚmailtos	   &&&      r   ry   Ú#AutomailInlineProcessor.handleMatchÎ  s  € ä�]Š]˜3ÓˆØ—‘˜aŸg™g a›jÓ)ˆØ×Ñ˜I×&Ò&Øœ#˜i›.˜/Ð*ˆEõ	>ñ >CÓC¹U°6�>¤# f£+Ö.¹UˆÐCÜ×#Ò# B§G¡G¨GÓ$4Ó5ˆŒà˜UÕ"ˆØ—‘Ù4:ó<Ù4:¨&ô ×-Ñ-°Ü˜f›+õ1&÷ &ð &Ù4:ñ<ó =ˆà
�‰ˆv�vÔØ—7‘7˜1“:˜qŸu™u Q›xÐ'Ð'ùò Dùò<s   Á&D.Ã0D3r   Nr²   r   r   r   r9   r9   Ê  s   † ñ÷(ñ (r   r9   )CrZ   Ú
__future__r   rˆ   r   Útypingr   r   r   r   rg   Úxml.etree.ElementTreerÔ   ÚElementTreer!   r   Úmarkdownr	   rE   ÚNOIMGr*   r,   rk  rj  rp  rq  ro  rg  rm  rh  rn  ri  r0   r2   r.   r4   rA   r8   r:   r>   r?   r<   rO   rQ   r^   rŸ   r¬   r@   r+   rÇ   rÚ   rå   r;   r)   r  r  r=   rB   rC   r/   r1   r-   r5   r3   r6   r7   r9   r   r   r   Ú<module>ræ     s5  ðñ(õ* #å ß =Ó =Û 	ß %Ð %Ý çÝ!õ*ð` 	€Ø \àL€Ø Mà€	Ø =à€Ø 7à€	Ø 5à:€Ø bà9Ð Ø càOÐ Ø Bà,€Ø Sà,€Ø Và,€Ø ?à,€Ø Bà9€Ø ?à
�%�-€Ø `à€Ø Sà€Ø 5à"Ð Ø :à8€Ø 'à<€Ø =à&€Ø ;ð
ð ð %à<€	Ø Và€Ø (õô�:ô ÷S?ñ S?ôl-�gô -ô`˜ô ô0 ô 0ô.˜Oô .ô&�wô ô:(˜ô (ô:'Ð+ô 'ô=Ð#;ô =ôY˜oô Yô2Ð'ô ô*)Ð7ô )ô*%'˜/ô %'ôPC˜ô CôL
PÐ+ô 
Pô_8˜/ô _8ôD%Ð.ô %ô05Ð2ô 5ôp)Ð$<ô )ô	Ð$<ô 	ô)Ð)Fô )ô(˜oô (ô(˜oö (r   