
    6\h                     
   d dl 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mZmZmZ  ej        d          Z e j         ee                                d          d          Z e j         ee                                d          d          Zej        fd	Z e            Z eed
          o ej                    j        dk    Z G d de j                  Z G d de j                  Z G d de j                  Z G d de j                  Z  G d de!          Z" G d de"e j                  Z# G d de"e j                  Z$de	fdZ%dZ& G d d          Z'e(dk    r e j)                     dS dS )    N)support)import_helper)
bigmemtest_1G_4Gzlibcopyzrequires Compress.copy()zrequires Decompress.copy()c                 4   |                      dd          d                              d          }t          |          dk     r|                    d           n|d                                         sd|d<   t	          t          t          |                    S )N-   r   .   0)splitlenappend	isnumerictuplemapint)zlib_versionvs     8/opt/python-3.11.14/usr/lib/python3.11/test/test_zlib.py_zlib_runtime_version_tupler      s     	3""1%++C00A
1vvzz	rU__ "S!    unames390xc                       e Zd Zd ZdS )VersionTestCasec                 r    |                      t          j        d         t          j        d                    d S )Nr   )assertEqualr   ZLIB_RUNTIME_VERSIONZLIB_VERSIONselfs    r   test_library_versionz$VersionTestCase.test_library_versionF   s0     	215t7H7KLLLLLr   N)__name__
__module____qualname__r'    r   r   r    r    D   s(        M M M M Mr   r    c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	ChecksumTestCasec                     |                      t                              d          t                              dd                     |                     t                              dd                     d S )Nr   r      abc    )r"   r   crc32
assertTruer%   s    r   test_crc32startz ChecksumTestCase.test_crc32startQ   sV    C$**S!*<*<===

6:6677777r   c                     |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           d S Nr   r   r   i  )r"   r   r1   r%   s    r   test_crc32emptyz ChecksumTestCase.test_crc32emptyU   st    C++Q///C++Q///C--s33333r   c                     |                      t                              d          t                              dd                     |                     t                              dd                     d S )Nr   r   r/   r0   )r"   r   adler32r2   r%   s    r   test_adler32startz"ChecksumTestCase.test_adler32startZ   sX    c**DLLa,@,@AAAVZ8899999r   c                     |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           d S r5   )r"   r   r8   r%   s    r   test_adler32emptyz"ChecksumTestCase.test_adler32empty^   st    c1--q111c1--q111c3//55555r   c                    |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           |                      t                              dd          d           |                      t                              d          t                              dd                     |                      t                              d          t                              dd                     d S )Ns   penguinr   l    !K r   iCiir"   r   r1   r8   r%   s    r   test_penguinszChecksumTestCase.test_penguinsc   s    J22K@@@J22J???j!44jAAAj!44jAAAJ//J1J1JKKKj11$,,z!2L2LMMMMMr   c                    d}|                      t                              |          d           |                      t                              d          d           |                      t                              ||z             d           |                      t                              d          d           d S )N   abcdefghijklmnop   @u(    spami=Cl    * iOr=   )r&   foos     r   test_crc32_adler32_unsignedz,ChecksumTestCase.test_crc32_adler32_unsignedl   s    !C*555G,,j999c#g..
;;;g..99999r   c                 :   d}d}|                      t          j        |          |           |                      t                              |          |           |                      t          j        d          t                              d                     d S )Nr@   rA   rB   )r"   binasciir1   r   )r&   rC   crcs      r   test_same_as_binascii_crc32z,ChecksumTestCase.test_same_as_binascii_crc32t   s~    !,,c222C#...00$**W2E2EFFFFFr   N)
r(   r)   r*   r3   r6   r9   r;   r>   rD   rH   r+   r   r   r-   r-   O   s        8 8 84 4 4
: : :6 6 6
N N N: : :G G G G Gr   r-   c                   B    e Zd Z eedz   dd          d             ZdS )ChecksumBigBufferTestCaser   r   F)sizememusedry_runc                     dt           dz   z  }|                     t                              |          d           |                     t                              |          d           d S )Ns   nyanr   iM"B>l   a )r   r"   r   r1   r8   )r&   rK   datas      r   test_big_bufferz)ChecksumBigBufferTestCase.test_big_buffer   sZ    #'"D)):666d++Z88888r   N)r(   r)   r*   r   r   rP   r+   r   r   rJ   rJ   }   sC        ZS1WQ6669 9 769 9 9r   rJ   c                   l    e Zd Zd Zd Zd Zd Zd Zej	        d             Z
ej	        d             ZdS )	ExceptionTestCasec                 ^    |                      t          j        t          j        dd           d S )Ns   ERROR
   )assertRaisesr   errorcompressr%   s    r   test_badlevelzExceptionTestCase.test_badlevel   s(     	$*dmXrBBBBBr   c                 t   |                      t          t          j                   |                      t          t          j                   |                      t          t          j                   |                      t          t          j                   dd dddg fD ]}|                      t          t          j        |           |                      t          t          j        |           |                      t          t          j        |           |                      t          t          j        |           d S )N*    abcr+   )rU   	TypeErrorr   r8   r1   rW   
