
    g}                     B   d dl Z d dlZd dlZd dlZd dlZd dlZddlmZ ddl	m
Z
mZmZmZmZmZmZ ddlmZmZ ddlmZ ddlmZmZmZ  G d d	e
j4                  ej4                  ej4                  ej4                  ej4                  ej4                  ej4                  	      Zy)
    N   )_cp1252)_baseccdcgeorssitunesmediarsspsc)_sanitize_html_HTMLSanitizer)FeedParserDict)_urljoinmake_safe_absolute_uriresolve_relative_urisc                       e Zd Zi ddddddddddddddddd	dd
dddddddddddddddi ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5i d6d7d8d9d:d;d<d=d>d=d?d@dAdBdCdBdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddeZi Zh dfZh dgZh dgZdhdihZ fdjZ	dk Z
dl Zdm Zdn Zdo ZddpZdq Zdr Zds Zdt Zedu        Zdv Zdw Zedx        Zedy        Zdz Zdd{Zd| Zd} Zed~        Zd Zd Z d Z!ed        Z"ddZ#d Z$ddZ%d Z&ddZ'd Z(d Z)d Z* xZ+S )_FeedParserMixin http://backend.userland.com/rssz%http://blogs.law.harvard.edu/tech/rsshttp://purl.org/rss/1.0/&http://my.netscape.com/rdf/simple/0.9/zhttp://example.com/newformat#zhttp://example.com/nechozhttp://purl.org/echo/zuri/of/echo/namespace#zhttp://purl.org/pie/zhttp://purl.org/atom/ns#zhttp://www.w3.org/2005/Atomz'http://purl.org/rss/1.0/modules/rss091#zhttp://webns.net/mvcb/adminz,http://purl.org/rss/1.0/modules/aggregation/agz)http://purl.org/rss/1.0/modules/annotate/annotatez!http://media.tangent.org/rss/1.0/audioz-http://backend.userland.com/blogChannelModuleblogChannelz%http://creativecommons.org/ns#licenser   zhttp://web.resource.org/cc/z>http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.htmlcreativeCommonsz4http://backend.userland.com/creativeCommonsRssModulez'http://purl.org/rss/1.0/modules/companycoz(http://purl.org/rss/1.0/modules/content/contentz&http://my.theinfo.org/changed/1.0/rss/cpz http://purl.org/dc/elements/1.1/r   zhttp://purl.org/dc/terms/dctermsz&http://purl.org/rss/1.0/modules/email/emailz&http://purl.org/rss/1.0/modules/event/evz*http://rssnamespace.org/feedburner/ext/1.0
feedburnerzhttp://freshmeat.net/rss/fm/fmzhttp://xmlns.com/foaf/0.1/foafz(http://www.w3.org/2003/01/geo/wgs84_pos#geozhttp://www.georss.org/georssr   zhttp://www.opengis.net/gmlgmlzhttp://postneo.com/icbm/icbmz&http://purl.org/rss/1.0/modules/image/imagez*http://www.itunes.com/DTDs/PodCast-1.0.dtdr	   z'http://example.com/DTDs/PodCast-1.0.dtdz%http://purl.org/rss/1.0/modules/link/lzhttp://search.yahoo.com/mrssmediazhttp://search.yahoo.com/mrss/z4http://madskills.com/public/xml/rss/module/pingback/pingbackz.http://prismstandard.org/namespaces/1.2/basic/prismz+http://www.w3.org/1999/02/22-rdf-syntax-ns#rdfz%http://www.w3.org/2000/01/rdf-schema#rdfsz*http://purl.org/rss/1.0/modules/reference/refz*http://purl.org/rss/1.0/modules/richequiv/reqvz'http://purl.org/rss/1.0/modules/search/searchz&http://purl.org/rss/1.0/modules/slash/slashz)http://schemas.xmlsoap.org/soap/envelope/soapssstrsubsyszftaxothrti	trackbackwfwwikixhtmlxlinkxmlr   )z.http://purl.org/rss/1.0/modules/servicestatus/z-http://hacks.benhammersley.com/rss/streaming/z-http://purl.org/rss/1.0/modules/subscription/z,http://purl.org/rss/1.0/modules/syndication/z/http://schemas.pocketsoap.com/rss/myDescModule/z)http://purl.org/rss/1.0/modules/taxonomy/z*http://purl.org/rss/1.0/modules/threading/z*http://purl.org/rss/1.0/modules/textinput/z5http://madskills.com/public/xml/rss/module/trackback/z$http://wellformedweb.org/commentAPI/z%http://purl.org/rss/1.0/modules/wiki/zhttp://www.w3.org/1999/xhtmlzhttp://www.w3.org/1999/xlinkz$http://www.w3.org/XML/1998/namespacez"http://podlove.org/simple-chapters>
   idurldocshreficonlinklogocommentswfw_commentwfw_commentrss>	   infotitlerightsr   summarytaglinesubtitle	copyrightdescriptionapplication/xhtml+xml	text/htmlc                    | j                   s?| j                  j                         D ]"  \  }}|| j                   |j                         <   $ t	               | _        g | _        d| _        i | _        d| _	        d| _
        d| _        d| _        d| _        d| _        d| _        d| _        d| _        t	               | _        t	               | _        d | _        i | _        g | _        g | _        g | _        d| _        d| _        d| _        d| _        | j:                  r)| j:                  j=                  dd      | j
                  d<   i | _        t@        tB        |           y )Nr   r   _-language)#_matchnamespaces
