+
    šÜiÕ'  ã                   ó®   € ^ RI Ht ^ RIHt RtRtRtRt ! R R]4      t ! R R4      t	 ! R R4      t
 ! R	 R
]
4      t ! R R]4      t ! R R]
4      tR# )é    )Ú
HTMLParser)Úzip_longestc                   óf   a a€ ] tR t^t oRtV 3R ltR tV 3R ltV 3R ltR t	R t
R tR	tVtV ;t# )
ÚDocStringParserz—
A simple HTML parser.  Focused on converting the subset of HTML
that appears in the documentation strings of the JSON models into
simple ReST format.
c                ó>   <€ R V n         Wn        \        SV `  4        R # ©N)ÚtreeÚdocÚsuperÚ__init__)Úselfr
   Ú	__class__s   &&€ÚE/usr/lib/python3/dist-packages/botocore/docs/bcdoc/docstringparser.pyr   ÚDocStringParser.__init__   s   ø€ ØˆŒ	ØŒÜ‰ÑÖó    c                óf   € \         P                  ! V 4       \        V P                  4      V n        R # r   )r   ÚresetÚHTMLTreer
   r	   ©r   s   &r   r   ÚDocStringParser.reset"   s    € Ü×Ò˜ÔÜ˜TŸX™XÓ&ˆŽ	r   c                óŽ   <€ \         SV `  V4       V P                  P                  4        \	        V P
                  4      V n        R # r   )r   Úfeedr	   Úwriter   r
   )r   Údatar   s   &&€r   r   ÚDocStringParser.feed&   s-   ø€ Ü‰‰�TÔØ�	‰	�‰ÔÜ˜TŸX™XÓ&ˆŽ	r   c                óŒ   <€ \         SV `  4        V P                  P                  4        \	        V P
                  4      V n        R # r   )r   Úcloser	   r   r   r
   )r   r   s   &€r   r   ÚDocStringParser.close+   s*   ø€ Ü‰‰Œà�	‰	�‰ÔÜ˜TŸX™XÓ&ˆŽ	r   c                ó>   € V P                   P                  WR 7       R# ))ÚattrsN©r	   Úadd_tag)r   Útagr    s   &&&r   Úhandle_starttagÚDocStringParser.handle_starttag1   s   € Ø�	‰	×Ñ˜#ÐÖ+r   c                ó@   € V P                   P                  VR R7       R# )F)Úis_startNr!   )r   r#   s   &&r   Úhandle_endtagÚDocStringParser.handle_endtag4   s   € Ø�	‰	×Ñ˜#¨ÐÖ.r   c                ó<   € V P                   P                  V4       R # r   )r	   Úadd_data©r   r   s   &&r   Úhandle_dataÚDocStringParser.handle_data7   s   € Ø�	‰	×Ñ˜4Ö r   )r
   r	   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r   r$   r(   r-   Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r   Ú__classdict__s   @@r   r   r      s2   ù‡ € ñõò
'õ'õ
'ò,ò/÷!ò !r   r   c                   óF   a € ] tR t^;t o RtR tR	R ltR tR tR t	Rt
V tR# )
r   zÖ
A tree which handles HTML nodes. Designed to work with a python HTML parser,
meaning that the current_node will be the most recently opened tag. When
a tag is closed, the current_node moves up to the parent node.
c                ó`   € Wn         \        4       V n        V P                  V n        . V n        R # r   )r
   ÚStemNodeÚheadÚcurrent_nodeÚunhandled_tags©r   r
   s   &&r   r   ÚHTMLTree.__init__B   s$   € ØŒÜ“JˆŒ	Ø ŸI™IˆÔØ ˆÖr   Nc                ó  € V P                  W4      '       g   V P                  P                  V4       R # V'       d/   \        W4      pV P                  P                  V4       W@n        R # V P                  P                  V n        R # r   )Ú_doc_has_handlerr>   ÚappendÚTagNoder=   Ú	add_childÚparent)r   r#   r    r'   Únodes   &&&& r   r"   ÚHTMLTree.add_tagH   se   € Ø×$Ñ$ S×3Ò3Ø×Ñ×&Ñ& sÔ+ÙçÜ˜3Ó&ˆDØ×Ñ×'Ñ'¨Ô-Ø $Öà $× 1Ñ 1× 8Ñ 8ˆDÖr   c                óh   € V'       d   R V 2pMRV 2p\        V P                  P                  V4      # )Ústart_Úend_)Úhasattrr
   Ústyle)r   r#   r'   Úhandler_names   &&& r   rB   ÚHTMLTree._doc_has_handlerT   s0   € ßØ# C 5˜>‰Là! # ˜<ˆLä�t—x‘x—~‘~ |Ó4Ð4r   c                óN   € V P                   P                  \        V4      4       R # r   )r=   rE   ÚDataNoder,   s   &&r   r+   ÚHTMLTree.add_data\   s   € Ø×Ñ×#Ñ#¤H¨T£NÖ3r   c                óP   € V P                   P                  V P                  4       R # r   )r<   r   r
   r   s   &r   r   ÚHTMLTree.write_   s   € Ø�	‰	�‰˜Ÿ™Ö!r   )r=   r
   r<   r>   )NT)r/   r0   r1   r2   r3   r   r"   rB   r+   r   r4   r5   ©r8   s   @r   r   r   ;   s(   ø‡ € ñò!ô