decompress)r&   args     r   test_badargszExceptionTestCase.test_badargs   s    )T\222)TZ000)T]333)T_555b%R0 	? 	?Cis;;;iS999i<<<i#>>>>		? 	?r   c                     |                      t          t          j        dt          j        d           |                      t          t          j        dt          j        t          j        dz              d S )Nr   r   )rU   
ValueErrorr   compressobjDEFLATED	MAX_WBITSr%   s    r   test_badcompressobjz%ExceptionTestCase.test_badcompressobj   sa    *d&64=!LLL* !T]DNQ4F	H 	H 	H 	H 	Hr   c                 R    |                      t          t          j        d           d S )Nr   )rU   rb   r   decompressobjr%   s    r   test_baddecompressobjz'ExceptionTestCase.test_baddecompressobj   s#    *d&8"=====r   c                     |                      t          t                                          j        d           |                      t          t                                          j        d           d S )Nr   r   )rU   rb   r   rh   flushr%   s    r   test_decompressobj_badflushz-ExceptionTestCase.test_decompressobj_badflush   sV    *d&8&8&:&:&@!DDD*d&8&8&:&:&@"EEEEEr   c                 r   |                      t          d          5  t                              ddt          j        dz              d d d            n# 1 swxY w Y   |                      t          d          5  t                                                              dt          j        dz              d d d            n# 1 swxY w Y   |                      t          d          5  t                                                              t          j        dz              d d d            d S # 1 swxY w Y   d S )Nzint too larger      r   )assertRaisesRegexOverflowErrorr   r^   sysmaxsizerh   rk   r%   s    r   test_overflowzExceptionTestCase.test_overflow   s   ##M?CC 	6 	6OOCS[1_555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6##M?CC 	B 	B  ++CqAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B##M?CC 	8 	8  &&s{Q777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s5   *AAA8;B??CC%:D,,D03D0c                     t          j        | t          t                                                               t          j        | t          t                                                               d S N)r   check_disallow_instantiationtyper   rc   rh   r%   s    r   test_disallow_instantiationz-ExceptionTestCase.test_disallow_instantiation   sX     	,T48H8H8J8J3K3KLLL,T48J8J8L8L3M3MNNNNNr   N)r(   r)   r*   rX   r`   rf   ri   rl   r   cpython_onlyrs   rx   r+   r   r   rR   rR      s        C C C	? 	? 	?H H H> > >F F F
 8 8 8 O O O O Or   rR   c                       e Zd Zd Zd ZdS )BaseCompressTestCasec                     d}t          j        |dz            }||t          |          z  dz   z  }	  ||           d }d S # d }w xY w)N   rT   r   )random	randbytesr   )r&   rK   compress_func_1MrO   s        r   check_big_compress_bufferz.BaseCompressTestCase.check_big_compress_buffer   sd     b))ts4yy(1,-	M$ DDD4DKKKKs   A Ac                 8   d|z  }	 t                               |d          }d }n# d }w xY w ||          }	 |                     t          |          |           |                     t          |                    d                    d           d }d S # d }w xY w)N   xr   r   )r   rW   r"   r   strip)r&   rK   decompress_funcrO   
compresseds        r   check_big_decompress_bufferz0BaseCompressTestCase.check_big_decompress_buffer   s    d{	tQ//J DD4DKKKKz**	SYY---SD!1!122A666DDD4DKKKKs   % )AB BN)r(   r)   r*   r   r   r+   r   r   r{   r{      s2              r   r{   c                   .   e Zd Zd Zd Zd Zd Z eedz   d          d             Z	 eedz   d	          d
             Z
 eed          d             Zd Z ej        ej        dk    d           eedz   d          d                         ZdS )CompressTestCasec                     t                               t                    }|                     t                               |          t                     d S ru   )r   rW   HAMLET_SCENEr"   r^   r&   xs     r   test_speechzCompressTestCase.test_speech   s;    MM,''++\:::::r   c                    t                               t          d          }|                     t                               |          t                     |                     t                    5  t                               t          d           d d d            n# 1 swxY w Y   |                     t                               |t           j        t           j                  t                     d S )N   )level)rO   r   )wbitsbufsize)	r   rW   r   r"   r^   rU   r]   re   DEF_BUF_SIZEr   s     r   test_keywordszCompressTestCase.test_keywords   s   MM,aM00++\:::y)) 	6 	6MM|1M555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6/3~151B ) D D &	' 	' 	' 	' 	's   /"BB!$B!c                 V   t           dz  }t                              |          }t          s;|                     t                              t          |                    |           |t          |          fD ]0}|                     t                              |          |           1d S N   )r   r   rW   HW_ACCELERATEDr"   	bytearrayr^   )r&   rO   r   obs       r   test_speech128zCompressTestCase.test_speech128   s    c!MM$  	@T]]9T??;;Q???Yq\\/ 	8 	8BT__R00$7777	8 	8r   c                     t                               t                    }|                     t           j        dt           j        |d d                    d S )NzAError -5 while decompressing data: incomplete or truncated streamr   )r   rW   r   ro   rV   r^   r   s     r   test_incomplete_streamz'CompressTestCase.test_incomplete_stream   sK    MM,''tzOOQssV	% 	% 	% 	% 	%r   r}   r   rK   rL   c                 8    d }|                      ||           d S )Nc                 8    t                               | d          S Nr   )r   rW   )ss    r   <lambda>z;CompressTestCase.test_big_compress_buffer.<locals>.<lambda>   s    T]]1a00 r   )r   )r&   rK   rW   s      r   test_big_compress_bufferz)CompressTestCase.test_big_compress_buffer   s&    00&&tX66666r      c                 F    |                      |t          j                   d S ru   )r   r   r^   )r&   rK   s     r   test_big_decompress_bufferz+CompressTestCase.test_big_decompress_buffer   s     ((t?????r   r   c                     t           dz  }t                              |d          }|                     t                              |d|          |           d S NrT   r   rn   )r   r   rW   r"   r^   )r&   rK   rO   r   s       r   test_large_bufsizez#CompressTestCase.test_large_bufsize  sM     b ]]4++
