+
    ‚V@i*0  ã                   ó6  € ^ RI t ^ RIt^ RIHtHtHtHtHtHtH	t	H
t
HtHt ^ RIHt ^ RIHtHtHtHtHt . R/ R3NR/ R3NR	/ R
3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R3NR/ R 3NR!/ R"3NR#/ R$3NR%/ R&3NR'R(R)R*./R+3NR,R(R*./R-3NR./ R/3NR0/ R13NR2/ R33NR4/ R53NR6R(R)R7./R83NR9/ R:3NR;/ R<3NR=/ R>3NR=R?R@/R=3NRAR?R@RBR@/RC3NRDRBR@/RE3NRF/ RG3NRFR(RH./RI3NRJRKRL/RM3NRNRKRO /RP3NRJRKRQ /RM3Nt ! RR RS] P,                  4      tR# )Té    N)
Úutf8Úxhtml_escapeÚxhtml_unescapeÚ
url_escapeÚurl_unescapeÚ
to_unicodeÚjson_decodeÚjson_encodeÚsqueezeÚrecursive_unicode)Úunicode_type)ÚListÚTupleÚUnionÚDictÚAnyzhello http://world.com/!z8hello <a href="http://world.com/">http://world.com/</a>!z0hello http://world.com/with?param=true&stuff=yeszqhello <a href="http://world.com/with?param=true&amp;stuff=yes">http://world.com/with?param=true&amp;stuff=yes</a>z>http://url.com/w(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz]<a href="http://url.com/w">http://url.com/w</a>(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz>http://url.com/withmany.......................................zd<a href="http://url.com/withmany">http://url.com/withmany</a>.......................................z;http://url.com/withmany((((((((((((((((((((((((((((((((((a)za<a href="http://url.com/withmany">http://url.com/withmany</a>((((((((((((((((((((((((((((((((((a)zhttp://foo.com/blah_blahz?<a href="http://foo.com/blah_blah">http://foo.com/blah_blah</a>zhttp://foo.com/blah_blah/zA<a href="http://foo.com/blah_blah/">http://foo.com/blah_blah/</a>z)(Something like http://foo.com/blah_blah)zP(Something like <a href="http://foo.com/blah_blah">http://foo.com/blah_blah</a>)z$http://foo.com/blah_blah_(wikipedia)zW<a href="http://foo.com/blah_blah_(wikipedia)">http://foo.com/blah_blah_(wikipedia)</a>z+http://foo.com/blah_(blah)_(wikipedia)_blahze<a href="http://foo.com/blah_(blah)_(wikipedia)_blah">http://foo.com/blah_(blah)_(wikipedia)_blah</a>z5(Something like http://foo.com/blah_blah_(wikipedia))zh(Something like <a href="http://foo.com/blah_blah_(wikipedia)">http://foo.com/blah_blah_(wikipedia)</a>)zhttp://foo.com/blah_blah.z@<a href="http://foo.com/blah_blah">http://foo.com/blah_blah</a>.zhttp://foo.com/blah_blah/.zB<a href="http://foo.com/blah_blah/">http://foo.com/blah_blah/</a>.z<http://foo.com/blah_blah>zG&lt;<a href="http://foo.com/blah_blah">http://foo.com/blah_blah</a>&gt;z<http://foo.com/blah_blah/>zI&lt;<a href="http://foo.com/blah_blah/">http://foo.com/blah_blah/</a>&gt;zhttp://foo.com/blah_blah,z@<a href="http://foo.com/blah_blah">http://foo.com/blah_blah</a>,z&http://www.example.com/wpstyle/?p=364.zZ<a href="http://www.example.com/wpstyle/?p=364">http://www.example.com/wpstyle/?p=364</a>.zrdar://1234Úpermitted_protocolsÚhttpÚrdarz%<a href="rdar://1234">rdar://1234</a>z
rdar:/1234z#<a href="rdar:/1234">rdar:/1234</a>z'http://userid:password@example.com:8080z]<a href="http://userid:password@example.com:8080">http://userid:password@example.com:8080</a>zhttp://userid@example.comzA<a href="http://userid@example.com">http://userid@example.com</a>zhttp://userid@example.com:8080zK<a href="http://userid@example.com:8080">http://userid@example.com:8080</a>z"http://userid:password@example.comzS<a href="http://userid:password@example.com">http://userid:password@example.com</a>zFmessage://%3c330e7f8409726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3eÚmessagez›<a href="message://%3c330e7f8409726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3e">message://%3c330e7f8409726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3e</a>u   http://âž¡.ws/ä¨¹u1   <a href="http://âž¡.ws/ä¨¹">http://âž¡.ws/ä¨¹</a>z<tag>http://example.com</tag>zJ&lt;tag&gt;<a href="http://example.com">http://example.com</a>&lt;/tag&gt;zJust a www.example.com link.zAJust a <a href="http://www.example.com">www.example.com</a> link.Úrequire_protocolTz:A http://reallylong.com/link/that/exceedsthelenglimit.htmlÚshortenz§A <a href="http://reallylong.com/link/that/exceedsthelenglimit.html" title="http://reallylong.com/link/that/exceedsthelenglimit.html">http://reallylong.com/link...</a>z6A http://reallylongdomainnamethatwillbetoolong.com/hi!z¢A <a href="http://reallylongdomainnamethatwillbetoolong.com/hi" title="http://reallylongdomainnamethatwillbetoolong.com/hi">http://reallylongdomainnametha...</a>!z/A file:///passwords.txt and http://web.com linkzLA file:///passwords.txt and <a href="http://web.com">http://web.com</a> linkÚfilezSA <a href="file:///passwords.txt">file:///passwords.txt</a> and http://web.com linkzwww.external-link.comÚextra_paramsúrel="nofollow" class="external"z`<a href="http://www.external-link.com" rel="nofollow" class="external">www.external-link.com</a>z;www.external-link.com and www.internal-link.com/blogs extrac                 ó8   € V P                  R 4      '       d   R# R# )zhttp://www.internal-link.comzclass="internal"r   )Ú
startswith©Úhrefs   &Ú:/usr/lib/python3/dist-packages/tornado/test/escape_test.pyÚ<lambda>r!   Å   s$   € à—?‘?Ð#A×BÒBð #ð 7à6ð7ó    zÈ<a href="http://www.external-link.com" rel="nofollow" class="external">www.external-link.com</a> and <a href="http://www.internal-link.com/blogs" class="internal">www.internal-link.com/blogs</a> extrac                 ó   € R # )z%    rel="nofollow" class="external"  © r   s   &r    r!   r!   Ð   s   € Ñ&Mr"   c                   ób   a € ] tR t^Öt o R tR tR tR tR tR t	R t
R tR	 tR
 tR tRtV tR# )ÚEscapeTestCasec                óŠ   € \          F8  w  rp\        P                  P                  ! V3/ VB pV P	                  WC4       K:  	  R # )N)Úlinkify_testsÚtornadoÚescapeÚlinkifyÚassertEqual)ÚselfÚtextÚkwargsÚhtmlÚlinkeds   &    r    Útest_linkifyÚEscapeTestCase.test_linkify×   s8   € ß"/ÑˆD˜$Ü—^‘^×+Ò+¨DÑ;°FÑ;ˆFØ×Ñ˜VÖ*ó #0r"   c           	     óØ   € . ROpV F_  w  r#V P                  \        \        V4      4      \        V4      4       V P                  \        V4      \        \        V4      4      4       Ka  	  R# )ú<foo>N)©r5   z&lt;foo&gt;r6   )s   <foo>s   &lt;foo&gt;)z<>&"'z&lt;&gt;&amp;&quot;&#x27;)z&amp;z	&amp;amp;)u   <Ã©>u
   &lt;Ã©&gt;)s   <Ã©>s
   &lt;Ã©&gt;)r,   r   r   r   ©r-   ÚtestsÚ	unescapedÚescapeds   &   r    Útest_xhtml_escapeÚ EscapeTestCase.test_xhtml_escapeÜ   sT   € ò