namespacesitemslowerr   feeddataentriesversionnamespaces_in_useinfeedinentry	incontentintextinputinimageinauthorincontributorinpublisherinsource
sourcedatacontentparams_summaryKeynamespacemapelementstack	basestack	langstacksvgOKtitle_depthdepth
hasContentlangreplaceproperty_depth_mapsuperr   __init__)selfkv	__class__s      C/var/www/html/venv/lib/python3.12/site-packages/feedparser/mixin.pyr}   z_FeedParserMixin.__init__   s<   $$--/ 5134%%aggi05&(!# (*+-

99(,		(9(9#s(CDMM*% #%.0    c                     t         N)NotImplementedError)r~   kvs     r   _normalize_attributesz&_FeedParserMixin._normalize_attributes   s    !!r   c                    | xj                   dz  c_         |D cg c]  }| j                  |       }}t        |      }|j                  d|j                  d            xs | j                  }t        |t              r|j                  | j                  d      }| j                  r*t        | j                  |      xs | j                  | _        nt        | j                  |      | _        |j                  d|j                  d            }|dk(  rd }n|| j                  }|r#|dv r|j                  d	d
      | j                  d<   || _        | j                  j                  | j                         | j                   j                  |       |D ]D  \  }}|j#                  d      r| j%                  |dd  |       -|dk(  s3| j%                  d |       F | j&                  r?| j(                  j                  dd      j+                  d      s|dv ry d| j(                  d<   | j&                  r| j(                  j                  d      dk(  r|j-                  d      dk7  rk|j/                  dd      \  }}| j0                  j                  |d      }	|dk(  r|	dk(  r|j                  d|	f       |dk(  r|	dk(  r|j                  d|	f       |dk(  r| xj2                  dz  c_        | j5                  d|| j7                  |      dd      S |j-                  d      dk7  r|j/                  dd      \  }}
nd|}
}| j8                  j                  ||      }|r|d	z   }|s|dvrd| _        |s|dvrd| _        d|z   |
z   }	 t?        | |      } ||      S c c}w # t@        $ r? ||
z   }tC        |      dk(  r| jE                  |d      cY S | jG                         }|||<   Y y w xY w) Nr   zxml:basebaseignorezxml:langry   r   )feedrsszrdf:RDFrZ   r[   r\   zxmlns:   xmlnstyperC   z	xhtml:divdivrV   :rY   mathz"http://www.w3.org/1998/Math/MathMLsvgzhttp://www.w3.org/2000/svg<>r   escape)rO   rI   rU   name)rO   rI   rU   rE   rG   widthheight_start_)$rw   r   dictgetbaseuri
isinstancebytesdecodeencodingr   r   ry   rz   ra   rs   appendrt   
startswithtrack_namespacerg   ro   endswithfindsplitrd   ru   handle_datastrattrsrq   rh   ri   getattrAttributeErrorlenpush_get_context)r~   tagattrsattrattrs_dr   ry   prefixuri	namespacesuffix
methodnamemethodunknown_tagcontexts                  r   unknown_starttagz!_FeedParserMixin.unknown_starttag   s   