R>>EEEEEr   c                     t           dz  }t                              |d          }|                     t                              |dt                                |           d S r   )r   r   rW   r"   r^   	CustomInt)r&   rO   r   s      r   test_custom_bufsizez$CompressTestCase.test_custom_bufsize  sO    b ]]4++
REEtLLLLLr           requires 64bit platformd   r   c                     d|z  }	 t                               |d          }|                     t                               |          |           d x}}d S # d x}}w xY wNr   r   )r   rW   r"   r^   )r&   rK   rO   comps       r   test_64bit_compressz$CompressTestCase.test_64bit_compress  sk     d{	==q))DT__T22D999D444$D4s   A	A AN)r(   r)   r*   r   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessrq   rr   r   r+   r   r   r   r      sE       ; ; ;' ' '	8 	8 	8% % % ZS;&q1117 7 217 ZS;&q111@ @ 21@ ZS###F F $#FM M M
 Xu,.GHHZS3Yq)))  *) IH  r   r   c                   <   e Zd Zd Zd Zd Zd Zd7d	Zd
 Zd8dZ	d9dZ
d Zd Zd Zd Zd Zd Z ej         eed          d          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ee d           d!             Z!d" Z"e#d#             Z$e#d$             Z%e&d%             Z'e&d&             Z(d' Z)d( Z* ee+d)z   d*           d+             Z, ee+d)z   d,           d-             Z- ej        e.j/        d.k    d/           ee d0z   d1           d2                         Z0 ej        e.j/        d.k    d/           ee d0z   d*           d3                         Z1 ej        e.j/        d.k    d/           ee d0z   d4           d5                         Z2d6 Z3dS ):CompressObjectTestCasec                    t           dz  }t                              |          }|t          |          fD ]}t                                          }|                    |          }|                                }|                     t          j        |j                   t          s| 	                    ||z   |           ||ft          |          t          |          ffD ]\  }}t          
                                }	|	                    ||z             }
|	                                }| 	                    ||
|z              |                     |	j        t                     |                     |	j        t                     d S r   )r   r   rW   r   rc   rk   rU   rV   r   r"   rh   r^   assertIsInstanceunconsumed_tailbytesunused_data)r&   datasrcdataziprO   cox1x2v1v2dcoy1y2s               r   	test_pairz CompressObjectTestCase.test_pair  s_   $--((i001 	3 	3D!!##BT""BBdj"(333 " 3  b'222Bx)B--2!?@ 	: 	:FB$$&&CR((BBT27+++!!#"5u===!!#/59999	: 	:r   c                 .   d}t           j        }d}d}t           j        }t                               |||||d          }t                               |d          }|                     t                    5  |                    t                     d d d            n# 1 swxY w Y   |                     t                    5  |	                    t                               t                               d d d            n# 1 swxY w Y   |                    t                    |
                                z   }|	                    |t          t                              |
                                z   }	|                     t          |	           d S )	Nr   	   r   )r   methodr   memLevelstrategyzdictr   r   )rO   )
max_length)r   rd   
Z_FILTEREDrc   rh   rU   r]   rW   r   r^   rk   r   r"   )
r&   r   r   r   r   r   r   dor   ys
             r   r   z$CompressObjectTestCase.test_keywords3  s   ?E%+$)'/'/$'  ) ) e377y)) 	+ 	+KK\K***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+y)) 	< 	<MMt}}\::M;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<KK%%

2MM!L(9(9M::RXXZZGq)))))s$   5BB!$B!4DD	Dc                    d}t           j        }d}d}t           j        }t                               |||||          }|                    t
                    }|                                }t                               |          }	|	                    ||z             }
|	                                }| 	                    t
          |