9ò5ò4÷"ð "r   r   c                   ó0   a € ] tR t^ct o RR ltR tRtV tR# )ÚNodeNc                ó   € Wn         R # r   ©rF   )r   rF   s   &&r   r   ÚNode.__init__d   s   € ØŽr   c                ó   € \         hr   )ÚNotImplementedErrorr?   s   &&r   r   Ú
Node.writeg   s   € Ü!Ð!r   rY   r   )r/   r0   r1   r2   r   r   r4   r5   rU   s   @r   rW   rW   c   s   ø‡ € ô÷"ð "r   rW   c                   ól   a a€ ] tR t^kt oRV 3R lltR tR tR tR tR t	R t
R tR	 tR
 tRtVtV ;t# )r;   c                ó4   <€ \         SV `  V4       . V n        R # r   )r   r   Úchildren)r   rF   r   s   &&€r   r   ÚStemNode.__init__l   s   ø€ Ü‰Ñ˜Ô ØˆŽr   c                óH   € Wn         V P                  P                  V4       R # r   )rF   r`   rC   ©r   Úchilds   &&r   rE   ÚStemNode.add_childp   s   € ØŒØ�‰×Ñ˜UÖ#r   c                óH   € V P                  4        V P                  V4       R # r   )Úcollapse_whitespaceÚ_write_childrenr?   s   &&r   r   ÚStemNode.writet   s   € Ø× Ñ Ô"Ø×Ñ˜SÖ!r   c                óâ   € \        V P                  V P                  R ,          4       FC  w  r#\        V\        4      '       d   Ve   VP	                  W4       K2  VP	                  V4       KE  	  R# )ºé   NNN)r   r`   Ú
isinstancerD   r   )r   r
   rd   Ú
next_childs   &&  r   rh   ÚStemNode._write_childrenx   sN   € Ü!,¨T¯]©]¸D¿M¹MÈ"Õ<MÖ!NÑˆEÜ˜%¤×)Ò)¨jÒ.DØ—‘˜CÖ,à—‘˜CÖ ó	 "Or   c                ó’   € \         ;QJ d&    R  V P                   4       F  '       d   K   R# 	  R# ! R  V P                   4       4      # )c              3   ó@   "  € T F  qP                  4       x € K  	  R # 5ir   )Úis_whitespace©Ú.0rd   s   & r   Ú	<genexpr>Ú)StemNode.is_whitespace.<locals>.<genexpr>€   s   é € ÐD±m¨U×&Ñ&×(Ð(³mùs   ‚FT)Úallr`   r   s   &r   rr   ÚStemNode.is_whitespace   s3   € ß‹sÑD°d·m²mÓD�sŒsÐDŠsÐDˆsÑD°d·m²mÓDÓDÐDr   c                ól   € V P                   ;'       d"    V P                   ^ ,          P                  4       # )r   )r`   Ústartswith_whitespacer   s   &r   rz   ÚStemNode.startswith_whitespace‚   s&   € Ø�}‰}×IÐI §¡¨qÕ!1×!GÑ!GÓ!IÐIr   c                ól   € V P                   ;'       d"    V P                   R,          P                  4       # )rl   éÿÿÿÿ)r`   Úendswith_whitespacer   s   &r   r~   ÚStemNode.endswith_whitespace…   s&   € Ø�}‰}×HÐH §¡¨rÕ!2×!FÑ!FÓ!HÐHr   c                ó  € V P                   '       dB   V P                   ^ ,          P                  4       '       d   V P                   R,          V n         KS  V P                   '       d$   V P                   ^ ,          P                  4        R# R# )r   rk   N)r`   rr   Úlstripr   s   &r   r�   ÚStemNode.lstripˆ   sU   € Ø�m�mˆm §¡¨aÕ 0× >Ñ >× @Ò @Ø ŸM™M¨"Õ-ˆDŽMØ�=�=ˆ=Ø�M‰M˜!Õ×#Ñ#Ö%ñ r   c                ó  € V P                   '       d>   V P                   R,          P                  4       '       d   V P                   RR V n         KO  V P                   '       d$   V P                   R,          P                  4        R# R# )rl   Nr}   )r`   rr   Úrstripr   s   &r   r„   ÚStemNode.rstripŽ   sW   € Ø�m�mˆm §¡¨bÕ 1× ?Ñ ?× AÒ AØ ŸM™M¨#¨2Ð.ˆDŽMØ�=�=ˆ=Ø�M‰M˜"Õ×$Ñ$Ö&ñ r   c                óŒ   € V P                  4        V P                  4        V P                   F  pVP                  4        K  	  R# )aN  Remove collapsible white-space from HTML.

