Ë
    êmxi g  ã                   ó.  — d dl mZmZmZ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 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Zd dlmZmZmZ deeeee   f   eeee
   f   f   fd„Z  G d	„ d
ejB                  «      Z" G d„ dejB                  «      Z# G d„ dejB                  «      Z$ G d„ dejB                  «      Z% G d„ dejB                  «      Z& G d„ dejB                  «      Z' G d„ dejB                  «      Z( G d„ dejB                  «      Z)y)é    )
Ú
url_concatÚparse_multipart_form_dataÚHTTPHeadersÚformat_timestampÚHTTPServerRequestÚparse_request_start_lineÚparse_cookieÚ	qs_to_qslÚHTTPInputErrorÚHTTPFile)Úutf8Ú
native_str)Úgen_log)Úignore_deprecationN)ÚTupleÚDictÚListÚreturnc                  ó
   — i i fS )zÇReturn two empty dicts suitable for use with parse_multipart_form_data.

    mypy insists on type annotations for dict literals, so this lets us avoid
    the verbose types throughout this test.
    © r   ó    úQ/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/httputil_test.pyÚform_data_argsr      s   € ð ˆrˆ6€Mr   c                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚTestUrlConcatc                 óD   — t        dddg«      }| j                  |d«       y )Núhttps://localhost/path©Úyr   ©Úzr!   úhttps://localhost/path?y=y&z=z©r   ÚassertEqual©ÚselfÚurls     r   Útest_url_concat_no_query_paramsz-TestUrlConcat.test_url_concat_no_query_params&   s%   € ÜÐ1°JÀ
Ð3KÓLˆØ×Ñ˜Ð>Õ?r   c                 óD   — t        dddg«      }| j                  |d«       y )Nr   )r   z/yr    z!https://localhost/path?y=%2Fy&z=zr#   r%   s     r   Útest_url_concat_encode_argsz)TestUrlConcat.test_url_concat_encode_args*   s%   € ÜÐ1°KÀÐ3LÓMˆØ×Ñ˜ÐAÕBr   c                 óD   — t        dddg«      }| j                  |d«       y )Nzhttps://localhost/path?r   r    r"   r#   r%   s     r   Útest_url_concat_trailing_qz(TestUrlConcat.test_url_concat_trailing_q.   s%   € ÜÐ2°ZÀÐ4LÓMˆØ×Ñ˜Ð>Õ?r   c                 óD   — t        dddg«      }| j                  |d«       y )Nzhttps://localhost/path?xr   r    ú!https://localhost/path?x=&y=y&z=zr#   r%   s     r   Ú&test_url_concat_q_with_no_trailing_ampz4TestUrlConcat.test_url_concat_q_with_no_trailing_amp2   s%   € ÜÐ3°jÀ*Ð5MÓNˆØ×Ñ˜ÐAÕBr   c                 óD   — t        dddg«      }| j                  |d«       y )Nzhttps://localhost/path?x&r   r    r.   r#   r%   s     r   Útest_url_concat_trailing_ampz*TestUrlConcat.test_url_concat_trailing_amp6   s%   € ÜÐ4°zÀ:Ð6NÓOˆØ×Ñ˜ÐAÕBr   c                 óD   — t        dddg«      }| j                  |d«       y )Nzhttps://localhost/path?a=1&b=2r   r    z&https://localhost/path?a=1&b=2&y=y&z=zr#   r%   s     r   Útest_url_concat_mult_paramsz)TestUrlConcat.test_url_concat_mult_params:   s%   € ÜÐ9¸JÈ
Ð;SÓTˆØ×Ñ˜ÐFÕGr   c                 ó@   — t        dg «      }| j                  |d«       y ©Nzhttps://localhost/path?r=1&t=2r#   r%   s     r   Útest_url_concat_no_paramsz'TestUrlConcat.test_url_concat_no_params>   s    € ÜÐ9¸2Ó>ˆØ×Ñ˜Ð>Õ?r   c                 ó@   — t        dd «      }| j                  |d«       y r5   r#   r%   s     r   Útest_url_concat_none_paramsz)TestUrlConcat.test_url_concat_none_paramsB   s    € ÜÐ9¸4Ó@ˆØ×Ñ˜Ð>Õ?r   c                 óB   — t        ddg«      }| j                  |d«       y )Nzhttps://localhost/path#tabr   zhttps://localhost/path?y=y#tabr#   r%   s     r   Útest_url_concat_with_fragz'TestUrlConcat.test_url_concat_with_fragF   s"   € ÜÐ5¸
°|ÓDˆØ×Ñ˜Ð>Õ?r   c                 óD   — t        dddg«      }| j                  |d«       y )Nr   )r   Úy1)r   Úy2z https://localhost/path?y=y1&y=y2r#   r%   s     r   Ú!test_url_concat_multi_same_paramsz/TestUrlConcat.test_url_concat_multi_same_paramsJ   s%   € ÜÐ1°KÀÐ3MÓNˆØ×Ñ˜Ð@ÕAr   c                 óB   — t        ddg«      }| j                  |d«       y )Nzhttps://localhost/path?r=1&r=2r   z"https://localhost/path?r=1&r=2&y=yr#   r%   s     r   Ú'test_url_concat_multi_same_query_paramsz5TestUrlConcat.test_url_concat_multi_same_query_paramsN   s"   € ÜÐ9¸J¸<ÓHˆØ×Ñ˜ÐBÕCr   c                 óT   — t        dt        d¬«      «      }| j                  |d«       y )Nr   r   )r   zhttps://localhost/path?y=y)r   Údictr$   r%   s     r   Útest_url_concat_dict_paramsz)TestUrlConcat.test_url_concat_dict_paramsR   s$   € ÜÐ1´4¸#´;Ó?ˆØ×Ñ˜Ð:Õ;r   N)Ú__name__Ú
__module__Ú__qualname__r(   r*   r,   r/   r1   r3   r6   r8   r:   r>   r@   rC   r   r   r   r   r   %   sI   „ ò@òCò@òCòCòHò@ò@ò@òBòDó<r   r   c                   ó   — e Zd Zd„ Zy)ÚQsParseTestc                 óÚ   — d}t         j                  j                  |«      }t        t	        |«      «      }| j                  d|«       | j                  d|«       | j                  d|«       y )Nza=1&b=2&a=3)ÚaÚ1)rJ   Ú3)ÚbÚ2)ÚurllibÚparseÚparse_qsÚlistr
   ÚassertIn)r&   ÚqsstringÚqsÚqsls       r   Útest_parsingzQsParseTest.test_parsingX   sS   € Ø ˆÜ�\‰\×"Ñ" 8Ó,ˆÜ”9˜R“=Ó!ˆØ�‰�j #Ô&Ø�‰�j #Ô&Ø�‰�j #Õ&r   N)rD   rE   rF   rW   r   r   r   rH   rH   W   s   „ ó'r   rH   c                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚMultipartFormDataTestc                 óÂ   — dj                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j                  |d   d«       | j                  |d	   d