ˆó #(ÑˆIØ×ÑœT¤,¨yÓ"9Ó:¼DÀ»MÔJØ×ÑœT )›_¬d´>À'Ó3JÓ.KÖLó #(r"   c                óZ   € . ROpV F   w  r#V P                  V\        V4      4       K"  	  R# )úfoo&#32;barN))r>   úfoo bar)zfoo&#x20;barr?   )zfoo&#X20;barr?   )zfoo&#xabc;baru	   fooàª¼bar)úfoo&#xyz;barr@   )ú	foo&#;barrA   )ú
foo&#x;barrB   )r,   r   )r-   r8   r:   r9   s   &   r    Útest_xhtml_unescape_numericÚ*EscapeTestCase.test_xhtml_unescape_numericê   s-   € ò
ˆó #(ÑˆGØ×Ñ˜Y¬°wÓ(?Ö@ó #(r"   c                óž   € R P                  4       R3R P                  R4      R3R.pV F   w  r#V P                  \        V4      V4       K"  	  R# )ô   Ã©ú%C3%A9Úlatin1z%E9N)rF   rG   )Úencoder,   r   r7   s   &   r    Útest_url_escape_unicodeÚ&EscapeTestCase.test_url_escape_unicode÷   sR   € ð �_‰_Ó Ð)Ø�_‰_˜XÓ&¨Ð.à ð
ˆó #(ÑˆIØ×ÑœZ¨	Ó2°GÖ<ó #(r"   c                óÔ   € RRR \        R4      R3.pV FP  w  r#pV P                  \        \        V4      V4      V4       V P                  \        \        V4      V4      V4       KR  	  R# )rG   rF   N)rG   rF   r   )rG   u   ÃƒÂ©rH   )r   r,   r   r   )r-   r8   r:   r9   Úencodings   &    r    Útest_url_unescape_unicodeÚ(EscapeTestCase.test_url_unescape_unicode  sg   € à(Ø0Ø”t˜H“~ tÐ,ð
ˆó
 -2Ñ(ˆG ð ×Ñœ\¬*°WÓ*=¸xÓHÈ)ÔTØ×Ñœ\¬$¨w«-¸ÓBÀIÖNó -2r"   c                óŒ  € R pRpRpV P                  \        V4      V4       V P                  \        VRR7      V4       V P                  \        V4      V4       V P                  \        VRR7      V4       V P                  \        VRR7      \        V4      4       V P                  \        VRRR7      \        V4      4       R# )z+ #%z