HTML in docstrings often contains extraneous white-space around tags,
for readability. Browsers would collapse this white-space before
rendering. If not removed before conversion to RST where white-space is
part of the syntax, for example for indentation, it can result in
incorrect output.
N)r�   r„   r`   rg   rc   s   & r   rg   ÚStemNode.collapse_whitespace”   s0   € ð 	�‰ŒØ�‰ŒØ—]”]ˆEØ×%Ñ%Ö'ó #r   )r`   r   )r/   r0   r1   r2   r   rE   r   rh   rr   rz   r~   r�   r„   rg   r4   r5   r6   r7   s   @@r   r;   r;   k   s?   ù‡ € ÷ò$ò"ò!òEòJòIò&ò'÷(ò (r   r;   c                   ó\   a a€ ] tR t^£t oRtR	V 3R lltR tR
R ltR tR t	R t
RtVtV ;t# )rD   zH
A generic Tag node. It will verify that handlers exist before writing.
c                ó>   <€ \         SV `  V4       W n        Wn        R # r   )r   r   r    r#   )r   r#   r    rF   r   s   &&&&€r   r   ÚTagNode.__init__¨   s   ø€ Ü‰Ñ˜Ô ØŒ
ØŽr   c                ó’   € \         ;QJ d&    R  V P                   4       F  '       g   K   R# 	  R# ! R  V P                   4       4      # )c              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5ir   )rm   rD   rs   s   & r   ru   Ú+TagNode._has_nested_tags.<locals>.<genexpr>¯   s   é € ÐI¹=°%”:˜e¤W×-Ð-»=ùs   ‚TF)Úanyr`   r   s   &r   Ú_has_nested_tagsÚTagNode._has_nested_tags­   s3   € ç‹sÑI¸4¿=º=ÓI�sŒsÐIŠsÐIˆsÑI¸4¿=º=ÓIÓIÐIr   c                ó¼  € V P                   \        9   ;'       d    V P                  4       p\        V P                  \
        4      ;'       d9    V P                  P                   \        9   ;'       d    V P                   \        9   pV'       g	   V'       d   V P                  V4       R # V P                  V4       V P                  V4       V P                  W4       R # r   )r#   ÚOMIT_SELF_TAGSr�   rm   rF   rD   ÚPRIORITY_PARENT_TAGSÚOMIT_NESTED_TAGSrh   Ú_write_startÚ
_write_end)r   r
   rn   Úprioritize_nested_tagsÚprioritize_parent_tags   &&&  r   r   ÚTagNode.write±   s¬   € à�H‰HœÑ&×BÐB¨4×+@Ñ+@Ó+Bð 	ô �t—{‘{¤GÓ,÷ -ð -Ø—‘—‘Ô#7Ñ7÷-ð -à—‘Ô,Ñ,ð 	÷
 "×%:Ø× Ñ  Ô%Ùà×Ñ˜#ÔØ×Ñ˜SÔ!Ø�‰˜Ö(r   c                óâ  € V P                   \        9   d!   V P                  4        V P                  4        \	        V P
                  RR V P
                  R,          4       F]  w  r\        V\        4      '       g   K  VP                  4       '       g   K5  VP                  4       '       g   KM  VP                  4        K_  	  \	        V P
                  RR V P
                  R,          4       F]  w  r#\        V\        4      '       g   K  VP                  4       '       g   K5  VP                  4       '       g   KM  VP                  4        K_  	  V P
                   F  pVP                  4        K  	  R# )aQ  Remove collapsible white-space.