|z              d S )Nr   r   r   )
r   rd   r   rc   rW   r   rk   rh   r^   r"   )r&   r   r   r   r   r   r   r   r   r   r   r   s               r   test_compressoptionsz+CompressObjectTestCase.test_compressoptionsH  s    ?eVUHhGG[[&&XXZZ  ''^^BG$$YY[[rBw/////r   c           	      L   t           dz  }t                                          }g }t          dt	          |          d          D ]5}|                    |                    |||dz                                 6|                    |                                           d                    |          }t          	                                }|
                    d                    |                    }|                                }|                     |||z              d S )Nr   r      r   )r   r   rc   ranger   r   rW   rk   joinrh   r^   r"   )	r&   rO   r   bufsicombufr   r   r   s	            r   test_compressincrementalz/CompressObjectTestCase.test_compressincrementalW  s    c!q#d))S)) 	4 	4AKKD1S5M223333BHHJJ$  ""^^CHHTNN++YY[[rBw'''''r   FNr   @   c           	      "   |pt           }|dz  }t                                          }g }t          dt	          |          |          D ]5}|                    |                    ||||z                                 6|                    |                                           d                    |          }	t          	                    |	          }
| 
                    |
t                     |                     ||
           t                                          }g }t          dt	          |	          |          D ]}|                    |	                    |	|||z                                 |                     d|j        dt	          |j                  z             |                     d|j                   |r(|                    |                                           n0	 |	                    d          }|r|                    |           nn/|                     d|j        dt	          |j                  z             |                     d|j                   |                     |d                    |                     d S )Nr   r   r   z"(A) uct should be b'': not %d longTz"(B) uct should be b'': not %d long)r   r   rc   r   r   r   rW   rk   r   r^   r   r   r"   rh   r   r   )r&   rk   sourcecxdcxrO   r   r   r   r   decombufr   chunks                r   test_decompincz%CompressObjectTestCase.test_decompincf  sq   '<|q#d))R(( 	3 	3AKKD1R4L112222BHHJJ$??6**h...x(((  ""q#f++s++ 	3 	3AKKva#g77888S#"5A'*3+>'?'?@A A A S#/2222 	KK		$$$$s++ KK&&&& 	c1='*3+>'?'?@	A 	A 	A 	co...sxx~~.....r   c                 2    |                      d           d S NT)rk   )r   r%   s    r   test_decompincflushz*CompressObjectTestCase.test_decompincflush  s    $'''''r   c           	         |pt           }|dz  }t                                          }g }t          dt	          |          |          D ]5}|                    |                    ||||z                                 6|                    |                                           d                    |          }| 	                    |t          
                    |          d           t                                          }	g }|}
|
rm|	
                    |
|          }|                     t	          |          |k    dt	          |          |fz             |                    |           |	j        }
|
m|                    |	                                           | 	                    |d                    |          d           d S )Nr   r   r   compressed data failurechunk too big (%d>%d)Wrong data retrievedr   r   rc   r   r   r   rW   rk   r   r"   r^   rh   assertFalser   )r&   r   r   r   rO   r   r   r   r   r   cbr   s               r   test_decompimaxz&CompressObjectTestCase.test_decompimax  s   '<|q#d))R(( 	3 	3AKKD1R4L112222BHHJJ$tv662	4 	4 	4   "" 	%NN2s++ESZZ#-+s5zz3.??A A AKK$B  	% 	CIIKK   sxx~~/EFFFFFr   c           	         t           dz  }t                                          }g }t          dt	          |          d          D ]5}|                    |                    |||dz                                 6|                    |                                           d                    |          }| 	                    |t          
                    |          d           t                                          }g }|}|rdt	          |          dz  z   }	|
                    ||	          }
|                     t	          |
          |	k    dt	          |
          |	fz             |                    |
           |j        }||r(|                    |                                           nh|
rf|
                    d|	          }
|                     t	          |
          |	k    dt	          |
          |	fz             |                    |
           |
f| 	                    |d                    |          d	           d S )
Nr   r   r   r   r   r   rT   r   r   r   )r&   rk   rO   r   r   r   r   r   r   r   r   s              r   test_decompressmaxlenz,CompressObjectTestCase.test_decompressmaxlen  s2   c!q#d))S)) 	4 	4AKKD1S5M223333BHHJJ$tv662	4 	4 	4   "" 	%SWWb[JNN2z22ESZZ*4/3u::j2IIK K KKK$B  	%  	#KK		$$$$ #sJ77  Uj!83s5zz*6MMO O OE"""	  #
 	sxx~~/EFFFFFr   c                 2    |                      d           d S r   )r   r%   s    r   test_decompressmaxlenflushz1CompressObjectTestCase.test_decompressmaxlenflush  s    """.....r   c                     t                                           }|                     t          |j        dd           |                     d|j                   d S )Nr   r   )r   rh   rU   rb   r^   r"   r   )r&   r   s     r   test_maxlenmiscz&CompressObjectTestCase.test_maxlenmisc  sN      ""*cnc2>>>c122222r   c                 D   t           dz  }|                     t          |          t          j                   t                              |d          }t                                          }|                     |                    |t          j
                  |           d S NrT   r   )r   assertGreaterr   r   r   rW   rh   r"   r^   rq   rr   r&   rO   r   r   s       r   test_maxlen_largez(CompressObjectTestCase.test_maxlen_large  s}     b 3t99d&7888]]4++
  ""
CK@@$GGGGGr   c                     t           dz  }t                              |d          }t                                          }|                     |                    |t                                |d d                    d S )NrT   r   r   )r   r   rW   rh   r"   r^   r   r   s       r   test_maxlen_customz)CompressObjectTestCase.test_maxlen_custom  sf    b ]]4++
  ""
IKK@@$tt*MMMMMr   c                     d}t                                           }|                    |d          }||                    |j                  z  }|                     |j        d           d S )Ns
   xKLJ Mr   r   )r   rh   r^   r   r"   )r&   cdatar   ddatas       r   test_clear_unconsumed_tailz1CompressObjectTestCase.test_clear_unconsumed_tail  se     -  ""ua(( 3444,c22222r   c                    g d}t           dk    r|                    d           d |D             }t          dz  }|D ]	}t          d          D ]}	 t                              |          }|                    |d d                   }|                    |          }|                    |dd                    }|                                }	n)#  t          d	                    ||                      xY w| 
                    t                              d	                    ||||	g                    |d
||fz             ~d S )N)
Z_NO_FLUSHZ_SYNC_FLUSHZ_FULL_FLUSHZ_PARTIAL_FLUSH)r   r      r   Z_BLOCKc                 b    g | ],}t          t          |          t          t          |          -S r+   )hasattrr   getattr).0opts     r   
<listcomp>z7CompressObjectTestCase.test_flushes.<locals>.<listcomp>  s@     + + +3tS))+GD#&& + + +r      rT   i  z!Error for flush mode={}, level={}r   z*Decompress failed: flush mode=%i, level=%i)ZLIB_RUNTIME_VERSION_TUPLEr   r   r   r   rc   rW   rk   printformatr"   r^   r   )
r&   sync_optrO   syncr   objabcds
             r   test_flushesz#CompressObjectTestCase.test_flushes  s   ' ' ' &55OOI&&&+ +( + + +a 	 	Dr  	**E33Cd5D5k33A		4))Ad455k33A		AA=!6$..0 0 0  1Qq)1D1D!E!E!% )<@De}(MN N N C	 	s   A=C&C6r  zrequires zlib.Z_SYNC_FLUSHc                 n   dd l }t                              t          j                  }t                                          } |j        d          }|                    |          }|                    t          j                  }|	                    ||z             }| 
                    ||d           d S )Nr   i D  z17K random source doesn't match)r~   r   rc   Z_BEST_COMPRESSIONrh   r   rW   rk   r  r^   r"   )r&   r~   r   r   rO   firstsecondexpandeds           r   test_odd_flushz%CompressObjectTestCase.test_odd_flush  s     	 d566  ""  v	** D!!$+,,>>%&.11 	4)JKKKKKr   c                    t                               t           j                  }|                     |                                           t                                           }|                     |                                d           d S )Nr   )r   rc   r  r2   rk   rh   r"   )r&   r   r   s      r   test_empty_flushz'CompressObjectTestCase.test_empty_flush$  si    
 d566

###  ""c*****r   c                 H   t           }|                                }t          j        |           d                    |          }t
                              |          }|                    |          |                                z   }t
          	                    |          }| 
                    |                    |          |                                z   |           t
          	                                }|                     t
          j        |j        |           d S )Nr   r   )r   r   r~   shuffler   r   rc   rW   rk   rh   r"   r^   rU   rV   )r&   hwordsr   r   cdr   s          r   test_dictionaryz&CompressObjectTestCase.test_dictionary.  s    		uE**[[^^bhhjj(  u --++ciikk91===  ""$*cnb99999r   c                    t                               t                    }t                               t                    }t          dd         }|                    |          |                    t           j                  z   }|                    |dd                    |                    t           j                  z   }|                    |d d                   |                    t           j                  z   }|                     |                    |          |           |                     |                    |          |dd                     |                     |                    |          |d d                    d S )Nr'    i  r   i)	r   rc   r   rh   rW   rk   r  r"   r^   )r&   r   r   pieced0d1d2s          r   test_dictionary_streamingz0CompressObjectTestCase.test_dictionary_streaming>  s9    L11l33T$Y'[["((4+<"="==[[stt%%1B(C(CC[[uu&&$2C)D)DDr**E222r**E#$$K888r**E%4%L99999r   c                    d}|                      t                              |          d           |                     t          j        t          j        |d d                    t                                          }|                    |d d                   }||                                z  }|                      |d           d S )N   xK Es   foo)r"   r   r^   rU   rV   rh   rk   )r&   r   r   r   s       r   !test_decompress_incomplete_streamz8CompressObjectTestCase.test_decompress_incomplete_streamK  s    2++V444$*doq"v>>>   ""NN1SbS6""	SYY[[F#####r   c                    d}t                                           }|                     |j                   |                    |d d                    |                     |j                   |                    |dd                     |                     |j                   |                                 |                     |j                   d S Nr5  r6  )r   rh   r   eofr^   r2   rk   r&   r   r   s      r   test_decompress_eofz*CompressObjectTestCase.test_decompress_eofX  s    2  ""!!!q"v!!!qv   		     r   c                 :   d}t                                           }|                     |j                   |                    |d d                    |                     |j                   |                                 |                     |j                   d S r9  )r   rh   r   r:  r^   rk   r;  s      r   %test_decompress_eof_incomplete_streamz<CompressObjectTestCase.test_decompress_eof_incomplete_streamc  s    2  ""!!!q"v!!!		!!!!!r   c                 T   d}d}t                               |          }||z   }dD ]}ddt          |          t          |          fD ][}t                                           }d}t	          dt          |          |          D ]}	|	t          |          k     r|                     |j        d           |dk    r?||                    ||	|	|z                      z  }|                     |j        d           u||                    |j        ||	|	|z            z   |          z  }||	                                z  }| 
                    |j                   |                     ||           |                     |j        d           |                     |j        |           ]d S )N   abcdefghijklmnopqrstuvwxyzs
   0123456789)r   r.  r   r   r   r   )r   rW   r   rh   r   r"   r   r^   r   rk   r2   r:  )
r&   r   	remainderr   r   maxlenstepr   rO   r   s
             r   test_decompress_unused_dataz2CompressObjectTestCase.test_decompress_unused_datal  s    /!	MM&!!	M 	= 	=F1c!ffc!ff, = =((**q#a&&$// O OA3q66zz((#>>>{{qQX ? ??(()<cBBBB # 3aAHo Ev!O !O O		#(((  v...  !4c:::  )<<<<!=	= 	=r   c                 z   d}t                               t           j         |          }|                    |          |                                z   }t                               t           j         |          }|                    |          |                                z   }|                     ||           d S )Nr@  r   )r   rc   re   rW   rk   rh   r^   r"   )r&   r   r   r   r   uncomps         r   #test_decompress_raw_with_dictionaryz:CompressObjectTestCase.test_decompress_raw_with_dictionary  s    -T^O5AA{{5!!BHHJJ.  e DD%%		3'''''r   c                 6   d}d}t                               |          }t                                           }|                    |d           ~t                               |          }|                     |                                |dd                     d S )Nr@  s   QWERTYUIOPASDFGHJKLZXCVBNMr   )r   rW   rh   r^   r"   rk   )r&   input1input2rO   r   s        r   test_flush_with_freed_inputz2CompressObjectTestCase.test_flush_with_freed_input  s     /.}}V$$  ""tQ}}V$$fQRRj11111r   r   r   c                    t           dz  }t                              |d          }t                                          }|                    |d           |                     |                    |          |dd                     d S r   )r   r   rW   rh   r^   r"   rk   )r&   rK   inputrO   r   s        r   test_flush_large_lengthz.CompressObjectTestCase.test_flush_large_length  st     r!}}UA&&  ""tQ4%)44444r   c                 (   t           dz  }t                              |d          }t                                          }|                    |d           |                     |                    t                                |dd                     d S r   )r   r   rW   rh   r^   r"   rk   r   )r&   rM  rO   r   s       r   test_flush_custom_lengthz/CompressObjectTestCase.test_flush_custom_length  sx    r!}}UA&&  ""tQ9;;//qrr;;;;;r   c                    t           }t          t          t           d                                          d          }d t          j        t          j        fD ]}t                              t          j                  }g }|	                    |
                    |                      ||          }|d d          }|	                    |
                    |                     |	                    |                                           d                    |          }|	                    |
                    |                     |	                    |                                           d                    |          }	|                     t                              |          ||z              |                     t                              |	          ||z              d S )Nasciic                 *    |                                  S ru   r	   r  s    r   r   z:CompressObjectTestCase.test_compresscopy.<locals>.<lambda>      affhh r   r   )r   r   strswapcaser	   deepcopyr   rc   r  r   rW   rk   r   r"   r^   )