«       y )NóT   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo
--1234--ó   
ó   
ó   1234Úfilesr   Úfilenameúab.txtÚbodyó   Foo©Úreplacer   r   r$   ©r&   ÚdataÚargsr_   Úfiles        r   Útest_file_uploadz&MultipartFormDataTest.test_file_uploadb   sp   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeÜ! '¨4°°uÔ=Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨8Ô4Ø×Ñ˜˜f™ vÕ.r   c                 óÂ   — dj                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j                  |d   d«       | j                  |d	   d
«       y )NsP   --1234
Content-Disposition: form-data; name=files; filename=ab.txt

Foo
--1234--r\   r]   r^   r_   r   r`   ra   rb   rc   rd   rf   s        r   Útest_unquoted_namesz)MultipartFormDataTest.test_unquoted_namesq   sp   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeÜ! '¨4°°uÔ=Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨8Ô4Ø×Ñ˜˜f™ vÕ.r   c                 ó`  — g d¢}|D ]¥  }t        j                  d|«       d|j                  dd«      j                  dd«      z  }t        |j                  dd	«      «      }t	        «       \  }}t        d
|||«       |d   d   }| j                  |d   |«       | j                  |d   d«       Œ§ y )N)za;b.txtza"b.txtza";b.txtza;"b.txtz	a";";.txtza\"b.txtza\b.txtztrying filename %rzP--1234
Content-Disposition: form-data; name="files"; filename="%s"

Foo
--1234--ú\ú\\ú"z\"ú
ú
r^   r_   r   r`   rb   rc   )ÚloggingÚdebugre   r   r   r   r$   )r&   Ú	filenamesr`   Ústr_datarg   rh   r_   ri   s           r   Útest_special_filenamesz,MultipartFormDataTest.test_special_filenames�   sÃ   € ò
ˆ	ð "ò 	3ˆHÜ�M‰MÐ.°Ô9ðð
 ×ÑØ�fóç‰gØ�Uóñ	ˆHô ˜×(Ñ(¨¨vÓ6Ó7ˆDÜ(Ó*‰KˆD�%Ü% g¨t°T¸5ÔAØ˜‘> !Ñ$ˆDØ×Ñ˜T *Ñ-¨xÔ8Ø×Ñ˜T &™\¨6Õ2ñ#	3r   c                 óÂ   — dj                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j                  |d   d«       | j                  |d	   d
«       y )Nsr   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"; filename*=UTF-8''%C3%A1b.txt

Foo
--1234--r\   r]   r^   r_   r   r`   u   Ã¡b.txtrb   rc   rd   rf   s        r   Útest_non_ascii_filename_rfc5987z5MultipartFormDataTest.test_non_ascii_filename_rfc5987ž   sp   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeÜ! '¨4°°uÔ=Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨9Ô5Ø×Ñ˜˜f™ vÕ.r   c                 óà   — dj                  d«      j                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j	                  |d   d	«       | j	                  |d
   d«       y )NuX   --1234
Content-Disposition: form-data; name="files"; filename="æµ‹è¯•.txt"

Foo
--1234--zutf-8r\   r]   r^   r_   r   r`   u
   æµ‹è¯•.txtrb   rc   )Úencodere   r   r   r$   rf   s        r   Útest_non_ascii_filename_rawz1MultipartFormDataTest.test_non_ascii_filename_raw­   s}   € ð÷
 ‰FØó