a
 ?DDd++D1DD u+++j'++f*=>N$,,gu%nnT]]H=G <<1$,,HXDLLDL#DLL':DL{{:w{{6':;2:D\99D00,0LLc,Bj)	dll+d# ! 	0KFC  *$$VABZ57"$$T3/		0 >>$"4"4"8"8"G"P"PQV"W**)@Dv&>>d0044V<@WWxx}"!iiQ/ 2266vrB	&=Y2V%VLL'9!56%<I1M$MLL'9!56e|

a
##T]]55I$JST#UU 88C=B YYsA.NFFFF""&&vv6c\F C'OO DC'iiDL '&0
	/T:.F'?"Q ER  
	/ !6/K7|q yya00 ++-'.$
	/s   NN .O"
O"!O"c                 <   |j                  d      dk7  r|j                  dd      \  }}nd|}}| j                  j                  ||      }|r|dz   }|dk(  r!| j                  r| xj                  dz  c_        d|z   |z   }	 | j                  r
t               t        | |      } |        | j                  r?| j                  j                  dd	      j                  d	      s|d
v ry d| j                  d<   | j                  rH| j                  j                  d      dk(  r*|j                  d      d   }| j                  d|z  d       | j                  rI| j                  j                          | j                  r#| j                  d   r| j                  d   | _        | j                  r:| j                  j                          | j                  r| j                  d   | _        | xj                   dz  c_        y # t
        $ r | j                  ||z          Y pw xY w)Nr   rY   r   r   rZ   r   _end_r   rC   r   rV   z</%s>r   r   )r   r   rq   r   ru   r   r   poprg   ro   r   r   rs   r   rt   ry   rw   )r~   r   r   r   r   r   s         r   unknown_endtagz_FeedParserMixin.unknown_endtag/  s   88C=B YYsA.NFFFF""&&vv6c\FU?tzzJJ!OJ v%.
	&zz$&&T:.FH
 >>$"4"4"8"8"G"P"PQV"W**)@Dv&>>d0044V<@WW))C.$CWs]15 >>NN ~~$.."4#~~b1>>NN ~~ NN2.	

a
/  	&HHVf_%	&s   )G: :HHc                    | j                   sy |j                         }|dv rd|z  }n=|d   dk(  rt        |dd  d      }nt        |      }t        |      j	                  d      }| j                   d   d	   j                  |       y )
N)
3438396062x22x26x27x3cx3ez&#%s;r   xr      utf-8rY      )rr   r`   intchrencoder   )r~   r1   textcs       r   handle_charrefz_FeedParserMixin.handle_charref[  s      iikSSS=D1v}AB$Hq6==)D"a ''-r   c                    | j                   sy |dv rd|z  }n|| j                  v rB| j                  |   }|j                  d      ru|j                  d      rd| j	                  |      S 	 t
        j                  j                  |    t        t
        j                  j                  |         j                  d      }| j                   d   d   j                  |       y # t        $ r d|z  }Y 2w xY w)N)ltgtquotampaposz&%s;z&#;r   rY   r   )rr   entitiesr   r   handle_entityrefhtmlname2codepointr   r   KeyErrorr   )r~   r1   r   s      r   r   z!_FeedParserMixin.handle_entityrefj  s      55C<DDMM!==%Dt$s);,,T22N,,S1 4==77<=DDWM"a ''-	  $|$s   )C C.-C.c                     | j                   sy |rG| j                  j                  d      dk(  r)t        j                  j
                  j                  |      }| j                   d   d   j                  |       y )Nr   rV   rY   r   )rr   ro   r   rC   saxsaxutilsr   r   )r~   r   r   s      r   r   z_FeedParserMixin.handle_data}  sd       d((,,V48OO77##**40D"a ''-r   c                      y r    r~   r   s     r   handle_commentz_FeedParserMixin.handle_comment      r   c                      y r   r   r   s     r   	handle_piz_FeedParserMixin.handle_pi  r   r   c                      y r   r   r   s     r   handle_declz_FeedParserMixin.handle_decl  s    r   c                    | j                   ||dz    dk(  r| j                   j                  d|      }|dk(  rt        | j                         }|S | j                  t        j
                  j                  j                  | j                   |dz   |       d       |dz   S | j                   j                  d|      }|dk\  r|dz   S |S )	N	   z	<![CDATA[z]]>rY   r      r   r   )rawdatar   r   r   rC   r   r   r   )r~   ir   s      r   parse_declarationz"_FeedParserMixin.parse_declaration  s    <<!A#+-!!%+ABw%SWW--44T\\!A#a5HI1MQ3J!!#q)AAvs
 r   c                 b    | j                         } | dk(  s| dk(  rd} | S | dk(  rd} | S | dk(  rd} | S )Nr   plain