All tags collapse internal whitespace. Block-display HTML tags also
strip all leading and trailing whitespace.

Approximately follows the specification used in browsers:
https://www.w3.org/TR/css-text-3/#white-space-rules
https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Whitespace
Nrk   r}   )r#   ÚHTML_BLOCK_DISPLAY_TAGSr�   r„   Úzipr`   rm   rQ   r~   rz   rg   )r   ÚprevÚcurÚnxtrd   s   &    r   rg   ÚTagNode.collapse_whitespaceÂ   sû   € ð �8‰8Ô.Ô.Ø�K‰KŒMØ�K‰KŒMô ˜TŸ]™]¨3¨BÐ/°·±¸rÕ1BÖC‰IˆDä˜4¤×*Ô*Ø×,Ñ,×.Ô.Ø×-Ñ-×/Ô/à—
‘
–ñ Dô ˜DŸM™M¨#¨2Ð.°·±¸bÕ0AÖB‰HˆCä˜3¤×)Ô)Ø×+Ñ+×-Ô-Ø×-Ñ-×/Ô/à—
‘
–ñ Cð —]”]ˆEØ×%Ñ%Ö'ó #r   c                ó¬   € R V P                    2p\        VP                  V4      '       d)   \        VP                  V4      ! V P                  4       R# R# )rJ   N)r#   rL   rM   Úgetattrr    )r   r
   rN   s   && r   r•   ÚTagNode._write_startä   s?   € Ø §¡˜zÐ*ˆÜ�3—9‘9˜l×+Ò+Ü�C—I‘I˜|Ô,¨T¯Z©ZÖ8ñ ,r   c                óà   € R V P                    2p\        VP                  V4      '       dC   VR8X  d   \        VP                  V4      ! V4       R# \        VP                  V4      ! 4        R# R# )rK   Úend_aN)r#   rL   rM   r¢   )r   r
   rn   rN   s   &&& r   r–   ÚTagNode._write_endé   sT   € Ø˜dŸh™h˜ZÐ(ˆÜ�3—9‘9˜l×+Ò+Ø˜wÔ&ä˜Ÿ	™	 <Ô0°Ö<ä˜Ÿ	™	 <Ô0Ö2ñ ,r   )r    r#   )NNr   )r/   r0   r1   r2   r3   r   r�   r   rg   r•   r–   r4   r5   r6   r7   s   @@r   rD   rD   £   s/   ù‡ € ñ÷ò
Jô)ò" (òD9÷
3ò 3r   rD   c                   ót   a a€ ] tR t^ót oRtRV 3R llt]R 4       tR tR t	R t
R tR tR	 tR
 tRtVtV ;t# )rQ   z(