r&   data0data1funcc0bufs0c1bufs1s0s1s
             r   test_compresscopyz(CompressObjectTestCase.test_compresscopy  s    c,0099;;WEE&&	4=@ 	> 	>D!!$"9::BELLU++,,,bB!!!HELLU++,,,LL$$$%BLLU++,,,LL$$$%BT__R00u===T__R00u====#	> 	>r   c                 l   t                                           }|                    t                     |                                 |                     t          |j                   |                     t          t          j        |           |                     t          t          j        |           d S ru   )	r   rc   rW   r   rk   rU   rb   r	   rY  )r&   r  s     r   test_badcompresscopyz+CompressObjectTestCase.test_badcompresscopy  s     	

<   				*af---*di333*dmQ77777r   c                    t           }t                              |          }|                     |t                     d t
          j        t
          j        fD ]}t                                          }g }|                    |	                    |d d                               ||          }|d d          }|                    |	                    |dd                               d
                    |          }|                    |	                    |dd                               d
                    |          }	|                     ||	           |                     ||           d S )Nc                 *    |                                  S ru   rT  rU  s    r   r   z<CompressObjectTestCase.test_decompresscopy.<locals>.<lambda>  rV  r       r   )r   r   rW   r   r   r	   rY  rh   r   r^   r   r"   )