text/plainr   rW   rA   rV   )r`   )content_types    r   map_content_typez!_FeedParserMixin.map_content_type  sX    #))+6!\W%<'L
 	 V#&L  W$2Lr   c                 p   |j                         }| j                  s(||fdk(  rd| _        n|dk(  rd| _        n|dk(  rd| _        |j                  d      dk7  rd	}|}|| j                  v r9| j                  |   | j                  |<   || j
                  | j                  |   <   y || j
                  |xs d
<   y )N)Nr   rss090r   rss10zhttp://www.w3.org/2005/atomatom10zbackend.userland.com/rssrY   r   r   )r`   rc   r   r]   rq   rd   )r~   r   r   loweruris       r   r   z _FeedParserMixin.track_namespace  s    99;||!%UU'77&::'==34:3CHt,,,(,(=(=h(GDf%FID""4#8#8#BC36D""6<R0r   c                 6    t        | j                  xs d|      S )Nr   )r   r   )r~   r   s     r   resolve_uriz_FeedParserMixin.resolve_uri  s    *C00r   c                     |S r   r   )elementdatas     r   decode_entitiesz _FeedParserMixin.decode_entities  s    r   c                 2    dj                  d | D              S )Nr   c           	   3      K   | ]=  }d |d   dt         j                  j                  j                  |d   ddi      d ? yw) r   z="r   "z&quot;N)rC   r   r   r   .0ts     r   	<genexpr>z,_FeedParserMixin.strattrs.<locals>.<genexpr>  s@      
 A$ 0 0 7 7!sHo NO
s   AA)join)r   s    r   r   z_FeedParserMixin.strattrs  s     ww 

 
 	
r   c                 @    | j                   j                  ||g g       y r   )rr   r   )r~   r  expecting_texts      r   r   z_FeedParserMixin.push  s      '>2!>?r   c           	         | j                   sy | j                   d   d   |k7  ry | j                   j                         \  }}}t        |      D ]*  \  }}t        |t              s|j                  d      ||<   , | j                  dk(  r2| j                  j                  dd      dk(  r|rHt        |      dkD  r:|d   j                         s'|d= |r"t        |      dkD  r|d   j                         s'|rHt        |      dkD  r:|d   j                         s'|d= |r"t        |      dkD  r|d   j                         s'|r||d   d	k(  s|d   j                  d
      r`|d   dk(  rXd}|d d D ]I  }|j                  d      r|dz  }|dk(  s n0|j                  d      s3|j                  d      rE|dz  }K |dd }dj                  |      }	|r|	j                         }	|s|	S t        rP| j                  j                  dd      r4	 t        j                  |	j!                  d            j                  d      }	|| j*                  v r$|	r"|dk(  r| j,                  r| j/                  |	      }	| j                  j                  dd      s| j1                  ||	      }	| j                  j                  d      s>| j                  j                  d      dk(  r | j3                  |	      rd| j                  d<   	 | j                  d= 	 | j                  d= | j7                  | j                  j                  dd            | j8                  v }
|
rV| j:                  rJ|| j<                  v r<t;        |	| j>                  | j@                  | j                  j                  dd            }	|
rK| jB                  r?|| jD                  v r1tG        |	| j@                  | j                  j                  dd            }	| j@                  r,t        |	t              r|	j                  | j@                  d      }	| j@                  dv r1t        |	t              s!	 |	j!                  d      j                  d      }	t        |	t              s|	jK                  tL              }	|dv r|	S |dk(  r"d| jN                  cxk  r| jP                  k  r|	S  | jR                  r| jT                  s|dk(  rf| jV                  d   jY                  |g        t[        j\                  | j                        }|	|d<   | jV                  d   |   j_                  |       |	S |dk(  rd| j`                  s'|	jc                  dd       }	te        jf                  d!d"|	      }	|	| jV                  d   |<   |	r|	| jV                  d   d#   d   d$<   |	S |d%k(  rd&}| jh                  jY                  | jV                  d   i       j                  |      }|| jP                  |k  r;| jP                  | jh                  | jV                  d      |<   |	| jV                  d   |<   | jj                  r9t[        j\                  | j                        }|	|d<   || jV                  d   |d'z   <   |	S | jl                  s| jT                  r| jo                         }|d%k(  rd(}|	||<   |dk(  r)te        jf                  d!d"|	      }	|	||<   |	|d#   d   d$<   |	S | jj                  r,t[        j\                  | j                        }|	|d<   |||d'z   <   |	S # t"        j$                  t"        j&                  t(        f$ r Y w xY w# t4        $ r Y Jw xY w# t4        $ r Y Lw xY w# tH        t(        f$ r Y w xY w))NrY   r   r   r   r   r   rV   r   z<div>z<div z</div>z</r   z/>r   base64utf8rD   atomr   rW   moder   )r   zutf-8_INVALID_PYTHON_3z
iso-8859-1)categorytagsitunes_keywordsrO   r   valuerI   z&amp;&z&([A-Za-z0-9_]+);z&\g<1>linksrG   rU   rQ   _detailrS   )8rr   r   	enumerater   r   r   rc   ro   r   r   stripr   r   r  r  decodebytesr   binasciiError
IncompleteUnicodeDecodeErrorcan_be_relative_uri
guidislinkr  r  looks_like_htmlr   r   
html_typesr   can_contain_relative_urisr   r   sanitize_htmlcan_contain_dangerous_markupr   UnicodeEncodeError	translater   rv   rw   rf   rm   rb   
setdefaultcopydeepcopyr   ri   rz   rer8   r{   rg   re   r   )r~   r  strip_whitespacer  piecesr   r   rw   pieceoutput
is_htmlishro   old_value_depthr   s                 r   r   z_FeedParserMixin.pop  s     R #w.*.*;*;*?*?*A'  ' 	.FQ!U#HHW-q		. <<8#(:(:(>(>vv(NRi(i
 S[1_VBZ5E5E5G2J S[1_VBZ5E5E5GS[1_VAY__5F1I S[1_VAY__5F6!9/6!93G3G3PV\]_V`dlVl#CR[ *E''-
 A:!))#.u~~d7K
* $Ab\F\\^FM d((,,Xq9++FMM&,ABII&Q
 t///Vd?doo))&1 !!%%h2))'6:F ||&&v.43E3E3I3I&3QUa3a##F+-8""6*	""6*	""8, **4+=+=+A+A&++VW[_[j[jj
$44$888.vt||T]]TXTfTfTjTjkqs~T  A $,,$;;;'t?Q?Q?U?UV\^i?jk==Z6]]4==(;F ==??
SY[`Ha|4;;GD
 &%(%%g.F ==Mg"t'7'7"E4::"EM #F <<)#R ++GR8 $d.@.@ A)/g&R )00?H G F"|| $^^GS9FVV$7FKF06DLL$W-@FR(1"5f=4 1 m+'G"&"9"9"D"DT\\RTEUWY"Z"^"^_f"g"*djjO.KIMD++DLL,<=gF06DLL$W->>$(MM$2D2D$EM-3M'*<IDLL$Wy%89  [[DMM'')G-'$%GG&  3YG#) /5 $V,
 	  $d.@.@ A)/g&/<)+,S NNH$7$79KL ,  		  		, '(:; sH   3\ 3\> ]  ] (\;:\;>	]
]	]]]10]1c                    | xj                   dz  c_         | j                  r!| j                  j                  dd      | _        t        | j	                  |j                  d|            | j                  | j                  d      | _        | j                  || j                        | j                  d<   | j                  ||       y )Nr   rZ   r[   r   )r   r\   r   r  )
rg   ry   rz   r   r   r   r   ro   
_is_base64r   )r~   r   r   default_content_typer  s        r   push_contentz_FeedParserMixin.push_contenti  s    !99		))#s3DI+))'++f>R*ST		LL-" # (,w@R@R'S8$		#~&r   c                     | j                  |      }| xj                  dz  c_        | j                  j                          |S )Nr   )r   rg   ro   clear)r~   r   r  s      r   pop_contentz_FeedParserMixin.pop_contentt  s4    !  "r   c                     t        j                  d|       st        j                  d|       syt        d t        j                  d|       D              ryt        d t        j                  d|       D              ryy)	z3
        :type s: str
        :rtype: bool
        z</(\w+)>z&#?\w+;Fc              3   b   K   | ]'  }|j                         t        j                  vs$| ) y wr   )r`   r   acceptable_elementsr
  s     r   r  z3_FeedParserMixin.looks_like_html.<locals>.<genexpr>  s#     ma.JlJl9lms   %//z</?(\w+)c              3   Z   K   | ]#  }|t         j                  j                  vs | % y wr   )r   r   