ç
‰'Ø�7ó
ð 	ô %Ó&‰ˆˆeÜ! '¨4°°uÔ=Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨<Ô8Ø×Ñ˜˜f™ vÕ.r   c                 óÂ   — dj                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j                  |d   d«       | j                  |d	   d
«       y )Nr[   r\   r]   s   "1234"r_   r   r`   ra   rb   rc   rd   rf   s        r   Ú)test_boundary_starts_and_ends_with_quotesz?MultipartFormDataTest.test_boundary_starts_and_ends_with_quotes¾   sp   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeÜ! )¨T°4¸Ô?Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨8Ô4Ø×Ñ˜˜f™ vÕ.r   c                 óÚ   — dj                  dd«      }t        «       \  }}| j                  t        d¬«      5  t	        d|||«       d d d «       | j                  |i «       y # 1 sw Y   ŒxY w)Ns   --1234

Foo
--1234--r\   r]   z#multipart/form-data missing headers©Úmsgr^   ©re   r   ÚassertRaisesr   r   r$   ©r&   rg   rh   r_   s       r   Útest_missing_headersz*MultipartFormDataTest.test_missing_headersÍ   s   € ð÷ ‰GØ�7ó
ð	 	ô %Ó&‰ˆˆeØ×ÑÜÐ Eð ó 
ñ 	Bô & g¨t°T¸5ÔA÷	Bð 	×Ñ˜ Õ#÷		Bð 	Búó   ·A!Á!A*c                 óÚ   — dj                  dd«      }t        «       \  }}| j                  t        d¬«      5  t	        d|||«       d d d «       | j                  |i «       y # 1 sw Y   ŒxY w)NsR   --1234
Content-Disposition: invalid; name="files"; filename="ab.txt"

Foo
--1234--r\   r]   úInvalid multipart/form-datar€   r^   r‚   r„   s       r   Ú test_invalid_content_dispositionz6MultipartFormDataTest.test_invalid_content_dispositionÜ   sv   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeØ×Ñœ~Ð3PÐÓQñ 	BÜ% g¨t°T¸5ÔA÷	Bà×Ñ˜ Õ#÷	Bð 	Búr†   c                 óÚ   — dj                  dd«      }t        «       \  }}| j                  t        d¬«      5  t	        d|||«       d d d «       | j                  |i «       y # 1 sw Y   ŒxY w)NsS   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo--1234--r\   r]   rˆ   r€   r^   r‚   r„   s       r   Ú.test_line_does_not_end_with_correct_line_breakzDMultipartFormDataTest.test_line_does_not_end_with_correct_line_breakê   sv   € ð÷ ‰wØ�7ó
ð	 	ô %Ó&‰ˆˆeØ×Ñœ~Ð3PÐÓQñ 	BÜ% g¨t°T¸5ÔA÷	Bà×Ñ˜ Õ#÷	Bð 	Búr†   c                 óÚ   — dj                  dd«      }t        «       \  }}| j                  t        d¬«      5  t	        d|||«       d d d «       | j                  |i «       y # 1 sw Y   ŒxY w)NsF   --1234
Content-Disposition: form-data; filename="ab.txt"

Foo
--1234--r\   r]   z&multipart/form-data value missing namer€   r^   r‚   r„   s       r   Ú6test_content_disposition_header_without_name_parameterzLMultipartFormDataTest.test_content_disposition_header_without_name_parameter÷   s   € ð÷
 ‰GØ�7ó
ð 	ô %Ó&‰ˆˆeØ×ÑÜÐ Hð ó 
ñ 	Bô & g¨t°T¸5ÔA÷	Bð 	×Ñ˜ Õ#÷		Bð 	Búr†   c                 óÂ   — dj                  dd«      }t        «       \  }}t        d|||«       |d   d   }| j                  |d   d«       | j                  |d	   d
«       y )NsU   --1234
Content-Disposition: form-data; name="files"; filename="ab.txt"

Foo
--1234--
r\   r]   r^   r_   r   r`   ra   rb   rc   rd   rf   s        r   Útest_data_after_final_boundaryz4MultipartFormDataTest.test_data_after_final_boundary  sp   € ð÷ �GØ�7ó
ð 	ô %Ó&‰ˆˆeÜ! '¨4°°uÔ=Ø�W‰~˜aÑ ˆØ×Ñ˜˜jÑ)¨8Ô4Ø×Ñ˜˜f™ vÕ.r   c                 ój   — d„ } |d«      } |d«      }||z  dkD  r| j                  d|›d|›�«       y y )Nc                 ó˜   — t        j                  «       }dd| z  z   dz   dz   }i }i }t        d|||«       t        j                  «       |z
  S )Ns+   --1234
Content-Disposition: form-data; x="ó   ;s   "; s1   name="files"; filename="a.txt"