r&   rO   r   r\  r0  r^  r1  r`  ra  rb  s
             r   test_decompresscopyz*CompressObjectTestCase.test_decompresscopy  sF    }}T""dE***&&	4=@ 	& 	&D##%%BELLtCRCy11222bB!!!HELLtBCCy11222%BLLtBCCy11222%BR###R%%%%	& 	&r   c                    t                               t                    }t                                           }|                    |           |                                 |                     t          |j                   |                     t          t          j        |           |                     t          t          j	        |           d S ru   )
r   rW   r   rh   r^   rk   rU   rb   r	   rY  )r&   rO   r  s      r   test_baddecompresscopyz-CompressObjectTestCase.test_baddecompresscopy  s     }}\**  	T				*af---*di333*dmQ77777r   c                 .   t          t          j        dz             D ]w}|                     t          t          j        f          5  t          j        t                              t          j	                  |           d d d            n# 1 swxY w Y   xd S r   )
r   pickleHIGHEST_PROTOCOLrU   r]   PicklingErrordumpsr   rc   r  r&   protos     r   test_compresspicklez*CompressObjectTestCase.test_compresspickle  s    62Q677 	O 	OE""Iv/C#DEE O OT--d.EFFNNNO O O O O O O O O O O O O O O	O 	Os   8B		B	B	c                    t          t          j        dz             D ]l}|                     t          t          j        f          5  t          j        t                                          |           d d d            n# 1 swxY w Y   md S r   )	r   rm  rn  rU   r]   ro  rp  r   rh   rq  s     r   test_decompresspicklez,CompressObjectTestCase.test_decompresspickle  s    62Q677 	: 	:E""Iv/C#DEE : :T//115999: : : : : : : : : : : : : : :	: 	:s   -A>>B	B	r}   r   c                 r    t                               d          fd}|                     ||           d S )Nr   c                 X                         |                                           z   S ru   )rW   rk   )r   r  s    r   r   zACompressObjectTestCase.test_big_compress_buffer.<locals>.<lambda>   s    QZZ]]QWWYY6 r   )r   rc   r   )r&   rK   rW   r  s      @r   r   z/CompressObjectTestCase.test_big_compress_buffer  s@    Q6666&&tX66666r   r   c                 p    t                                           fd}|                     ||           d S )Nc                 X                         |                                           z   S ru   )r^   rk   )r   r  s    r   r   zCCompressObjectTestCase.test_big_decompress_buffer.<locals>.<lambda>  s    q||A: r   )r   rh   r   )r&   rK   r^   r  s      @r   r   z1CompressObjectTestCase.test_big_decompress_buffer  s>      ::::
((z:::::r   r   r   r   r   c                 n   d|z  }t                               d          }t                                           }	 |                    |          |                                z   }|                    |          |                                z   }|                     ||           d x}x}}d S # d x}x}}w xY wr   )r   rc   rh   rW   rk   r^   r"   )r&   rK   rO   r   r   r   rF  s          r   r   z*CompressObjectTestCase.test_64bit_compress	  s     d{a  !!	(;;t$$rxxzz1D]]4((288::5FVT***#''D'6DDD4'D'6D''''s   A*B, ,B4c                 Z   d}d|z  }t                               |          |z   }t                                           }	 |                    |          |                                z   }|                     ||j                   |                     ||           d x}x}}d S # d x}x}}w xY w)Nr@   r   )r   rW   rh   r^   rk   r"   r   )r&   rK   rO   unusedr   r   rF  s          r   test_large_unused_dataz-CompressObjectTestCase.test_large_unused_data  s     #}}T""V+!!	&]]4((288::5FVR^444VT***!%%F%TBBB%F%TB%%%%s   AB" "B*r
  c                 T   d|z  }t                                           }	 t                               |d          }|                    |d          |                                z   }|                     ||           |                     |j        d           d x}x}}d S # d x}x}}w xY w)Nr   r   r   r   )r   rh   rW   r^   rk   r"   r   )r&   rK   rO   r   r   rF  s         r   test_large_unconsumed_tailz1CompressObjectTestCase.test_large_unconsumed_tail$  s     d{!!	(==q))D]]4++bhhjj8FVT***R/555#''D'6DDD4'D'6D''''s   A7B B'c                 V   t           dk    }t                              dd          }|                    t                    |                                z   }|                     t                              |d          t                     |r4|                     t                              |d          t                     |                     t                              |d          t                     |                     t          j	        d          5  t                              |d           d d d            n# 1 swxY w Y   t          
                    d	          }|                     |                    |          t                     t          
                    d	          }|                     t          j	        d          5  |                    |           d d d            n# 1 swxY w Y   t                              dd
          }|                    t                    |                                z   }|                     t                              |d
          t                     |                     t                              |d          t                     |r4|                     t                              |d          t                     |                     t                              |d          t                     t          
                    d	          }|                     |                    |          t                     t                              dd          }|                    t                    |                                z   }|                     t                              |d          t                     t          
                    d	          }|                     |                    |          t                     t                              dd          }|                    t                    |                                z   }|                     t                              |d          t                     |                     t                              |d          t                     t          
                    d	          }|                     |                    |          t                     t                              dd          }|                    t                    |                                z   }|                     t                              |d          t                     |                     t                              |d          t                     t          
                    d          }|                     |                    |          t                     dD ]}	|                     |		          5  t          }
t                              t                              t          |		          |		          }|                     |
|           d d d            n# 1 swxY w Y   d S )N)r   r   r   r
  r   rn   )r   r   r   /   zinvalid window size   )r   r   )   i   )r  rn   r  )r  r   rc   rW   r   rk   r"   r^   ro   rV   rh   subTest)r&   supports_wbits_0r   zlib15r   zlib9	deflate15deflate9gzipr   expectedactuals               r   
test_wbitsz!CompressObjectTestCase.test_wbits1  s   5EAR00\**RXXZZ744lCCC 	GT__VQ77FFF99<HHH##DJ0EFF 	( 	(OOFB'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(  w ////>>>  r **##DJ0EFF 	# 	#NN6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# AQ//L))BHHJJ622LAAA33\BBB 	FT__UA66EEE77FFF  v ....===AS11KK--

:	C88,GGG  s ++	22LAAAAR00;;|,,rxxzz9266EEE377FFF  r **11<@@@AW55{{<((288::5w77FFFw77FFF  ))--|<<<" 	3 	3EE** 3 3'MM,eM<<E )     62223 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s7   D==EEG..G25G28AZZ!	$Z!	)FNr   r   )Nr   r   )F)4r(   r)   r*   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r   r  r   r#  r%  r,  r3  r7  r<  r>  rD  rG  rK  r   r   rN  rP  requires_Compress_copyrc  re  requires_Decompress_copyri  rk  rs  ru  r   r   r   rq   rr   r   r}  r  r  r+   r   r   r   r     s       : : :,* * **0 0 0( ( (&/ &/ &/ &/R( ( (G G G G6G G G G@/ / /3 3 3H H HN N N3 3 3  > X~6657 7L L7 7L*+ + +: : : : : :$ $ $	! 	! 	!" " "= = =6( ( (
2 
2 
2 ZS###5 5 $#5< < < > > >. 8 8 8 & & &0 8 8 8O O O
: : : ZS;&q1117 7 217
 ZS;&q111; ; 21;
 Xu,.GHHZS3Yq)))	( 	( *) IH	( Xu,.GHHZS3Yq)))
& 
& *) IH
& Xu,.GHHZS3Yq)))	( 	( *) IH	(63 63 63 63 63r   r   c                     	 |                     |           |                     d          fdt          |          D             S )N
c                 :    g | ]}                               S r+   )choice)r  n	generatorsourcess     r   r  z choose_lines.<locals>.<listcomp>n  s'    ===!IW%%===r   )seedr   r   )r   numberr  r  r  s      `@r   choose_linesr  i  sS    Gtll4  G=====uV}}====r   s  
LAERTES

       O, fear me not.
       I stay too long: but here my father comes.

       Enter POLONIUS

       A double blessing is a double grace,
       Occasion smiles upon a second leave.