entitydefs)r  es     r   r  z3_FeedParserMixin.looks_like_html.<locals>.<genexpr>  s!     ZaAYAY8YZs   !++z&(\w+);T)r0  r3   anyfindall)ss    r   r&  z _FeedParserMixin.looks_like_html~  sa     		+q)RYYz1-E m2::k15mn Z2::j!4Z[r   c                     |j                  d      }|dk7  r1|d | }||dz   d  }| j                  j                  ||      }|dz   |z   }|S )Nr   rY   r   )r   rq   r   )r~   r   colonposr   r   s        r   _map_to_standard_prefixz(_FeedParserMixin._map_to_standard_prefix  s\    99S>r>)8_F(1*+&F&&**66:FC<&(Dr   c                 B    |j                  | j                  |            S r   )r   rI  )r~   r   r   s      r   _get_attributez_FeedParserMixin._get_attribute  s    {{477=>>r   c                     |j                  dd      dk(  ry| j                  d   j                  d      ry| j                  d   j                  d      ry| j                  d   j                  d	      ryy)
Nr  r   r  r   r   ztext/r   z+xmlz/xml)r   ro   r   r   )r~   r   ro   s      r   r8  z_FeedParserMixin._is_base64  so    ;;vr"h.f%009f%..v6f%..v6r   c           
          | j                  d| j                  d| j                  dd                   }|r	 | d= 	 | d= || d<   | S # t        $ r Y w xY w# t        $ r Y !w xY w)NrE   r   rG   )r   r   )r   rG   s     r   _enforce_hrefz_FeedParserMixin._enforce_href  sz    {{5'++eW[[5N"OPENEN #GFO    s"   A A 	AA	AAc                 X    | j                         }|r|||<   y |j                  ||       y r   )r   r-  )r~   keyr  	overwriter   s        r   _savez_FeedParserMixin._save  s,    ##% GCLsE*r   c                    | j                   r| j                  }|S | j                  rd| j                  v r| j                  d   }|S | j                  r| j                  d   }|S | j
                  r| j                  d   }|S | j                  }|S )Nr*   	textinputrY   )rm   rn   ri   ra   rh   rf   rb   )r~   r   s     r   r   z_FeedParserMixin._get_context  s    ==ooG  \\g6mmG,G  mmK0G
 	 \\ll2&G  mmGr   c                     | j                         }|j                  |dz   t                      |||dz      |<   | j                          |j                  dt               g       ||d   d   |<   y )Nr  authorsrY   )r   r-  r   _sync_author_detail)r~   rP  r  r   r   s        r   _save_authorz_FeedParserMixin._save_author  sr    ##%6I-~/?@+0"#C(  "9~'7&89&+	2s#r   c                 p    | j                         }|j                  dt               g       ||d   d   |<   y )NcontributorsrY   )r   r-  r   )r~   rP  r  r   s       r   _save_contributorz"_FeedParserMixin._save_contributor  s:    ##%>N,<+=>+0#C(r   c                    | j                         }|j                  d|z  t               g      d   }|rC|j                  d      }|j                  d      }|r|r|d|d||<   y |r|||<   y |r|||<   y y |j                  |      d }}|sy t        j                  d|      }|r|j                  d      }|j                  |d	      }|j                  d