Foo
--1234--
r^   )ÚtimeÚperf_counterr   )ÚnÚstartÚmessagerh   r_   s        r   ÚfzJMultipartFormDataTest.test_disposition_param_linear_performance.<locals>.f  sj   € Ü×%Ñ%Ó'ˆEðà˜‘(ñð ñð Oñ	Oð ð ,.ˆDØ/1ˆEÜ% g¨w¸¸eÔDÜ×$Ñ$Ó&¨Ñ.Ð.r   iè  é'  é   z,Disposition param parsing is not linear: d1=ú vs d2=©Úfail©r&   r˜   Úd1Úd2s       r   Ú)test_disposition_param_linear_performancez?MultipartFormDataTest.test_disposition_param_linear_performance  sE   € ò	/ñ ˆu‹XˆÙˆv‹YˆØ�‰7�RŠ<Ø�I‰IÐEÀ"ÀÀhÈ2È%ÐPÕQð r   N)rD   rE   rF   rj   rl   rw   ry   r|   r~   r…   r‰   r‹   r�   r�   r¡   r   r   r   rY   rY   a   s?   „ ò/ò/ò 3ò:/ò/ò"/ò$ò$ò$ò$ò /ó&Rr   rY   c                   óT   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zy)ÚHTTPHeadersTestc                 óä  — dj                  dd«      }t        j                  |«      }| j                  |d   d«       | j                  |j	                  d«      dg«       | j                  |d   d«       | j                  |j	                  d«      d	d
g«       | j                  t        t        |j                  «       «      «      g d¢«       | j                  d|v «       | j                  d|v «       y )Nz>Foo: bar
 baz
Asdf: qwer
	zxcv
Foo: even
     more
     lines
rq   rr   Úasdfú	qwer zxcvÚFoozbar baz,even more linesÚfooúbar bazúeven more lines))ÚAsdfr¦   )r§   r©   )r§   rª   r«   )	re   r   rP   r$   Úget_listÚsortedrR   Úget_allÚ
assertTrue©r&   rg   Úheaderss      r   Útest_multi_linezHTTPHeadersTest.test_multi_line3  sß   € ð
÷ �GØ�&ó
ð 	ô ×#Ñ# DÓ)ˆØ×Ñ˜ ™¨+Ô6Ø×Ñ˜×)Ñ)¨&Ó1°K°=ÔAØ×Ñ˜ ™Ð)BÔCØ×Ñ˜×)Ñ)¨%Ó0°9Ð>OÐ2PÔQØ×ÑÜ”4˜Ÿ™Ó)Ó*Ó+ÚSô	
ð
 	�‰˜ 'Ð)Ô*Ø�‰˜ 'Ð)Õ*r   c                 óø   — d}t        j                  |«      }| j                  |d   d«       d}| j                  t        t         j                  |«       d}| j                  t        t         j                  |«       y )NzFoo: bar
	asdfr§   zbar asdfz	 Foo: barzFoo: bar