LORD POLONIUS

       Yet here, Laertes! aboard, aboard, for shame!
       The wind sits in the shoulder of your sail,
       And you are stay'd for. There; my blessing with thee!
       And these few precepts in thy memory
       See thou character. Give thy thoughts no tongue,
       Nor any unproportioned thought his act.
       Be thou familiar, but by no means vulgar.
       Those friends thou hast, and their adoption tried,
       Grapple them to thy soul with hoops of steel;
       But do not dull thy palm with entertainment
       Of each new-hatch'd, unfledged comrade. Beware
       Of entrance to a quarrel, but being in,
       Bear't that the opposed may beware of thee.
       Give every man thy ear, but few thy voice;
       Take each man's censure, but reserve thy judgment.
       Costly thy habit as thy purse can buy,
       But not express'd in fancy; rich, not gaudy;
       For the apparel oft proclaims the man,
       And they in France of the best rank and station
       Are of a most select and generous chief in that.
       Neither a borrower nor a lender be;
       For loan oft loses both itself and friend,
       And borrowing dulls the edge of husbandry.
       This above all: to thine ownself be true,
       And it must follow, as the night the day,
       Thou canst not then be false to any man.
       Farewell: my blessing season this in thee!

LAERTES

       Most humbly do I take my leave, my lord.