%2B+%23%25z%2B%20%23%25F)ÚplusN)rM   )rM   rQ   )r,   r   r   r   )r-   r9   Úplus_escapedr:   s   &   r    Útest_url_escape_quote_plusÚ)EscapeTestCase.test_url_escape_quote_plus  s¤   € Øˆ	Ø#ˆØ ˆØ×Ñœ IÓ.°Ô=Ø×Ñœ I°EÔ:¸GÔDØ×Ñœ lÓ3°YÔ?Ø×Ñœ g°EÔ:¸IÔFØ×Ñœ l¸TÔBÄDÈÃOÔTØ×ÑÜ˜¨4°eÔ<¼dÀ9»oö	
r"   c                ó¦   € V P                  \        \        R 4      4      \        4       V P                  \        \        R 4      4      \        4       R# )ÚfooN)r,   Útyper   Ústrr   ©r-   s   &r    Útest_escape_return_typesÚ'EscapeTestCase.test_escape_return_types  s8   € ð 	×Ñœœl¨5Ó1Ó2´CÔ8Ø×Ñœœl¨5Ó1Ó2´LÖAr"   c                óº   € V P                  \        R 4      R4       V P                  \        R4      R4       V P                  \        \        R4      4      R4       R# )s   "foo"rV   z"foo"u   "Ã©"rF   N)r,   r	   r   rY   s   &r    Útest_json_decodeÚEscapeTestCase.test_json_decode"  sJ   € ð 	×Ñœ XÓ.°Ô6Ø×Ñœ WÓ-¨uÔ5ð 	×Ñœ¤T¨*Ó%5Ó6¸ÖAr"   c           	     óþ   € V P                  \        \        R 4      4      R 4       \        \        J dK   V P                  \        \        \        R 4      4      4      R 4       V P                  \        \        R4       R# R# )rF   ó   éN)r,   r	   r
   ÚbytesrX   r   ÚassertRaisesÚUnicodeDecodeErrorrY   s   &r    Útest_json_encodeÚEscapeTestCase.test_json_encode+  s[   € ð 	×Ñœ¤[°Ó%:Ó;¸XÔFÜ”C‹<Ø×Ñœ[¬´T¸(³^Ó)DÓEÀxÔPØ×ÑÔ0´+¸wÖGñ r"   c                ó<   € V P                  \        R 4      R4       R# )z&sequences     of    whitespace   charszsequences of whitespace charsN)r,   r   rY   s   &r    Útest_squeezeÚEscapeTestCase.test_squeeze4  s   € Ø×ÑÜÐ<Ó=Ø+ö	
r"   c                ó:  € R RR/RRR.RR	RR/pV P                  \        VR ,          4      RR/4       V P                  \        VR,          4      RR.4       V P                  \        VR,          4      R
4       V P                  \        VR,          4      R4       R# )Údictó   fooó   barÚlistÚtuplera   rV   ÚbarN)rk   rl   )rV   ro   )r,   r   )r-   r8   s   & r    Útest_recursive_unicodeÚ%EscapeTestCase.test_recursive_unicode:  sš   € à�V˜VÐ$Ø�V˜VÐ$ØÐ%Ø�Vð	
ˆð 	×ÑÔ*¨5°­=Ó9¸EÀ5¸>ÔJØ×ÑÔ*¨5°­=Ó9¸EÀ5¸>ÔJØ×ÑÔ*¨5°­>Ó:¸NÔKØ×ÑÔ*¨5°­>Ó:¸EÖBr"   r$   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r2   r;   rC   rJ   rN   rS   rZ   r]   rd   rg   rp   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r    r&   r&   Ö   sI   ø‡ € ò+ò
MòAò	=òOò
òBòBòHò
÷
Cð 
Cr"   r&   )Úunittestr)   Útornado.escaper   r   r   r   r   r   r	   r
   r   r   Útornado.utilr   Útypingr   r   r   r   r   r(   ÚTestCaser&   r$   r"   r    Ú<module>r~      sà  ðÛ ã ÷÷ ÷ õ &ç 0Õ 0ðð 	#Ø
ØBððð 	;Ø
Ø{ððð 	IØ
Øgððð( 	IØ
Ønðð'ð2 	FØ
Økðð1ð@ 	#Ø
ØIðð?ðJ 	$Ø
ØKððIðT 	4Ø
ØZððSð^ 	/Ø
Øaðð]ðh 	6Ø
Øoððgðr 	@Ø
Ørððqð| 	$Ø
ØJðð{ðF 	%Ø
ØLððEðP 	%Ø
ØQððOðZ 	&Ø
ØSððYðd 	$Ø
ØJððcðn 	1Ø
Ødððmðx 	Ø	 ¨Ð 0Ð1Ø/ððwðB 	Ø	  Ð)Ø-ððAðL 	2Ø
ØgððKðV 	$Ø
ØKððUð` 	)Ø
ØUðð_ðj 	-Ø
Ø]ððiðt 	QØ	 ¨Ð 3Ð4ð	Uððsð@ 	"Ø
ØGðððJ 	(Ø
ØTððIðT 	'Ø
ØKððSð^ 	'Ø	˜TÐ"Ø&ðð]ðh 	EØ	˜T 9¨dÐ3ð	nððgðt 	AØ	�DÐð	nððsð@ 	:Ø
ØVðððJ 	:Ø	  Ð)Ø]ððIðT 	 Ø	Ð:Ð;ØjððSð^ 	Fàñ ð	
ð	sðð]ðv 	 Ø	ÑMÐNØjððu€ôDnC�X×&Ñ&ö nCr"   