A Node that contains only string data.
c           	     óÐ  <€ \         SV `  V4       \        V\        4      '       g   \	        R \        V4       R24      hRV n        RV n        RV n        VR8X  d   R# VP                  4       '       d	   Wn        R# \        R \        V4       4       4      p\        V4      \        R \        \        V4      4       4       4      ,
          pVRV V n        WR V n        WV V n        R# )zExpecting string type, z given.Ú Nc              3   óZ   "  € T F!  w  rVP                  4       '       d   K  Vx € K#  	  R # 5ir   ©Úisspace©rt   ÚidxÚchs   &  r   ru   Ú$DataNode.__init__.<locals>.<genexpr>  s   é € ð 
Ù.‘G�C°b·j±j·l�CŠC›ùó   ‚+¡
+c              3   óZ   "  € T F!  w  rVP                  4       '       d   K  Vx € K#  	  R # 5ir   r«   r­   s   &  r   ru   r°     s    é € ð *
Ù8‘G�CÀÇ
Á
Ç�CŠCÓ8ùr±   )r   r   rm   ÚstrÚ
ValueErrorÚtypeÚ_leading_whitespaceÚ_trailing_whitespaceÚ_stripped_datar¬   ÚnextÚ	enumerateÚlenÚreversed)r   r   rF   Úfirst_non_spaceÚlast_non_spacer   s   &&&  €r   r   ÚDataNode.__init__ø   sà   ø€ Ü‰Ñ˜Ô Ü˜$¤×$Ò$ÜÐ6´t¸D³z°lÀ'ÐJÓKÐKØ#%ˆÔ Ø$&ˆÔ!Ø ˆÔØ�2Œ:ÙØ�<‰<�>Š>Ø(,Ô%ÙÜñ 
Ü(¨œó
ó 
ˆô ˜T›¤Tñ *
Ü(¬°$«Ô8ó*
ó &
õ 
ˆð $(Ð(8¨Ð#9ˆÔ Ø$(¨Ð$9ˆÔ!Ø"°>ÐBˆÖr   c                óN   € V P                    V P                   V P                   2# r   ©r¶   r¸   r·   r   s   &r   r   ÚDataNode.data  s1   € ð ×'Ñ'Ð(¨×)<Ñ)<Ð(=Ø×(Ñ(Ð)ð+ð	
r   c                ó|   € V P                   R 8H  ;'       d'    V P                  R 8g  ;'       g    V P                  R 8g  # ©r©   )r¸   r¶   r·   r   s   &r   rr   ÚDataNode.is_whitespace  s@   € Ø×"Ñ" bÑ(÷ 
ð 
Ø×$Ñ$¨Ñ*×MÐM¨d×.GÑ.GÈ2Ñ.Mð	
r   c                ó|   € V P                   R 8g  ;'       g'    V P                  R 8H  ;'       d    V P                  R 8g  # rÄ   rÁ   r   s   &r   rz   ÚDataNode.startswith_whitespace  s@   € Ø×'Ñ'¨2Ñ-÷ 
ð 
Ø×Ñ 2Ñ%×IÐI¨$×*CÑ*CÀrÑ*Ið	
r   c                ó|   € V P                   R 8g  ;'       g'    V P                  R 8H  ;'       d    V P                  R 8g  # rÄ   )r·   r¸   r¶   r   s   &r   r~   ÚDataNode.endswith_whitespace  s@   € Ø×(Ñ(¨BÑ.÷ 
ð 
Ø×Ñ 2Ñ%×HÐH¨$×*BÑ*BÀbÑ*Hð	
r   c                ó€   € V P                   R 8w  d
   R V n         R# V P                  R 8X  d   V P                  4        R# R# ©r©   N)r¶   r¸   r„   r   s   &r   r�   ÚDataNode.lstrip$  s4   € Ø×#Ñ# rÔ)Ø')ˆDÖ$Ø× Ñ  BÔ&Ø�K‰KŽMñ 'r   c                ó€   € V P                   R 8w  d
   R V n         R# V P                  R 8X  d   V P                  4        R# R# rË   )r·   r¸   r�   r   s   &r   r„   ÚDataNode.rstrip*  s4   € Ø×$Ñ$¨Ô*Ø(*ˆDÖ%Ø× Ñ  BÔ&Ø�K‰KŽMñ 'r   c                ó   € R# )z4Noop, ``DataNode.write`` always collapses whitespaceN© r   s   &r   rg   ÚDataNode.collapse_whitespace0  s   € ár   c                óâ   € VP                  V P                  P                  4       4      pV P                   R P	                  V4       V P
                   2pVR8w  d   VP                  V4       R# R# )Ú r©   N)Útranslate_wordsr¸   Úsplitr¶   Újoinr·   r-   )r   r
   ÚwordsÚstr_datas   &&  r   r   ÚDataNode.write4  sj   € Ø×#Ñ# D×$7Ñ$7×$=Ñ$=Ó$?Ó@ˆà×'Ñ'Ð(¨¯©°%«Ð(9Ø×(Ñ(Ð)ð+ð 	ð �rŒ>Ø�O‰O˜HÖ%ñ r   rÁ   r   )r/   r0   r1   r2   r3   r   Úpropertyr   rr   rz   r~   r�   r„   rg   r   r4   r5   r6   r7   s   @@r   rQ   rQ   ó   sL   ù‡ € ñ÷Cð, ñ
ó ð
ò
ò

ò

ò
òò÷&ò &r   rQ   N)ÚcodeÚa)ÚspanÚirÛ   rÜ   )rÞ   Úb)ÚpÚnoteÚulÚli)Úhtml.parserr   Ú	itertoolsr   r“   r”   r’   r›   r   r   rW   r;   rD   rQ   rÐ   r   r   Ú<module>ræ      sp   ðõ #Ý !à$Ð Ø-Ð Ø€Ø3Ð ô"!�jô "!÷J%"ñ %"÷P"ñ "ô5(ˆtô 5(ôpM3ˆhô M3ô`H&ˆtö H&r   