d	      }|j                  dd	      }|j                  dd	      }|j                         }|r|d   dk(  r|dd  }|r|d   dk(  r|d d }|j                         }|s|r|j                  d|z  |       |r||d<   |r||d<   y y )Nz%ssrY   r   r"   z ()z(([a-zA-Z0-9\_\-\.\+]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?))(\?subject=\S+)?r   r   z()z<>z&lt;&gt;(r   z	%s_detail)	r   r   r   r0  r3   grouprz   r  r-  )r~   rP  r   detailr   r"   author
emailmatchs           r   rW  z$_FeedParserMixin._sync_author_detail  s   ##%US[>+;*<=bA::f%DJJw'E,0%8#$  $KK,dEF  $s  u{  |J"((+  r2b1b1
B7vayC/#ABZFvbzS0#CR[F"";#4f=!'v"'w r   c                     | j                         }|j                  dg       }|s|s|sy t        |||      }||vr|j                  |       y y )Nr  )termschemelabel)r   r-  r   r   )r~   rd  re  rf  r   r  r  s          r   _add_tagz_FeedParserMixin._add_tag   sS    ##%!!&"-vDuEKK r   c                 (    | j                  dd       y )Nr  r   )r   )r~   r   s     r   _start_tagsz_FeedParserMixin._start_tags	  s     			&!r   c                     | j                  d      j                  d      D ]#  }| j                  |j                         d d        % y )Nr  ,)r   r   rg  r  )r~   rd  s     r   	_end_tagsz_FeedParserMixin._end_tags  s;    HHV$**3/ 	4DMM$**,d3	4r   )r   )F)ra  ),__name__
__module____qualname__r^   r]   r$  r(  r*  r'  r}   r   r   r   r   r   r   r   r   r   r   staticmethodr   r   r  r  r   r   r   r:  r=  r&  rI  rK  r8  rN  rR  r   rX  r[  rW  rg  ri  rl  __classcell__)r   s   @r   r   r   *   s,   E
BE)2E 	0E 	#B	E
 	1"E 	(E 	#BE 	 E 	!"E 	E 	#BE 	&rE 	22E 	!E  	7!E" 	4#E$ 	,%E& 	8'E( 	0)E* 	&+E, 	IJ[-E. 	?AR/E0 	21E2 	33E4 	15E6 	+7E8 	$9E: 	1;E< 	1=E> 	5?E@ 	'AEB 	%CED 	3EEF 	'GEH 	%IEJ 	#KEL 	1MEN 	5OEP 	2QER 	0SET 	'UEX 	(YEZ 	?[E\ 	9]E^ 	6_E` 	0aEb 	5cEd 	5eEf 	2gEh 	1iEj 	4kEl BFAFAFAEAFAGAFAEALAFAGAHAHAFAFIEJL 
!
$  	 J
+1Z"X/t*X..&.$  7&1   
 
@Un	'  (?	  +,1
$(L4r   r   )r  r   r.  html.entitiesr   r0  xml.sax.saxutilsrC   r   r^   r   r   r   r   r	   r
   r   	sanitizerr   r   utilr   urlsr   r   r   	Namespacer   r   r   r   <module>rx     st   8     	   D D D 5   I Ig4

g4r   