asdf)r   rP   r$   rƒ   r   r°   s      r   Útest_continuationz!HTTPHeadersTest.test_continuationP  si   € Ø#ˆÜ×#Ñ# DÓ)ˆØ×Ñ˜ ™¨Ô4ð
 ˆØ×Ñœ.¬+×*;Ñ*;¸TÔBð $ˆØ×Ñœ.¬+×*;Ñ*;¸TÕBr   c                 ó  — t        d«      D ]}  }dt        |«      › d�}|dk(  s
|dk\  r=|dk7  r8t        j                  |«      }| j	                  |d   dt        |«      › d	�«       ŒY| j                  t        t        j                  |«       Œ y )
Néÿ   zFoo: barzbaz
é	   é    é   r§   ÚbarÚbaz)ÚrangeÚchrr   rP   r$   rƒ   r   )r&   Úcrg   r±   s       r   Útest_forbidden_ascii_charactersz/HTTPHeadersTest.test_forbidden_ascii_characters`  s‡   € ô �t“ò 	KˆAØœc !›f˜X WÐ-ˆDØ�DŠy˜Q $šY¨1°ª9Ü%×+Ñ+¨DÓ1�Ø× Ñ  ¨¡°3´s¸1³v°h¸cÐ1BÕCà×!Ñ!¤.´+×2CÑ2CÀTÕJñ	Kr   c           	      ó¸  — g d¢}|D ]�  }dD ]–  }	 	 |j                  |«      }d|z   dz   }t        j                  t	        |j                  d«      «      «      }ddt	        |j                  d«      «      z   dz   fg}| j                  |t        |j                  «       «      «       Œ˜ ŒŸ y # t        $ r Y Œ§w xY w# t        $ r t        j                  d	||«       ‚ w xY w)
N)õ   Â…u   â€¨u   â€©)r   Úlatin1s   Cookie: foo=s   barrÂ   ÚCookiezfoo=rº   zfailed while trying %r in %s)r{   ÚUnicodeEncodeErrorr   rP   r   Údecoder$   rR   r®   Ú	Exceptionr   Úwarning)r&   ÚnewlinesÚnewlineÚencodingÚencodedrg   r±   Úexpecteds           r   Útest_unicode_newlinesz%HTTPHeadersTest.test_unicode_newlinesk  sô   € ò
ˆð  ò 	ˆGà.ò �ðð!Ø")§.¡.°Ó":˜ð +¨WÑ4°vÑ=�Dô *×/Ñ/´
¸4¿;¹;ÀxÓ;PÓ0QÓR�Gð %Ø"¤Z°·±¸xÓ0HÓ%IÑIÈEÑQðð �Hð ×$Ñ$ X¬t°G·O±OÓ4EÓ/FÕGñ#ñ	øô .ò !á ð!ûô !ò Ü—O‘OÐ$BÀGÈXÔVØðús)   ‘B(¢BB7Â(	B4Â1B7Â3B4Â4B7Â7"Cc                 ó¾   — g d¢}|D ]T  \  }}t        j                  d|z  «      }|rdg}ndd|z  fg}| j                  |t        |j	                  «       «      «       ŒV y )N))ú T)ú	T)õ   Â F)rÁ   FzTransfer-Encoding: %schunked)úTransfer-EncodingÚchunkedrÒ   z	%schunked)r   rP   r$   rR   r®   )r&   Ú
whitespacer¾   Ústrippedr±   rÌ   s         r   Útest_unicode_whitespacez'HTTPHeadersTest.test_unicode_whitespace–  sn   € ò

ˆ
ð &ò 	@‰KˆAˆxÜ!×'Ñ'Ð(FÈÑ(JÓKˆGÙØ<Ð=‘à0°+À±/ÐBÐC�Ø×Ñ˜X¤t¨G¯O©OÓ,=Ó'>Õ?ñ	@r   c                 ó  — | j                  t        «      5  t        j                  d«       d d d «       t        j                  d«      }| j	                  t        |j                  «       «      g d¢«       y # 1 sw Y   ŒJxY w)Nz&CRLF: crlf
LF: lf
CR: crMore: more
zCRLF: crlf
LF: lf
More: more
))ÚCrlfÚcrlf)ÚLfÚlf)ÚMoreÚmore)rƒ   r   r   rP   r$   r­   r®   ©r&   r±   s     r   Útest_optional_crz HTTPHeadersTest.test_optional_cr©  sk   € à×Ñœ~Ó.ñ 	NÜ×ÑÐLÔM÷	Nô
 ×#Ñ#Ð$JÓKˆØ×ÑÜ�7—?‘?Ó$Ó%Ú>õ	
÷	Nð 	Nús   –A5Á5A>c           	      óÞ  — g d¢}t        «       }|D ]  \  }}|j                  ||«       Œ |j                  «       }t        j                  |«      }t        j                  |«      }||||fD ]4  }| j	                  t        t        |j                  «       «      «      |«       Œ6 |||fD ]D  }| j                  ||«       | j                  |j                  d«      |j                  d«      «       ŒF y )N))ÚArK   )rá   rN   )ÚBr¾   rá   )
r   ÚaddÚcopyÚdeepcopyr$   rR   r­   r®   ÚassertIsNotr¬   )	r&   Ú	all_pairsÚh1ÚkÚvÚh2Úh3Úh4r±   s	            r   Ú	test_copyzHTTPHeadersTest.test_copy¶  sÞ   € Ú8ˆ	Ü‹]ˆØò 	‰DˆAˆqØ�F‰F�1�a�Lð	à�W‰W‹YˆÜ�Y‰Y�r‹]ˆÜ�]‰]˜2ÓˆØ˜B  BÐ'ò 	IˆGð ×ÑœT¤&¨¯©Ó):Ó";Ó<¸iÕHð	Ið ˜B �|ò 	FˆGà×Ñ˜W bÔ)Ø×Ñ˜W×-Ñ-¨cÓ2°B·K±KÀÓ4DÕEñ	Fr   c                 óØ  — t        «       }|j                  dd«       |j                  dd«       |j                  dd«       t        j                  |«      }t        j                  |«      }| j                  t        |j                  «       «      t        |j                  «       «      «       | j                  t        |j                  «       «      t        |j                  «       «      «       y )Nz
Set-Cookieza=bzc=dzContent-Typez	text/html)	r   rã   ÚpickleÚdumpsÚloadsr$   r­   r®   Úitems)r&   r±   ÚpickledÚ	unpickleds       r   Útest_pickle_roundtripz%HTTPHeadersTest.test_pickle_roundtripÇ  s    € Ü“-ˆØ�‰�L %Ô(Ø�‰�L %Ô(Ø�‰�N KÔ0Ü—,‘,˜wÓ'ˆÜ—L‘L Ó)ˆ	Ø×Ñœ §¡Ó 1Ó2´F¸9×;LÑ;LÓ;NÓ4OÔPØ×Ñœ §¡£Ó0´&¸¿¹Ó9JÓ2KÕLr   c                 óT  — t        «       }d|d<   | j                  |j                  dd«      d«       | j                  |d   d«       | j                  |j                  dd«      d«       | j                  |d   d«       | j                  t        |j	                  «       «      ddg«       y )Nrº   r¨   r»   ÚquuxÚxyzzy)r§   rº   )ÚQuuxrù   )r   r$   Ú
setdefaultr­   r®   rÞ   s     r   Útest_setdefaultzHTTPHeadersTest.test_setdefaultÑ  s–   € Ü“-ˆØˆ�‰à×Ñ˜×+Ñ+¨E°5Ó9¸5ÔAØ×Ñ˜ ™¨Ô/à×Ñ˜×+Ñ+¨F°GÓ<¸gÔFØ×Ñ˜ ™¨'Ô2Ø×Ñœ §¡Ó 1Ó2°^ÐEVÐ4WÕXr   c                 óä   — t        «       }|j                  dd«       |j                  dd«       |j                  dd«       t        j                  t        |«      «      }| j	                  ||«       y )Nr§   rK   rN   rL   )r   rã   rP   Ústrr$   )r&   r±   Úheaders2s      r   Útest_stringzHTTPHeadersTest.test_stringÜ  sW   € Ü“-ˆØ�‰�E˜3ÔØ�‰�E˜3ÔØ�‰�E˜3ÔÜ×$Ñ$¤S¨£\Ó2ˆØ×Ñ˜ (Õ+r   c                 ó¦   — g d¢}|D ]<  }t        «       }| j                  t        «      5  |j                  |d«       d d d «       Œ> y # 1 sw Y   ŒIxY w)N)Ú zfoo barzfoo	barzfoo
barzfoo barzfoo z fooõ   Ã©rº   )r   rƒ   r   rã   )r&   Úinvalid_namesÚnamer±   s       r   Útest_invalid_header_namesz)HTTPHeadersTest.test_invalid_header_namesä  sW   € ò	
ˆð "ò 	)ˆDÜ!“mˆGØ×"Ñ"¤>Ó2ñ )Ø—‘˜D %Ô(÷)ð )ñ	)÷)ð )ús   ©AÁA	c                 ój   — d„ } |d«      } |d«      }||z  dkD  r| j                  d|›d|›�«       y y )Nc                 ó°   — t        j                  «       }t        «       }t        | «      D ]  }|j	                  dd«       Œ t        j                  «       |z
  S )NzX-Foorº   )r“   r”   r   r¼   rã   )r•   r–   r±   Úis       r   r˜   z2HTTPHeadersTest.test_linear_performance.<locals>.fõ  sL   € Ü×%Ñ%Ó'ˆEÜ!“mˆGÜ˜1“Xò ,�Ø—‘˜G UÕ+ð,ä×$Ñ$Ó&¨Ñ.Ð.r   r™   é † rš   z.HTTPHeaders.add() does not scale linearly: d1=r›   rœ   rž   s       r   Útest_linear_performancez'HTTPHeadersTest.test_linear_performanceô  sE   € ò	/ñ ˆv‹YˆÙˆw‹ZˆØ�‰7�RŠ<à�I‰IÐGÀBÀ5ÈÈRÈEÐRÕSð r   N)rD   rE   rF   r²   r´   r¿   rÍ   rÖ   rß   rî   rö   rü   r   r  r  r   r   r   r£   r£   2  sF   „ ò+ò:Cò 	Kò)òV@ò&
òFò"Mò	Yò,ò)ó Tr   r£   c                   óJ   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚFormatTimestampTestg*; R]AÔAzSun, 27 Jan 2013 18:43:20 GMTc                 óN   — | j                  t        |«      | j                  «       y ©N)r$   r   ÚEXPECTED)r&   Úvalues     r   ÚcheckzFormatTimestampTest.check	  s   € Ø×ÑÔ)¨%Ó0°$·-±-Õ@r   c                 ó:   — | j                  | j                  «       y r  )r  Ú	TIMESTAMP©r&   s    r   Útest_unix_time_floatz(FormatTimestampTest.test_unix_time_float  s   € Ø�
‰
�4—>‘>Õ"r   c                 óL   — | j                  t        | j                  «      «       y r  )r  Úintr  r  s    r   Útest_unix_time_intz&FormatTimestampTest.test_unix_time_int  s   € Ø�
‰
”3�t—~‘~Ó&Õ'r   c                 ó`   — | j                  t        j                  | j                  «      «       y r  )r  r“   Úgmtimer  r  s    r   Útest_struct_timez$FormatTimestampTest.test_struct_time  s   € Ø�
‰
”4—;‘;˜tŸ~™~Ó.Õ/r   c                 ó¬   — t        t        j                  | j                  «      «      }| j	                  dt        |«      «       | j                  |«       y )Nr·   )Útupler“   r  r  r$   Úlenr  )r&   Útups     r   Útest_time_tuplez#FormatTimestampTest.test_time_tuple  s8   € Ü”D—K‘K §¡Ó/Ó0ˆØ×Ñ˜œC ›HÔ%Ø�
‰
�3�r   c                 óÆ   — | j                  t        j                  j                  | j                  t        j                  j
                  «      j                  d ¬«      «       y )N)Útzinfo)r  ÚdatetimeÚfromtimestampr  ÚtimezoneÚutcre   r  s    r   Útest_utc_naive_datetimez+FormatTimestampTest.test_utc_naive_datetime  sC   € Ø�
‰
Ü×Ñ×+Ñ+Ø—‘¤× 1Ñ 1× 5Ñ 5óç‰g˜TˆgÓ"õ	
r   c                 ó²   — t        «       5  | j                  t        j                  j                  | j                  «      «       d d d «       y # 1 sw Y   y xY wr  )r   r  r$  Úutcfromtimestampr  r  s    r   Ú"test_utc_naive_datetime_deprecatedz6FormatTimestampTest.test_utc_naive_datetime_deprecated!  sB   € ÜÓ!ñ 	KØ�J‰J”x×(Ñ(×9Ñ9¸$¿.¹.ÓIÔJ÷	K÷ 	Kñ 	Kús   ‹9AÁAc                 ó¦   — | j                  t        j                  j                  | j                  t        j                  j
                  «      «       y r  )r  r$  r%  r  r&  r'  r  s    r   Útest_utc_aware_datetimez+FormatTimestampTest.test_utc_aware_datetime%  s4   € Ø�
‰
Ü×Ñ×+Ñ+¨D¯N©N¼H×<MÑ<M×<QÑ<QÓRõ	
r   c           
      óÄ   — | j                  t        j                  j                  | j                  t        j                  t        j
                  d¬«      «      «      «       y )Néüÿÿÿ)Úhours)r  r$  r%  r  r&  Ú	timedeltar  s    r   Útest_other_aware_datetimez-FormatTimestampTest.test_other_aware_datetime*  sA   € à�
‰
Ü×Ñ×+Ñ+Ø—‘¤× 1Ñ 1´(×2DÑ2DÈ2Ô2NÓ Oóõ	
r   N)rD   rE   rF   r  r  r  r  r  r  r!  r(  r+  r-  r2  r   r   r   r  r    s;   „ à!€IØ.€HòAò#ò(ò0òò

òKò
ó

r   r  c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)ÚHTTPServerRequestTestc                 ó   — t        d¬«       y ©Nú/)Úuri)r   r  s    r   Útest_default_constructorz.HTTPServerRequestTest.test_default_constructor6  s   € ô 	˜cÖ"r   c                 ó\   — t        d¬«      }| j                  |j                  t        «       y r6  )r   ÚassertIsInstancerb   Úbytes©r&   Úrequests     r   Útest_body_is_a_byte_stringz0HTTPServerRequestTest.test_body_is_a_byte_string<  s    € Ü#¨Ô,ˆØ×Ñ˜gŸl™l¬EÕ2r   c                 ól   — t        dt        ddgi«      ¬«      }| j                  dt        |«      «       y )Nr7  ÚCanaryz	Coal Mine)r8  r±   )r   r   ÚassertNotInÚreprr=  s     r   Ú"test_repr_does_not_contain_headersz8HTTPServerRequestTest.test_repr_does_not_contain_headers@  s3   € Ü#Øœ[¨(°[°MÐ)BÓCô
ˆð 	×Ñ˜¤4¨£=Õ1r   N)rD   rE   rF   r9  r?  rD  r   r   r   r4  r4  5  s   „ ò#ò3ó2r   r4  c                   ó   — e Zd ZdZdZdZd„ Zy)ÚParseRequestStartLineTestÚGETz/foozHTTP/1.1c                 ób  — dj                  | j                  | j                  | j                  g«      }t	        |«      }| j                  |j                  | j                  «       | j                  |j                  | j                  «       | j                  |j                  | j                  «       y )NrÏ   )	ÚjoinÚMETHODÚPATHÚVERSIONr   r$   ÚmethodÚpathÚversion)r&   Ú
start_lineÚparsed_start_lines      r   Útest_parse_request_start_linez7ParseRequestStartLineTest.test_parse_request_start_lineL  s   € Ø—X‘X˜tŸ{™{¨D¯I©I°t·|±|ÐDÓEˆ
Ü4°ZÓ@ÐØ×ÑÐ*×1Ñ1°4·;±;Ô?Ø×ÑÐ*×/Ñ/°·±Ô;Ø×ÑÐ*×2Ñ2°D·L±LÕAr   N)rD   rE   rF   rJ  rK  rL  rR  r   r   r   rF  rF  G  s   „ Ø€FØ€DØ€GóBr   rF  c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚParseCookieTestc                 ó4  — | j                  t        d«      dddœ«       | j                  t        d«      dddd	d
œ«       | j                  t        d«      ddi«       | j                  t        d«      ddi«       | j                  t        d«      dddddœ«       y)zO
        Test cases copied from Python's Lib/test/test_http_cookies.py
        zchips=ahoy; vienna=fingerÚahoyÚfinger)ÚchipsÚviennaz)keebler="E=mc2; L=\"Loves\"; fudge=\012;"z"E=mc2z	\"Loves\"z\012rp   )ÚkeeblerÚLÚfudger  zkeebler=E=mc2rZ  zE=mc2zkey:term=value:termzkey:termz
value:termza=b; c=[; d=r; f=hrM   ú[ÚrÚh)rJ   r¾   Údr˜   N©r$   r	   r  s    r   Útest_python_cookiesz#ParseCookieTest.test_python_cookiesW  s§   € ð 	×ÑÜÐ4Ó5Ø¨Ñ1ô	
ð 	×ÑÜÐGÓHØ  }¸wÈCÑPô	
ð
 	×Ñœ oÓ6¸ÀGÐ8LÔMà×ÑÜÐ.Ó/°*¸lÐ1Kô	
ð 	×ÑÜÐ-Ó.°cÀÈ#ÐTWÑ0Xõ	
r   c                 ó|   — | j                  t        d«      dddœ«       | j                  t        d«      dddœ«       y )	Nza=b; Domain=example.comrM   zexample.com)rJ   ÚDomainza=b; h=i; a=cr¾   r	  )rJ   r_  ra  r  s    r   Útest_cookie_edgecasesz%ParseCookieTest.test_cookie_edgecasesp  s<   € à×ÑÜÐ2Ó3¸3È-Ñ5Xô	
ð
 	×Ñœ oÓ6¸cÈÑ8LÕMr   c                 ó’  — | j                  dt        d«      j                  «       «       | j                  t        d«      ddddœ«       | j                  t        d«      d	d