LORD POLONIUS

       The time invites you; go; your servants tend.

LAERTES

       Farewell, Ophelia; and remember well
       What I have said to you.

OPHELIA

       'Tis in my memory lock'd,
       And you yourself shall keep the key of it.

LAERTES

       Farewell.
c                       e Zd Zd ZdS )r   c                     dS )Nr   r+   r%   s    r   	__index__zCustomInt.__index__  s    sr   N)r(   r)   r*   r  r+   r   r   r   r     s#            r   r   __main__)*r   testr   test.supportr   rF   r	   osrm  r~   rq   r   r   r   import_moduler   r   r  rc   r  rh   r  r#   r   r  r   machiner   TestCaser    r-   rJ   rR   objectr{   r   r   r  r   r   r(   mainr+   r   r   <module>r     s2          & & & & & &   				   



 - - - - - - - - - - #}"6**,,  ""F++"$ $  /8.""$$f--$& & 
 .2-F     98:: > W%%G("(***<*GM M M M Mh' M M M*G *G *G *G *Gx( *G *G *G\9 9 9 9 9 1 9 9 90O 0O 0O 0O 0O) 0O 0O 0Of    6   <A A A A A+X-> A A AHL	3 L	3 L	3 L	3 L	3183D L	3 L	3 L	3\ '+f > > > >>B       
 zHMOOOOO r   