intellecton/venv/lib/python3.12/site-packages/markdown/__pycache__/inlinepatterns.cpython-312.pyc

309 lines
44 KiB
Text
Raw Normal View History

<EFBFBD>
K<>j<><6A><00><01><00>dZddlmZddlmZddlmZmZmZm Z ddl
Z
ddl m cm Z ddlmZerddlmZdPd <09>Zd
Z d Z d Z d Z dZ dZ dZ dZ dZ dZ dZ dZ dZ edzZ dZ! e Z" e!Z# dZ$ dZ% dZ& dZ' dZ( dZ) dQd<1F>Z*Gd <20>d!e <09>Z+Gd"<22>d#<23>Z,Gd$<24>d%e,<2C>Z-Gd&<26>d'e,<2C>Z.Gd(<28>d)e-<2D>Z/Gd*<2A>d+e-<2D>Z0Gd,<2C>d-e,<2C>Z1Gd.<2E>d/e-<2D>Z2Gd0<64>d1e1<65>Z3Gd2<64>d3e2<65>Z4Gd4<64>d5e-<2D>Z5Gd6<64>d7e1<65>Z6Gd8<64>d9e2<65>Z7Gd:<3A>d;e-<2D>Z8Gd<<3C>d=e-<2D>Z9Gd><3E>d?e9<65>Z:Gd@<40>dAe-<2D>Z;GdB<64>dCe;<3B>Z<GdD<64>dEe;<3B>Z=GdF<64>dGe=<3D>Z>GdH<64>dIe=<3D>Z?GdJ<64>dKe?<3F>Z@GdL<64>dMe-<2D>ZAGdN<64>dOe-<2D>ZBy)RaB
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.
<EFBFBD>)<01> annotations<6E>)<01>util)<04> TYPE_CHECKING<4E>Any<6E>
Collection<EFBFBD>
NamedTupleN)<01>entities)<01>Markdownc <01>6<00>tj<00>}|jtt<00>dd<02>|jt t |<00>dd<04>|jtt|<00>dd<06>|jtt|<00>dd<08>|jtt|<00>d d
<EFBFBD>|jtt|<00>d d <0C>|jtt|<00>d d<0E>|jt!t|<00>dd<10>|jt#t$|<00>dd<12>|jt't(|<00>dd<14>|jt+t,d<15>dd<17>|jt/t0|<00>dd<19>|jt/t2|<00>dd<1B>|jt5t6<00>dd<1D>|jt9d<1E>dd <20>|jt;d!<21>d"d#<23>|S)$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.
<20>backtick<63><6B><00>escape<70><65><00> reference<63><65><00>link<6E><6B><00>
image_link<EFBFBD><EFBFBD><00>image_reference<63><65><00>short_reference<63><65><00>short_image_ref<65>}<00>autolink<6E>x<00>automail<69>n<00>br<62> linebreak<61>d<00>html<6D>Z<00>entity<74>P<00>
not_strong<EFBFBD>Fz\*<2A> em_strong<6E><<00>_<>
em_strong2<EFBFBD>2)r<00>Registry<72>register<65>BacktickInlineProcessor<6F> BACKTICK_RE<52>EscapeInlineProcessor<6F> ESCAPE_RE<52>ReferenceInlineProcessor<6F> REFERENCE_RE<52>LinkInlineProcessor<6F>LINK_RE<52>ImageInlineProcessor<6F> IMAGE_LINK_RE<52>ImageReferenceInlineProcessor<6F>IMAGE_REFERENCE_RE<52>ShortReferenceInlineProcessor<6F>"ShortImageReferenceInlineProcessor<6F>AutolinkInlineProcessor<6F> AUTOLINK_RE<52>AutomailInlineProcessor<6F> AUTOMAIL_RE<52>SubstituteTagInlineProcessor<6F> LINE_BREAK_RE<52>HtmlInlineProcessor<6F>HTML_RE<52> ENTITY_RE<52>SimpleTextInlineProcessor<6F> NOT_STRONG_RE<52>AsteriskProcessor<6F>UnderscoreProcessor)<03>md<6D>kwargs<67>inlinePatternss <20>Z/home/antigravity/intellecton/venv/lib/python3.12/site-packages/markdown/inlinepatterns.py<70>build_inlinepatternsrP5s<><00><00>&<1A>]<5D>]<5D>_<EFBFBD>N<EFBFBD><12><1B><1B>3<>K<EFBFBD>@<40>*<2A>c<EFBFBD>R<><12><1B><1B>1<>)<29>R<EFBFBD>@<40>(<28>C<EFBFBD>P<><12><1B><1B>4<>\<5C>2<EFBFBD>F<> <0B>UX<55>Y<><12><1B><1B>/<2F><07><12><<3C>f<EFBFBD>c<EFBFBD>J<><12><1B><1B>0<><1D><02>C<>\<5C>SV<53>W<><12><1B><1B>%<25>&8<>"<22>=<3D>?P<>RU<52><06><13><1B><1B>%<25>l<EFBFBD>B<EFBFBD>7<>9J<39>C<EFBFBD><06><13><1B><1B>*<2A>+=<3D>r<EFBFBD>B<>DU<44>WZ<57><06><13><1B><1B>3<>K<EFBFBD><12>D<>j<EFBFBD>RU<52>V<><12><1B><1B>3<>K<EFBFBD><12>D<>j<EFBFBD>RU<52>V<><12><1B><1B>8<><1D><04>M<>{<7B>\_<>`<60><12><1B><1B>/<2F><07><12><<3C>f<EFBFBD>b<EFBFBD>I<><12><1B><1B>/<2F> <09>2<EFBFBD>><3E><08>"<22>M<><12><1B><1B>5<>m<EFBFBD>D<>l<EFBFBD>TV<54>W<><12><1B><1B>-<2D>e<EFBFBD>4<>k<EFBFBD>2<EFBFBD>F<><12><1B><1B>/<2F><04>5<>|<7C>R<EFBFBD>H<> <19><19>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<01><><00>|jd<01>r|jd<01>s"|jd<02>r|jd<02>r|ddS|S)z#Remove quotes from around a string.<2E>"<22>'r<00><><EFBFBD><EFBFBD><EFBFBD>)<02>
startswith<EFBFBD>endswith)<01>strings rO<00>dequoterY<00>sE<00><00> <0F> <1A> <1A>3<EFBFBD> <1F>F<EFBFBD>O<EFBFBD>O<EFBFBD>C<EFBFBD>$8<><0E><19><19>#<23><1E>6<EFBFBD>?<3F>?<3F>3<EFBFBD>#7<><15>a<EFBFBD><02>|<7C><1B><15> rQc<01>0<00>eZdZUdZded<ded<ded<y)<08> EmStrongItemzEmphasis/strong pattern item.<2E>re.Pattern[str]<5D>pattern<72>str<74>builder<65>tagsN)<05>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__<5F>__annotations__<5F>rQrOr[r[<00>s<00><00>'<27> <1C><1C> <10>L<EFBFBD>
<0A>IrQr[c<01>j<00>eZdZUdZe<04>Zded< ded<ded<ddd <09>Zdd
<EFBFBD>Zdd <0B>Z dd <0C>Z
dd <0A>Z y)<14>Patterna<6E>
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.
zCollection[str]<5D>ANCESTOR_EXCLUDESr\<00> compiled_re<72>Markdown | NonerLNc<01><><00>||_tjd|ztjtjz<00>|_||_y)a!
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)r]<00>re<72>compile<6C>DOTALL<4C>UNICODErjrL<00><03>selfr]rLs rO<00>__init__zPattern.__init__<5F>s=<00><00><1F><04> <0C><1D>:<3A>:<3A>&6<><17>&@<40>&(<28>i<EFBFBD>i<EFBFBD>"<22>*<2A>*<2A>&<<3C>><3E><04><18><15><04>rQc<01><00>|jS)z' Return a compiled regular expression. )rj<00>rrs rO<00>getCompiledRegExpzPattern.getCompiledRegExp<78>s<00><00><13><1F><1F>rQc<01><00>y)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.
Nrf<00>rr<00>ms rO<00> handleMatchzPattern.handleMatch<63>s<00><00> rQc<01>.<00>|jjS)z+ Return class name, to define pattern type )<02> __class__rarus rO<00>typez Pattern.types<00><00><13>~<7E>~<7E>&<26>&<26>&rQc<01><><00><03> |jjdj<00><03>fd<02>}tj
j ||<01>S#t$r|cYSwxYw)<03>> Return unescaped text given text with an inline placeholder. <20>inlinec<01><><00><01>|jd<01>}|<01>vrB<72>j|<01>}t|t<00>r|Sdj |j <00><00>Sy)Nr<00>)<06>group<75>get<65>
isinstancer^<00>join<69>itertext)ry<00>id<69>value<75>stashs <20>rO<00> get_stashz#Pattern.unescape.<locals>.get_stashsP<00><><00><12><17><17><11><1A>B<EFBFBD><11>U<EFBFBD>{<7B><1D> <09> <09>"<22> <0A><05><1D>e<EFBFBD>S<EFBFBD>)<29> <20>L<EFBFBD><1E>7<EFBFBD>7<EFBFBD>5<EFBFBD>><3E>><3E>#3<>4<>4<> rQ<00>rL<00>treeprocessors<72> stashed_nodes<65>KeyErrorr<00>INLINE_PLACEHOLDER_RE<52>sub<75>rr<00>textr<74>r<>s @rO<00>unescapezPattern.unescapesX<00><><00> <18><18>G<EFBFBD>G<EFBFBD>*<2A>*<2A>8<EFBFBD>4<>B<>B<>E<EFBFBD> 5<><14>)<29>)<29>-<2D>-<2D>i<EFBFBD><14>><3E>><3E><><18> <18><17>K<EFBFBD> <18>s<00>#A <00> A<03>A<03>N<>r]r^rLrk)<02>returnz
re.Pattern)ry<00> re.Match[str]r<>zetree.Element | str)r<>r^<00>r<>r^r<>r^) rarbrcrd<00>tuplerirersrvrzr}r<>rfrQrOrhrh<00>sB<00><00><08>&*/<2F><17><15><EFBFBD>0<><08>
!<21> <20><17><17><15>" <20>  <0A>'<27>?rQrhc<01>"<00>eZdZdZddd<03>Zdd<04>Zy)<08>InlineProcessorz<72>
Base class that inline processors subclass.
This is the newer style inline processor that uses a more
efficient and flexible search approach.
Nc<01><><00>||_tj|tjtjz<00>|_d|_||_y)a"
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)r]rmrnrorprj<00> safe_moderLrqs rOrszInlineProcessor.__init__$s;<00><00><1F><04> <0C><1D>:<3A>:<3A>g<EFBFBD>r<EFBFBD>y<EFBFBD>y<EFBFBD>2<EFBFBD>:<3A>:<3A>/E<>F<><04><18><1F><04><0E><14><04>rQc<01><00>y)a<>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.
Nrf<00>rrry<00>datas rOrzzInlineProcessor.handleMatch5s<00><00>& rQr<>r<>)ryr<>r<>r^r<>z9tuple[etree.Element | str | None, int | None, int | None]<5D>rarbrcrdrsrzrfrQrOr<>r<>s<00><00><08><15>" rQr<>c<01><00>eZdZdZdd<02>Zy)<05>SimpleTextPatternz2 Return a simple text of `group(2)` of a Pattern. c<01>$<00>|jd<01>S)z< Return string content of `group(2)` of a matching pattern. <20>)r<>rxs rOrzzSimpleTextPattern.handleMatchMs<00><00><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>rQN<>ryr<>r<>r^<00>rarbrcrdrzrfrQrOr<>r<>Ks
<00><00><<3C>rQr<>c<01><00>eZdZdZdd<02>Zy)rHz2 Return a simple text of `group(1)` of a Pattern. c<01>f<00>|jd<01>|jd<02>|jd<02>fS)z< Return string content of `group(1)` of a matching pattern. rr)r<><00>start<72>endr<64>s rOrzz%SimpleTextInlineProcessor.handleMatchTs'<00><00><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>q<EFBFBD>u<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>/<2F>/rQN<>ryr<>r<>r^r<>ztuple[str, int, int]r<>rfrQrOrHrHRs
<00><00><<3C>0rQrHc<01><00>eZdZdZdd<02>Zy)r3z Return an escaped character. c<01>L<00>|jd<01>}||jjvrYdjtj
t |<03>tj<00>|jd<03>|jd<03>fSd|jd<03>|jd<03>fS)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`.
r<00>{}{}{}rN)
r<EFBFBD>rL<00> ESCAPED_CHARS<52>formatr<00>STX<54>ord<72>ETXr<58>r<>)rrryr<><00>chars rOrzz!EscapeInlineProcessor.handleMatch\sw<00><00><11>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04> <0F>4<EFBFBD>7<EFBFBD>7<EFBFBD>(<28>(<28> (<28><1B>?<3F>?<3F>4<EFBFBD>8<EFBFBD>8<EFBFBD>S<EFBFBD><14>Y<EFBFBD><04><08><08>A<>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>q<EFBFBD>u<EFBFBD>u<EFBFBD>UV<55>x<EFBFBD>W<> W<><17><11><17><17><11><1A>Q<EFBFBD>U<EFBFBD>U<EFBFBD>1<EFBFBD>X<EFBFBD>-<2D> -rQN)ryr<>r<>r^r<>ztuple[str | None, int, int]r<>rfrQrOr3r3Ys
<00><00>(<28> .rQr3c<01> <00>eZdZdZdd<02>Zdd<03>Zy)<07>SimpleTagPatternz]
Return element of type `tag` with a text attribute of `group(3)`
of a Pattern.
c<01>><00>tj||<01>||_y)z<>
Create an instant of an simple tag pattern.
Arguments:
pattern: A regular expression that matches a pattern.
tag: Tag of element.
N)rhrs<00>tag<61>rrr]r<>s rOrszSimpleTagPattern.__init__rs<00><00> <10><18><18><14>w<EFBFBD>'<27><16><04><08>0rQc<01>p<00>tj|j<00>}|jd<01>|_|S)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.
<20>)<05>etree<65>Elementr<74>r<>r<>)rrry<00>els rOrzzSimpleTagPattern.handleMatchs*<00><00>
<13>]<5D>]<5D>4<EFBFBD>8<EFBFBD>8<EFBFBD> $<24><02><13>'<27>'<27>!<21>*<2A><02><07><11> rQN<>r]r^r<>r^<00>ryr<>r<><00> etree.Elementr<74>rfrQrOr<>r<>ls<00><00><08>
1<>rQr<>c<01> <00>eZdZdZdd<02>Zdd<03>Zy)<07>SimpleTagInlineProcessorz]
Return element of type `tag` with a text attribute of `group(2)`
of a Pattern.
c<01>><00>tj||<01>||_y)z<>
Create an instant of an simple tag processor.
Arguments:
pattern: A regular expression that matches a pattern.
tag: Tag of element.
N)r<>rsr<>r<>s rOrsz!SimpleTagInlineProcessor.__init__<5F>s<00><00> <18> <20> <20><14>w<EFBFBD>/<2F><16><04><08>0rQc<01><><00>tj|j<00>}|jd<01>|_||j d<02>|j d<02>fS)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<>r<>r<><00>rrryr<>r<>s rOrzz$SimpleTagInlineProcessor.handleMatch<63>sB<00><00>
<13>]<5D>]<5D>4<EFBFBD>8<EFBFBD>8<EFBFBD> $<24><02><13>'<27>'<27>!<21>*<2A><02><07><11>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>q<EFBFBD>u<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>'<27>'rQNr<4E><00>ryr<>r<>r^r<>ztuple[etree.Element, int, int]r<>rfrQrOr<>r<><00>s<00><00><08>
1<>(rQr<>c<01><00>eZdZdZdd<02>Zy)<05>SubstituteTagPattern<72>3 Return an element of type `tag` with no children. c<01>@<00>tj|j<00>S)<01>H Return empty [`Element`][xml.etree.ElementTree.Element] of type `tag`. )r<>r<>r<>rxs rOrzz SubstituteTagPattern.handleMatch<63>s<00><00><14>}<7D>}<7D>T<EFBFBD>X<EFBFBD>X<EFBFBD>&<26>&rQNr<4E>r<>rfrQrOr<>r<><00>s
<00><00>=<3D>'rQr<>c<01><00>eZdZdZdd<02>Zy)rCr<>c<01><><00>tj|j<00>|jd<01>|j d<01>fS)r<>r)r<>r<>r<>r<>r<>r<>s rOrzz(SubstituteTagInlineProcessor.handleMatch<63>s,<00><00><14>}<7D>}<7D>T<EFBFBD>X<EFBFBD>X<EFBFBD>&<26><01><07><07><01>
<EFBFBD>A<EFBFBD>E<EFBFBD>E<EFBFBD>!<21>H<EFBFBD><<3C><rQNr<4E>r<>rfrQrOrCrC<00>s
<00><00>=<3D>=rQrCc<01> <00>eZdZdZdd<02>Zdd<03>Zy)r1zA Return a `<code>` element containing the escaped matching text. c<01><><00>tj||<01>djtjt d<02>tj <00>|_d|_y)Nr<4E><00>\<5C>code) r<>rsr<>rr<>r<>r<><00>ESCAPED_BSLASHr<48>)rrr]s rOrsz BacktickInlineProcessor.__init__<5F>s=<00><00><17> <20> <20><14>w<EFBFBD>/<2F>&<26>o<EFBFBD>o<EFBFBD>d<EFBFBD>h<EFBFBD>h<EFBFBD><03>D<EFBFBD> <09>4<EFBFBD>8<EFBFBD>8<EFBFBD>L<><04><1B><19><04><08>0rQc<01><><00>|jd<01>r<>tj|j<00>}t j
t j |jd<01>j<00><00><00>|_||jd<02>|jd<02>fS|jd<03>jd|j<00>|jd<02>|jd<02>fS)a<>
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.
r<>rrz\\) r<>r<>r<>r<>r<00> AtomicString<6E> code_escape<70>stripr<70>r<>r<><00>replacer<65>r<>s rOrzz#BacktickInlineProcessor.handleMatch<63>s<><00><00> <0A>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A><16><1D><1D>t<EFBFBD>x<EFBFBD>x<EFBFBD>(<28>B<EFBFBD><1A>'<27>'<27><04>(8<>(8<><11><17><17><11><1A>9I<39>9I<39>9K<39>(L<>M<>B<EFBFBD>G<EFBFBD><15>q<EFBFBD>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>1<EFBFBD>5<EFBFBD>5<EFBFBD><11>8<EFBFBD>+<2B> +<2B><14>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>%<25>%<25>f<EFBFBD>d<EFBFBD>.A<>.A<>B<>A<EFBFBD>G<EFBFBD>G<EFBFBD>A<EFBFBD>J<EFBFBD>PQ<50>PU<50>PU<50>VW<56>PX<50>X<> XrQN)r]r^)ryr<>r<>r^r<>z$tuple[etree.Element | str, int, int]r<>rfrQrOr1r1<00>s<00><00>K<>1<> YrQr1c<01><00>eZdZdZdd<02>Zy)<05>DoubleTagPattern<72>fReturn a ElementTree element nested in tag2 nested in tag1.
Useful for strong emphasis etc.
c<01>(<00>|jjd<01>\}}tj|<02>}tj||<03>}|j d<02>|_t|j<00><00>dk(r|j d<04>|_ |S)z<>
Return [`Element`][xml.etree.ElementTree.Element] in following format:
`<tag1><tag2>group(3)</tag2>group(4)</tag2>` where `group(4)` is optional.
<20>,r<><00><00>)
r<EFBFBD><00>splitr<74>r<><00>
SubElementr<EFBFBD>r<><00>len<65>groups<70>tail)rrry<00>tag1<67>tag2<67>el1<6C>el2s rOrzzDoubleTagPattern.handleMatch<63>so<00><00> <1A>X<EFBFBD>X<EFBFBD>^<5E>^<5E>C<EFBFBD>(<28>
<EFBFBD><04>d<EFBFBD><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><13><1E><1E>s<EFBFBD>D<EFBFBD>)<29><03><14>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A><03><08> <0E>q<EFBFBD>x<EFBFBD>x<EFBFBD>z<EFBFBD>?<3F>a<EFBFBD> <1F><18>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>C<EFBFBD>H<EFBFBD><12>
rQNr<4E>r<>rfrQrOr<>r<><00>s <00><00><08>
rQr<>c<01><00>eZdZdZdd<02>Zy)<05>DoubleTagInlineProcessorr<72>c<01>j<00>|jjd<01>\}}tj|<03>}tj||<04>}|j d<02>|_t|j<00><00>dk(r|j d<03>|_ ||jd<04>|jd<04>fS)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<>r<>r<>r<>)rrryr<>r<>r<>r<>r<>s rOrzz$DoubleTagInlineProcessor.handleMatch<63>s<><00><00> <1A>X<EFBFBD>X<EFBFBD>^<5E>^<5E>C<EFBFBD>(<28>
<EFBFBD><04>d<EFBFBD><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><13><1E><1E>s<EFBFBD>D<EFBFBD>)<29><03><14>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A><03><08> <0E>q<EFBFBD>x<EFBFBD>x<EFBFBD>z<EFBFBD>?<3F>a<EFBFBD> <1F><18>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD>C<EFBFBD>H<EFBFBD><12>A<EFBFBD>G<EFBFBD>G<EFBFBD>A<EFBFBD>J<EFBFBD><01><05><05>a<EFBFBD><08>(<28>(rQNr<4E>r<>rfrQrOr<>r<><00>s <00><00><08>
)rQr<>c<01>(<00>eZdZdZdd<02>Zdd<03>Zdd<04>Zy)rEz1 Store raw inline html and return a placeholder. c<01><><00>|j|j|jd<01><00><00>}|jjj |<03>}||j d<02>|jd<02>fS)zL Store the text of `group(1)` of a pattern and return a placeholder string. rr)<08>backslash_unescaper<65>r<>rL<00> htmlStash<73>storer<65>r<>)rrryr<><00>rawhtml<6D> place_holders rOrzzHtmlInlineProcessor.handleMatch<63>sZ<00><00><16>)<29>)<29>$<24>-<2D>-<2D><01><07><07><01>
<EFBFBD>*C<>D<><07><1B>w<EFBFBD>w<EFBFBD>(<28>(<28>.<2E>.<2E>w<EFBFBD>7<> <0C><1B>Q<EFBFBD>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD><11><15><15>q<EFBFBD><18>1<>1rQc<01><><00><00><03> <00>jjdj<00>d<03><00>fd<02> }tj
j ||<01>S#t$r|cYSwxYw)rr<>c<01><><00><02>|jd<01>}<01>j|<01>}|<02>+ <00>j<00>jj |<02><00>Sy#t
$rd|zcYSwxYw)Nrz\%s)r<>r<>r<>rL<00>
serializer<EFBFBD> Exception)ryr<>r<>rrr<>s <20><>rOr<>z/HtmlInlineProcessor.unescape.<locals>.get_stashsf<00><><00><12><17><17><11><1A>B<EFBFBD><19>I<EFBFBD>I<EFBFBD>b<EFBFBD>M<EFBFBD>E<EFBFBD><14> <20>*<2A><1F>=<3D>=<3D><14><17><17>);<3B>);<3B>E<EFBFBD>)B<>C<>C<>!<21><>!<21>*<2A>!<21>E<EFBFBD>><3E>)<29>*<2A>s<00>)A<00>A#<03>"A#r<>r<>r<>s` @rOr<>zHtmlInlineProcessor.unescape<70>sX<00><><00> <18><18>G<EFBFBD>G<EFBFBD>*<2A>*<2A>8<EFBFBD>4<>B<>B<>E<EFBFBD> *<2A><14>)<29>)<29>-<2D>-<2D>i<EFBFBD><14>><3E>><3E><><18> <18><17>K<EFBFBD> <18>s<00>#A<00> A<03>Ac<01><><00> |jjdj}dd<02>}|j ||<01>S#t$r|cYSwxYw)zG Return text with backslash escapes undone (backslashes are restored). r<>c<01>H<00>tt|jd<01><00><00>S)Nr)<03>chr<68>intr<74>)rys rO<00> _unescapez9HtmlInlineProcessor.backslash_unescape.<locals>._unescapes<00><00><16>s<EFBFBD>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A><EFBFBD>'<27> 'rQr<>)rLr<><00>REr<45>r<>)rrr<>r<>r<>s rOr<>z&HtmlInlineProcessor.backslash_unescapesO<00><00> <18><15><17><17>'<27>'<27>
<EFBFBD>3<>6<>6<>B<EFBFBD> (<28><12>v<EFBFBD>v<EFBFBD>i<EFBFBD><14>&<26>&<26><> <18> <18><17>K<EFBFBD> <18>s<00>#;<00> A <03>A Nr<4E>r<>)rarbrcrdrzr<>r<>rfrQrOrErE<00>s<00><00>;<3B>2<> ?<3F>&
'rQrEc <01>D<00>eZdZdZeej eejejz<00>dd<03>eej e
ejejz<00>dd<04>eej e ejejz<00>dd<03>eej e ejejz<00>dd<07>eej e ejejz<00>dd<08>gZ dd <09>Zdd
<EFBFBD>Zdd <0B>Z dd <0C>Zdd <0A>Zdd<0E>Zy)rJzGEmphasis processor for handling strong and em matches inside asterisks.<2E>double<6C> strong,em<65> em,strong<6E>double2<65>single<6C>strong<6E>emc<01>z<00>tj|<02>}|jd<01>}|j||d|<03>|S)zReturn single tag.r<>N)r<>r<>r<><00>parse_sub_patterns)rrryr<><00>idxr<78>r<>s rO<00> build_singlezAsteriskProcessor.build_single+s6<00><00><13>m<EFBFBD>m<EFBFBD>C<EFBFBD> <20><03><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04> <0C><1F><1F><04>c<EFBFBD>4<EFBFBD><13>5<><12>
rQc<01>p<00>|jd<01>\}}tj|<04>}tj|<05>}|jd<02>}|j ||d|<03>|j |<07>t |j<00><00>dk(r%|jd<04>}|j ||||<03>|S)zReturn double tag.r<>r<>Nr<4E>)r<>r<>r<>r<>r<00>appendr<64>r<><00> rrryr`r r<>r<>r<>r<>r<>s rO<00> build_doublezAsteriskProcessor.build_double2s<><00><00><1A>Z<EFBFBD>Z<EFBFBD><03>_<EFBFBD>
<EFBFBD><04>d<EFBFBD><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04> <0C><1F><1F><04>c<EFBFBD>4<EFBFBD><13>5<> <0B>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> <0E>q<EFBFBD>x<EFBFBD>x<EFBFBD>z<EFBFBD>?<3F>a<EFBFBD> <1F><14>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>D<EFBFBD> <10> #<23> #<23>D<EFBFBD>#<23>s<EFBFBD>C<EFBFBD> 8<><12>
rQc<01>8<00>|jd<01>\}}tj|<04>}tj|<05>}|jd<02>}|j ||d|<03>|jd<04>}|j |<07>|j ||d|<03>|S)zFReturn double tags (variant 2): `<strong>text <em>text</em></strong>`.r<>r<>Nr<4E>)r<>r<>r<>r<>rr r s rO<00> build_double2zAsteriskProcessor.build_double2@s<><00><00><1A>Z<EFBFBD>Z<EFBFBD><03>_<EFBFBD>
<EFBFBD><04>d<EFBFBD><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><13>m<EFBFBD>m<EFBFBD>D<EFBFBD>!<21><03><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04> <0C><1F><1F><04>c<EFBFBD>4<EFBFBD><13>5<><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><04> <0B>
<EFBFBD>
<EFBFBD>3<EFBFBD><0F> <0C><1F><1F><04>c<EFBFBD>4<EFBFBD><13>5<><12>
rQc<01>2<00>d}d}t|<01>}||kr<>|jj||<06>r<>d}t|j<00>D]<5D>\} }
| |kr<01> |
j
j||<06>} | s<01>+||| j d<01>} | r|<03>| |_n| |_|j| |
j|
j| <09>} |j| <0A>| }| jd<01>x}}d}<08><>|s |dz }n|dz }||kr<01><>||d} | r|<03>| |_y| |_yy)a/
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.
rFNTr)r<>rj<00>match<63> enumerate<74>PATTERNSr]r<>r<>r<><00> build_elementr_r`r r<>)rrr<><00>parent<6E>lastr <00>offset<65>pos<6F>length<74>matched<65>index<65>itemryr<>r<>s rOrz$AsteriskProcessor.parse_sub_patternsMs8<00><00><13><06><0F><03><14>T<EFBFBD><19><06><11>F<EFBFBD>l<EFBFBD><13><1F><1F>%<25>%<25>d<EFBFBD>C<EFBFBD>0<><1F><07>#,<2C>T<EFBFBD>]<5D>]<5D>#;<3B>'<27>K<EFBFBD>E<EFBFBD>4<EFBFBD><1C><03>|<7C> <20><1C> <0C> <0C>*<2A>*<2A>4<EFBFBD><13>5<>A<EFBFBD><18>
$<24>F<EFBFBD>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>6<><04><1F>#<23>/<2F>,0<><04> <09>.2<EFBFBD><06> <0B>!<21>/<2F>/<2F><01>4<EFBFBD><<3C><<3C><14><19><19>E<EFBFBD>R<><02><1E> <0A> <0A>b<EFBFBD>)<29>!<21><04>'(<28>u<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>/<2F><06><13>"&<26><07>+'<27>,<1F><17>1<EFBFBD>H<EFBFBD>C<EFBFBD><14>q<EFBFBD><08><03>A<12>F<EFBFBD>l<EFBFBD>F<14>F<EFBFBD>G<EFBFBD>}<7D><04> <0F><13><1F> <20><04> <09>"<22><06> <0B> rQc<01><><00>|dk(r|j|||<04>S|dk(r|j|||<04>S|j|||<04>S)zElement builder.rr)rrr
)rrryr_r`rs rOrzAsteriskProcessor.build_element<6E>sS<00><00> <13>i<EFBFBD> <1F><17>%<25>%<25>a<EFBFBD><14>u<EFBFBD>5<> 5<> <14><08> <20><17>$<24>$<24>Q<EFBFBD><04>e<EFBFBD>4<> 4<><17>$<24>$<24>Q<EFBFBD><04>e<EFBFBD>4<> 4rQc<01>D<00>d}d}d}t|j<00>D]~\}}|jj||j d<02><00>}|s<01>4|j d<02>}|j d<02>}|j ||j|j|<06>}n|||fS)zParse patterns.Nr) rrr]rr<>r<>rr_r`) rrryr<>r<>r<>r<>rr<00>m1s rOrzzAsteriskProcessor.handleMatch<63>s<><00><00><12><02><14><05><12><03>$<24>T<EFBFBD>]<5D>]<5D>3<> <16>K<EFBFBD>E<EFBFBD>4<EFBFBD><15><1C><1C>#<23>#<23>D<EFBFBD>!<21>'<27>'<27>!<21>*<2A>5<>B<EFBFBD><11><1A><08><08><11> <0B><05><18>f<EFBFBD>f<EFBFBD>Q<EFBFBD>i<EFBFBD><03><19>'<27>'<27><02>D<EFBFBD>L<EFBFBD>L<EFBFBD>$<24>)<29>)<29>U<EFBFBD>K<><02><15>  <16><12>5<EFBFBD>#<23>~<7E>rQN)ryr<>r<>r^r r<>r<>r<>)ryr<>r`r^r r<>r<>r<>)
r<EFBFBD>r^rr<>rzetree.Element | Noner r<>r<><00>None)
ryr<>r_r^r`r^rr<>r<>r<><00>ryr<>r<>r^r<>z3tuple[etree.Element | None, int | None, int | None])rarbrcrdr[rmrn<00> EM_STRONG_RErorp<00> STRONG_EM_RE<52> STRONG_EM3_RE<52> STRONG_RE<52> EMPHASIS_RErr
rrrrrzrfrQrOrJrJs<00><00>Q<> <15>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0C>b<EFBFBD>i<EFBFBD>i<EFBFBD>"<22>*<2A>*<2A>.D<>E<>x<EFBFBD>Q\<5C>]<5D><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0C>b<EFBFBD>i<EFBFBD>i<EFBFBD>"<22>*<2A>*<2A>.D<>E<>x<EFBFBD>Q\<5C>]<5D><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0A>r<EFBFBD>y<EFBFBD>y<EFBFBD>2<EFBFBD>:<3A>:<3A>/E<>F<> <09>S^<5E>_<><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <09>2<EFBFBD>9<EFBFBD>9<EFBFBD>r<EFBFBD>z<EFBFBD>z<EFBFBD>+A<>B<>H<EFBFBD>h<EFBFBD>W<><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0B>R<EFBFBD>Y<EFBFBD>Y<EFBFBD><12><1A><1A>-C<>D<>h<EFBFBD>PT<50>U<> <06>H<EFBFBD>P<01><13> <13> <13>;#<23><17>;#<23>!.<2E>;#<23>6J<36>;#<23>QT<51>;#<23> <0A>;#<23>z5<>rQrJc <01><><00>eZdZdZeej eejejz<00>dd<03>eej e
ejejz<00>dd<04>eej e ejejz<00>dd<03>eej e ejejz<00>dd<07>eej e ejejz<00>dd<08>gZy )
rKzIEmphasis processor for handling strong and em matches inside underscores.rrrrrrrN)rarbrcrdr[rmrn<00> EM_STRONG2_RErorp<00> STRONG_EM2_RE<52>SMART_STRONG_EM_RE<52>SMART_STRONG_RE<52>SMART_EMPHASIS_RErrfrQrOrKrK<00>s<><00><00>S<> <15>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0A>r<EFBFBD>y<EFBFBD>y<EFBFBD>2<EFBFBD>:<3A>:<3A>/E<>F<><08>R]<5D>^<5E><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> <0A>r<EFBFBD>y<EFBFBD>y<EFBFBD>2<EFBFBD>:<3A>:<3A>/E<>F<><08>R]<5D>^<5E><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> 2<>B<EFBFBD>I<EFBFBD>I<EFBFBD><02>
<EFBFBD>
<EFBFBD>4J<EFBFBD>K<>Y<EFBFBD>Xc<58>d<><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD><0F><12><19><19>R<EFBFBD>Z<EFBFBD>Z<EFBFBD>1G<31>H<>(<28>T\<5C>]<5D><14>Z<EFBFBD>R<EFBFBD>Z<EFBFBD>Z<EFBFBD> 1<>2<EFBFBD>9<EFBFBD>9<EFBFBD>r<EFBFBD>z<EFBFBD>z<EFBFBD>3I<33>J<>H<EFBFBD>VZ<56>[<5B> <06>H<EFBFBD>PrQrKc<01><><00>eZdZdZej
dej ejz<00>Zej
d<03>Z dd<04>Z
d d<05>Z d
d<06>Z y) r7z- Return a link element from the given match. z2\(\s*(?:(<[^<>]*>)\s*(?:('[^']*'|"[^"]*")\s*)?\))?z\sc<01>2<00>|j||jd<01><00>\}}}|sy|j||<04>\}}}}|sytjd<03>}||_|j d|<06>|<07>|j d|<07>||jd<01>|fS)zS Return an `a` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. r<00>NNN<4E>a<>href<65>title)<08>getTextr<74><00>getLinkr<6B>r<>r<><00>setr<74>) rrryr<>r<>r<00>handledr2r3r<>s rOrzzLinkInlineProcessor.handleMatch<63>s<><00><00>#<23>|<7C>|<7C>D<EFBFBD>!<21>%<25>%<25><01>(<28>;<3B><1C><04>e<EFBFBD>W<EFBFBD><16>#<23>&*<2A>l<EFBFBD>l<EFBFBD>4<EFBFBD><15>&?<3F>#<23><04>e<EFBFBD>U<EFBFBD>G<EFBFBD><16>#<23> <12>]<5D>]<5D>3<EFBFBD> <1F><02><16><02><07>
<EFBFBD><06><06>v<EFBFBD>t<EFBFBD><1C> <10> <1C> <0E>F<EFBFBD>F<EFBFBD>7<EFBFBD>E<EFBFBD> "<22><11>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>u<EFBFBD>$<24>$rQc <01><><00>d}d}d}|jj||<02><04>}|rm|jd<05>r\|jd<05>ddj<00>}|jd<07>r|jd<07>dd}|j d<08>}d }<05>nc|<06>r`d}d}|j <00>} | }d}
d} d} d} d}d}d}d}d}t |t |<01><00>D<00>]}||}|d
k(r|s|dz }n~|dkDry|dz}ns|d k(r4| dk7r| |k(s
|dk7r||k(rd}nW|s|dz}nO|dkDrJ|dz}|dk(r@|dz}
n:|d vr6| sd }|}d}|dz} |} n&|| k7r
|s|dz}|}n|| k(r|dz} n |r
||k(r|dz}|dz }|dk(r^| dk\r%| |k(r || | dz
}dj|| | dz
<00>}n2|dk\r%||k(r || |dz
}dj|||dz
<00>}n|| |dz
}n |d k7s<02><01>|}<12><01>|dk7r|dk(r || |
dz
}|
}d}|dk(}|<04>B|jjd t|j|j<00><00><00><00>}|j|<03>j<00>}||||fS)z?Parse data between `()` of `[Text]()` allowing recursive `()`. r<>NF<4E>rrrUr<>rT<>(<28>))rTrS<00> ) <0C>RE_LINKrr<>r<>r<><00>ranger<65>r<><00>RE_TITLE_CLEANr<4E>rYr<>)rrr<>rr2r3r7ry<00> bracket_count<6E>backtrack_count<6E> start_index<65> last_bracket<65>quote<74> start_quote<74>
exit_quote<EFBFBD>ignore_matches<65> alt_quote<74>start_alt_quote<74>exit_alt_quoterr<00>cs rOr5zLinkInlineProcessor.getLink<6E>s<00><00><12><04> <20><05><17><07> <10>L<EFBFBD>L<EFBFBD> <1E> <1E>t<EFBFBD><15> <1E> /<2F><01> <0C><11><17><17><11><1A><14>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>a<EFBFBD><02>#<23>)<29>)<29>+<2B>D<EFBFBD><10>w<EFBFBD>w<EFBFBD>q<EFBFBD>z<EFBFBD><19><07><07><01>
<EFBFBD>1<EFBFBD>R<EFBFBD>(<28><05><15>E<EFBFBD>E<EFBFBD>!<21>H<EFBFBD>E<EFBFBD><1A>G<EFBFBD> <0E><1D>M<EFBFBD><1F>O<EFBFBD><1B>%<25>%<25>'<27>K<EFBFBD><1F>E<EFBFBD><1D>L<EFBFBD>!%<25>E<EFBFBD><1C>K<EFBFBD><1B>J<EFBFBD>"<22>N<EFBFBD><1D>I<EFBFBD> <20>O<EFBFBD><1F>N<EFBFBD><16>D<EFBFBD><1C>U<EFBFBD>C<EFBFBD><04>I<EFBFBD>.<2E>; <1D><03><18><13>I<EFBFBD><01><14><03>8<EFBFBD>*<2A>%<25><11>*<2A> <0A>(<28>1<EFBFBD>,<2C>'<27>1<EFBFBD>,<2C><0F><16>#<23>X<EFBFBD>$<24>r<EFBFBD>)<29>e<EFBFBD>t<EFBFBD>m<EFBFBD><1E>SU<53>AU<41>Zc<5A>gk<67>Zk<5A>()<29> <0A>+<2B>%<25><11>*<2A> <0A>(<28>1<EFBFBD>,<2C>'<27>1<EFBFBD>,<2C><0F>*<2A>a<EFBFBD>/<2F>+0<>1<EFBFBD>9<EFBFBD>L<EFBFBD><16>*<2A>_<EFBFBD> <20>*.<2E><0E>*7<><0F>()<29> <0A>&+<2B>a<EFBFBD>i<EFBFBD> <0B> !<21><05><1A>e<EFBFBD><1A>I<EFBFBD>*/<2F>!<21>)<29><0F>$%<25> <09><1A>e<EFBFBD><1A>%*<2A>Q<EFBFBD>Y<EFBFBD>
<EFBFBD>"<22>q<EFBFBD>I<EFBFBD>~<7E>).<2E><11><19><0E><15><11>
<EFBFBD><05>!<21>A<EFBFBD>%<25>!<21>Q<EFBFBD><EFBFBD>5<EFBFBD>D<EFBFBD>=<3D>#<23>K<EFBFBD> <0B>a<EFBFBD><0F>@<40><04> "<22><07><07><04>[<5B><1A>a<EFBFBD><1E>(H<> I<><05>'<27>1<EFBFBD>,<2C><19>d<EFBFBD>1B<31>#<23>K<EFBFBD><0F>!<21>0C<30>D<><04> "<22><07><07><04>_<EFBFBD>^<5E>a<EFBFBD>=O<>(P<> Q<><05>#<23>K<EFBFBD><05><01> <09>:<3A><04><19><14><03>8<EFBFBD><1C>D<EFBFBD>w; <1D>B<1D><01>!<21>o<EFBFBD><11>&:<3A><1B>K<EFBFBD> <0C>q<EFBFBD>(8<>9<><04>$<24><05> !<21> <0A>#<23>q<EFBFBD>(<28>G<EFBFBD> <10> <1C><18>'<27>'<27>+<2B>+<2B>C<EFBFBD><17><14><1D><1D>u<EFBFBD>{<7B>{<7B>}<7D>9U<39>1V<31>W<>E<EFBFBD><13>}<7D>}<7D>T<EFBFBD>"<22>(<28>(<28>*<2A><04><13>U<EFBFBD>E<EFBFBD>7<EFBFBD>*<2A>*rQc<01><><00>d}g}t|t|<01><00>D]9}||}|dk(r|dz}n
|dk(r|dz }|dz }|dk(rn|j|<06><00>;dj|<04>||dk(fS)zsParse the content between `[]` of the start of an image or link
resolving nested square brackets.
r<00>]<5D>[rr<>)r>r<>r r<>)rrr<>rr@r<>rrKs rOr4zLinkInlineProcessor.getText@s<><00><00>
<1A> <0A><11><04><18><15><03>D<EFBFBD> <09>*<2A> <1B>C<EFBFBD><14>S<EFBFBD> <09>A<EFBFBD><10>C<EFBFBD>x<EFBFBD><1D><11>"<22> <0A><12>c<EFBFBD><18><1D><11>"<22> <0A> <11>Q<EFBFBD>J<EFBFBD>E<EFBFBD><1C><01>!<21><15> <10>K<EFBFBD>K<EFBFBD><01>N<EFBFBD> <1B><12>w<EFBFBD>w<EFBFBD>t<EFBFBD>}<7D>e<EFBFBD>]<5D>a<EFBFBD>%7<>7<>7rQNr")r<>r^rr<>r<>z!tuple[str, str | None, int, bool])r<>r^rr<>r<><00>tuple[str, int, bool]) rarbrcrdrmrnrorpr=r?rzr5r4rfrQrOr7r7<00>sL<00><00>7<><18>b<EFBFBD>j<EFBFBD>j<EFBFBD>R<>TV<54>T]<5D>T]<5D>`b<>`j<>`j<>Tj<54>k<>G<EFBFBD><1F>R<EFBFBD>Z<EFBFBD>Z<EFBFBD><05>&<26>N<EFBFBD>%<25>*r+<2B>h8rQr7c<01><00>eZdZdZdd<02>Zy)r9z. Return a `img` element from the given match. c<01>f<00>|j||jd<01><00>\}}}|sy|j||<04>\}}}}|sytjd<03>}|j d|<06>|<07>|j d|<07>|j d|j |<03><00>||jd<01>|fS)zU Return an `img` [`Element`][xml.etree.ElementTree.Element] or `(None, None, None)`. rr0<00>img<6D>srcr3<00>alt)r4r<>r5r<>r<>r6r<>r<>) rrryr<>r<>rr7rSr3r<>s rOrzz ImageInlineProcessor.handleMatchWs<><00><00>#<23>|<7C>|<7C>D<EFBFBD>!<21>%<25>%<25><01>(<28>;<3B><1C><04>e<EFBFBD>W<EFBFBD><16>#<23>%)<29>\<5C>\<5C>$<24><05>%><3E>"<22><03>U<EFBFBD>E<EFBFBD>7<EFBFBD><16>#<23> <12>]<5D>]<5D>5<EFBFBD> !<21><02>
<EFBFBD><06><06>u<EFBFBD>c<EFBFBD><1A> <10> <1C> <0E>F<EFBFBD>F<EFBFBD>7<EFBFBD>E<EFBFBD> "<22>
<EFBFBD><06><06>u<EFBFBD>d<EFBFBD>m<EFBFBD>m<EFBFBD>D<EFBFBD>)<29>*<2A><11>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>u<EFBFBD>$<24>$rQNr"r<>rfrQrOr9r9Ts
<00><00>8<>%rQr9c<01><><00>eZdZdZej
dej <00>Zej
dejejz<00>Z
dd<04>Z d d<05>Z d
d<06>Z y) r5z6 Match to a stored reference and return link element. z\s+z\s?\[([^\]]*)\]c<01><><00>|j||jd<01><00>\}}}|sy|j|||<03>\}}}|sy|jj d|<06>}||j
j vrd|jd<01>|fS|j
j |\}} |j|| |<03>|jd<01>|fS)zz
Return [`Element`][xml.etree.ElementTree.Element] returned by `makeTag` method or `(None, None, None)`.
rr0r<N) r4r<><00>evalId<49>NEWLINE_CLEANUP_REr<45>rL<00>
referencesr<EFBFBD><00>makeTag)
rrryr<>r<>rr7r<>r<>r2r3s
rOrzz$ReferenceInlineProcessor.handleMatchrs<><00><00>
$<24>|<7C>|<7C>D<EFBFBD>!<21>%<25>%<25><01>(<28>;<3B><1C><04>e<EFBFBD>W<EFBFBD><16>#<23><1F>;<3B>;<3B>t<EFBFBD>U<EFBFBD>D<EFBFBD>9<><18><02>C<EFBFBD><17><16>#<23><12> $<24> $<24> (<28> (<28><13>b<EFBFBD> 1<><02> <0A>T<EFBFBD>W<EFBFBD>W<EFBFBD>'<27>'<27> '<27><17><11><17><17><11><1A>S<EFBFBD>(<28> (<28><1A>g<EFBFBD>g<EFBFBD>(<28>(<28><12>,<2C> <0B><04>e<EFBFBD><13>|<7C>|<7C>D<EFBFBD>%<25><14>.<2E><01><07><07><01>
<EFBFBD>C<EFBFBD>?<3F>?rQc<01><><00>|jj||<02><01>}|sd|dfS|jd<04>j<00>}|j d<05>}|s|j<00>}||dfS)z\
Evaluate the id portion of `[ref][id]`.
If `[ref][]` use `[ref]`.
r9NFrrT)r=rr<><00>lowerr<72>)rrr<>rr<>ryr<>r<>s rOrWzReferenceInlineProcessor.evalId<49>sj<00><00> <11>L<EFBFBD>L<EFBFBD> <1E> <1E>t<EFBFBD><15> <1E> /<2F><01><10><17><15><05>%<25> %<25><12><17><17><11><1A>!<21>!<21>#<23>B<EFBFBD><13>%<25>%<25><01>(<28>C<EFBFBD><15><19>Z<EFBFBD>Z<EFBFBD>\<5C><02><11>3<EFBFBD><04>}<7D>rQc<01><><00>tjd<01>}|jd|<01>|r|jd|<02>||_|S)z; Return an `a` [`Element`][xml.etree.ElementTree.Element]. r1r2r3)r<>r<>r6r<><00>rrr2r3r<>r<>s rOrZz ReferenceInlineProcessor.makeTag<61>s;<00><00> <12>]<5D>]<5D>3<EFBFBD> <1F><02>
<EFBFBD><06><06>v<EFBFBD>t<EFBFBD><1C> <10> <0E>F<EFBFBD>F<EFBFBD>7<EFBFBD>E<EFBFBD> "<22><16><02><07><11> rQNr")r<>r^rr<>r<>r^r<>ztuple[str | None, int, bool]<5D>r2r^r3r^r<>r^r<>r<>)rarbrcrdrmrn<00> MULTILINErXrorpr=rzrWrZrfrQrOr5r5lsL<00><00>@<40>#<23><12><1A><1A>F<EFBFBD>B<EFBFBD>L<EFBFBD>L<EFBFBD>9<><16><18>b<EFBFBD>j<EFBFBD>j<EFBFBD>+<2B>R<EFBFBD>Y<EFBFBD>Y<EFBFBD><12><1A><1A>-C<>D<>G<EFBFBD>@<01>,<1D> rQr5c<01><00>eZdZdZdd<02>Zy)r=z%Short form of reference: `[google]`. c<01>(<00>|j<00>|dfS<00>zEvaluate the id of `[ref]`. T<>r\<00>rrr<>rr<>s rOrWz$ShortReferenceInlineProcessor.evalId<49><00><00><00><14>z<EFBFBD>z<EFBFBD>|<7C>U<EFBFBD>D<EFBFBD>(<28>(rQN<>r<>r^rr<>r<>r^r<>rO<00>rarbrcrdrWrfrQrOr=r=<00>s
<00><00>/<2F>)rQr=c<01><00>eZdZdZdd<02>Zy)r;z7 Match to a stored reference and return `img` element. c<01><><00>tjd<01>}|jd|<01>|r|jd|<02>|jd|j|<03><00>|S)z= Return an `img` [`Element`][xml.etree.ElementTree.Element]. rRrSr3rT)r<>r<>r6r<>r^s rOrZz%ImageReferenceInlineProcessor.makeTag<61>sK<00><00> <12>]<5D>]<5D>5<EFBFBD> !<21><02>
<EFBFBD><06><06>u<EFBFBD>d<EFBFBD><1B> <10> <0E>F<EFBFBD>F<EFBFBD>7<EFBFBD>E<EFBFBD> "<22>
<EFBFBD><06><06>u<EFBFBD>d<EFBFBD>m<EFBFBD>m<EFBFBD>D<EFBFBD>)<29>*<2A><11> rQNr_)rarbrcrdrZrfrQrOr;r;<00>s
<00><00>A<>rQr;c<01><00>eZdZdZdd<02>Zy)r>z* Short form of image reference: `![ref]`. c<01>(<00>|j<00>|dfSrcrdres rOrWz)ShortImageReferenceInlineProcessor.evalId<49>rfrQNrgrhrfrQrOr>r><00>s
<00><00>4<>)rQr>c<01><00>eZdZdZdd<02>Zy)r?zD Return a link Element given an auto-link (`<http://example/com>`). c<01>$<00>tjd<01>}|jd|j|j d<03><00><00>t j |j d<03><00>|_||jd<04>|jd<04>fS)zI Return an `a` [`Element`][xml.etree.ElementTree.Element] of `group(1)`. r1r2rr)
r<EFBFBD>r<>r6r<>r<>rr<>r<>r<>r<>r<>s rOrzz#AutolinkInlineProcessor.handleMatch<63>sf<00><00> <12>]<5D>]<5D>3<EFBFBD> <1F><02>
<EFBFBD><06><06>v<EFBFBD>t<EFBFBD>}<7D>}<7D>Q<EFBFBD>W<EFBFBD>W<EFBFBD>Q<EFBFBD>Z<EFBFBD>0<>1<><16>#<23>#<23>A<EFBFBD>G<EFBFBD>G<EFBFBD>A<EFBFBD>J<EFBFBD>/<2F><02><07><11>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>q<EFBFBD>u<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>'<27>'rQNr<4E>r<>rfrQrOr?r?<00>s
<00><00>N<>(rQr?c<01><00>eZdZdZdd<02>Zy)rAzW
Return a `mailto` link Element given an auto-mail link (`<foo@example.com>`).
c
<01>@<00>tjd<01>}|j|jd<02><00>}|j d<03>r|t d<03>d}d
d<05>}|D<00>cgc]}|t |<06><00><00><02>}}tjdj|<07><00>|_
d|z}dj|D<00>cgc]!}tjdt |<06>zz<00><02>#c}<06>}|jd|<08>||jd <09>|jd <09>fScc}wcc}w) za Return an [`Element`][xml.etree.ElementTree.Element] containing a `mailto` link of `group(1)`. r1rzmailto:Nc<01><><00>tjj|<00>}|r djtj
|<01>Sdtj
|fzS)z=Return entity definition by code, or the code if not defined.z{}{};z%s#%d;)r
<00>codepoint2namer<65>r<>r<00>AMP_SUBSTITUTE)r<>r&s rOrrz;AutomailInlineProcessor.handleMatch.<locals>.codepoint2name<6D>sH<00><00><1D>,<2C>,<2C>0<>0<><14>6<>F<EFBFBD><15><1E>~<7E>~<7E>d<EFBFBD>&9<>&9<>6<EFBFBD>B<>B<><1F>4<EFBFBD>#6<>#6<><04>"=<3D>=<3D>=rQr<>z#%d;r2r)r<>r<>r<>r^)r<>r<>r<>r<>rVr<>r<>rr<>r<>r<>rsr6r<>r<>) rrryr<>r<><00>emailrr<00>letter<65>letters<72>mailtos rOrzz#AutomailInlineProcessor.handleMatch<63>s<00><00> <12>]<5D>]<5D>3<EFBFBD> <1F><02><14> <0A> <0A>a<EFBFBD>g<EFBFBD>g<EFBFBD>a<EFBFBD>j<EFBFBD>)<29><05> <10> <1B> <1B>I<EFBFBD> &<26><19>#<23>i<EFBFBD>.<2E>/<2F>*<2A>E<EFBFBD> ><3E>>C<01>C<>6<EFBFBD>><3E>#<23>f<EFBFBD>+<2B>.<2E>C<><07>C<><16>#<23>#<23>B<EFBFBD>G<EFBFBD>G<EFBFBD>G<EFBFBD>$4<>5<><02><07><1A>U<EFBFBD>"<22><06><13><17><17>4:<3A><<3C>*0<><1F>-<2D>-<2D><06><1D>f<EFBFBD>+<2B>1&<26>&<26><<3C>=<3D><06>
<EFBFBD><06><06>v<EFBFBD>v<EFBFBD><1E><11>1<EFBFBD>7<EFBFBD>7<EFBFBD>1<EFBFBD>:<3A>q<EFBFBD>u<EFBFBD>u<EFBFBD>Q<EFBFBD>x<EFBFBD>'<27>'<27><>D<01><><s <00>D<04>4&DNr<4E>r<>rfrQrOrArA<00>s <00><00><08>(rQrA)rLr rMrr<>zutil.Registry[InlineProcessor])rXr^r<>r^)Crd<00>
__future__rr<>r<00>typingrrrr rm<00>xml.etree.ElementTreer<65><00> ElementTreer$r
<00>markdownr rP<00>NOIMGr2r4r'r&r,r-r+r#r)r$r*r%r8r:r6r<rIr@rBrFrGrDrYr[rhr<>r<>rHr3r<>r<>r<>rCr1r<>r<>rErJrKr7r9r5r=r;r>r?rArfrQrO<00><module>r~s5<00><01>(<04>*#<23><12>=<3D>=<3D> <09>%<25>%<25><19><10>!<21>*<1A>` <13><05>\<5C>L<> <0B>M<> <14> <09>=<3D><1F> <0B>7<> <1D> <09>5<>:<3A><0F>b<>9<><11>c<>O<><12>B<>,<2C> <0C>S<>,<2C> <0A>V<>,<2C> <0C>?<3F>,<2C> <0A>B<>9<> <0A>?<3F>
<0F>%<25>-<2D><07>`<60><17> <0A>S<><16> <0C>5<>"<22><12>:<3A>8<> <0A>'<27><<3C> <0B>=<3D>&<26> <0B>;<3B>
<EFBFBD><08>%<25> <<3C> <09>V<><17> <0A>(<28><16><0E>:<3A><0E>S?<3F>S?<3F>l- <0A>g<EFBFBD>- <0A>`<1A><07><1A>0<><0F>0<>.<2E>O<EFBFBD>.<2E>&<12>w<EFBFBD><12>:(<28><EFBFBD>(<28>:'<27>+<2B>'<27>=<3D>#;<3B>=<3D>Y<01>o<EFBFBD>Y<01>2<13>'<27><13>*)<29>7<>)<29>*%'<27>/<2F>%'<27>PC<1E><0F>C<1E>L
P<01>+<2B>
P<01>_8<>/<2F>_8<>D%<25>.<2E>%<25>05<12>2<>5<12>p)<29>$<<3C>)<29> <12>$<<3C> <12>)<29>)F<>)<29>(<28>o<EFBFBD>(<28>(<28>o<EFBFBD>(rQ