dœ«       | j                  t        d«      ddi«       | j                  t        d«      dt	        d«      i«       | j                  t        d«      dddœ«       y)zs
        Cookie strings that go against RFC6265 but browsers will send if set
        via document.cookie.
        Údjango_languagez$abc=def; unnamed; django_language=enza=b; "; c=drM   rp   r`  )rJ   r  r¾   za b c=d e = f; gh=izd e = fr	  )za b cÚghza   b,c<>@:/[]?{}=d  "  =e,f gza   b,c<>@:/[]?{}zd  "  =e,f gu   saint=AndrÃ© BessetteÚsaintu   AndrÃ© Bessettez  =  b  ;  ;  =  ;   c  =  ;  r  )r  r¾   N)rS   r	   Úkeysr$   r   r  s    r   Útest_invalid_cookiesz$ParseCookieTest.test_invalid_cookiesy  sÉ   € ð 	�‰ØÜÐ?Ó@×EÑEÓGô	
ð
 	×Ñœ mÓ4¸CÀSÈsÑ6SÔTà×ÑÜÐ.Ó/¸9ÈCÑ1Pô	
ð 	×ÑÜÐ9Ó:Ø  .Ð1ô	
ð
 	×ÑÜÐ0Ó1Ø”jÐ!2Ó3Ð4ô	
ð 	×ÑÜÐ9Ó:ÀÈ2Ñ<Nõ	
r   c                 ó¬   — g d¢}|D ]?  \  }}| j                  |«      5  t        |«      }| j                  |d   |«       d d d «       ŒA y # 1 sw Y   ŒLxY w)N))za="b=\""úb=")za="b=\\"úb=\)za="b=\="zb==)za="b=\n"zb=n)z
a="b=\042"rm  )z
a="b=\134"rn  )z
a="b=\377"u   b=Ã¿)z
a="b=\400"zb=400)z	a="b=\42"zb=42)za="b=\\042"zb=\042)za="b=\\134"zb=\134)z
a="b=\\\""úb=\")za="b=\\\042"ro  )za="b=\134\""ro  )za="b=\134\042"ro  rJ   )ÚsubTestr	   r$   )r&   ÚcasesrË   Údecodedr¾   s        r   Útest_unquotezParseCookieTest.test_unquote›  sc   € ò
ˆð" !&ò 	2ÑˆG�WØ—‘˜gÓ&ñ 2Ü  Ó)�Ø× Ñ   3¡¨Ô1÷2ð 2ñ	2÷2ð 2ús   ž!A
Á
A	c                 ó   — d}dD ]»  }| j                  |«      5  t        j                  «       }d||z  z   dz   }t        |«      d   }t        j                  «       }| j                  |d d d«       | j                  |dd  d	«       | j                  t	        |«      |d
z   «       | j                  ||z
  dd«       d d d «       Œ½ y # 1 sw Y   ŒÈxY w)Nr
  )ro   z\134za="b=rp   rJ   é   rn  éýÿÿÿz\\\é   é   zTest took too long)rp  r“   r	   r$   r  Ú
assertLess)r&   r•   rË   r–   rg   r  Úends          r   Útest_unquote_largez"ParseCookieTest.test_unquote_large´  sØ   € ð ˆØ%ò 	FˆGØ—‘˜gÓ&ñ 
FÜŸ	™	›�Ø ¨1¡Ñ,¨sÑ2�Ü$ TÓ*¨3Ñ/�Ü—i‘i“k�Ø× Ñ   r¨ ¨FÔ3Ø× Ñ   r s ¨XÔ6Ø× Ñ ¤ U£¨Q°©UÔ3ð —‘  e¡¨QÐ0DÔE÷
Fð 
Fñ	F÷
Fð 
Fús   ™B CÃC	N)rD   rE   rF   rb  re  rk  rs  r{  r   r   r   rT  rT  T  s   „ ò
ò2Nò 
òD2ó2Fr   rT  )*Útornado.httputilr   r   r   r   r   r   r	   r
   r   r   Útornado.escaper   r   Útornado.logr   Útornado.test.utilr   rä   r$  rs   rð   r“   Úurllib.parserO   ÚunittestÚtypingr   r   r   rþ   r<  r   ÚTestCaser   rH   rY   r£   r  r4  rF  rT  r   r   r   ú<module>r„     s  ð÷÷ ÷ ÷ ,Ý Ý 0ã Û Û Û Û Û Û ç $Ñ $ð˜˜d 3¨¨U©Ð#3Ñ4°d¸3ÀÀXÁÐ;NÑ6OÐOÑPó ô/<�H×%Ñ%ô /<ôd'�(×#Ñ#ô 'ôNR˜H×-Ñ-ô NRôbOT�h×'Ñ'ô OTôd,
˜(×+Ñ+ô ,
ôb2˜H×-Ñ-ô 2ô$
B × 1Ñ 1ô 
BôsF�h×'Ñ'õ sFr   