a 5êdgè‡ã@s<ddlZddlmZddlZddlZddlZddlZddlZddlm Z m Z m Z e  d¡Z e ee  ¡dƒd¡Ze ee  ¡dƒd¡ZGdd „d ejƒZGd d „d ejƒZGd d „d ejƒZGdd„dejƒZGdd„deƒZGdd„deejƒZGdd„deejƒZdefdd„ZdZGdd„dƒZe dkr8e !¡dS)éN)Úsupport)Ú bigmemtestÚ_1GÚ_4GÚzlibÚcopyzrequires Compress.copy()zrequires Decompress.copy()c@seZdZdd„ZdS)ÚVersionTestCasecCs| tjdtjd¡dS)Nr)Ú assertEqualrÚZLIB_RUNTIME_VERSIONÚ ZLIB_VERSION©Úself©rú*/usr/local/lib/python3.9/test/test_zlib.pyÚtest_library_versionsz$VersionTestCase.test_library_versionN)Ú__name__Ú __module__Ú __qualname__rrrrrrsrc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚChecksumTestCasecCs0| t d¡t dd¡¡| t dd¡¡dS)Nóróabcìÿÿ)r rÚcrc32Ú assertTruer rrrÚtest_crc32start!sz ChecksumTestCase.test_crc32startcCs@| t dd¡d¡| t dd¡d¡| t dd¡d¡dS©Nrréi°)r rrr rrrÚtest_crc32empty%sz ChecksumTestCase.test_crc32emptycCs0| t d¡t dd¡¡| t dd¡¡dS)Nrrrr)r rÚadler32rr rrrÚtest_adler32start*sz"ChecksumTestCase.test_adler32startcCs@| t dd¡d¡| t dd¡d¡| t dd¡d¡dSr)r rrr rrrÚtest_adler32empty.sz"ChecksumTestCase.test_adler32emptycCsˆ| t dd¡d¡| t dd¡d¡| t dd¡d¡| t dd¡d¡| t d¡t dd¡¡| t d¡t dd¡¡dS)Nspenguinrl !ƒKri”ª¶CiöÏ i÷Ö ©r rrrr rrrÚ test_penguins3s zChecksumTestCase.test_penguinscCsTd}| t |¡d¡| t d¡d¡| t ||¡d¡| t d¡d¡dS)Nóabcdefghijklmnopì“@u(óspami=ÿÚCl *i²Or!)r ÚfoorrrÚtest_crc32_adler32_unsigned<s z,ChecksumTestCase.test_crc32_adler32_unsignedcCsHd}d}| t |¡|¡| t |¡|¡| t d¡t d¡¡dS)Nr#r$r%)r Úbinasciirr)r r&ÚcrcrrrÚtest_same_as_binascii_crc32Ds z,ChecksumTestCase.test_same_as_binascii_crc32N) rrrrrrr r"r'r*rrrrrs rc@s&eZdZeedddddd„ƒZdS)ÚChecksumBigBufferTestCaseérF)ÚsizeÚmemuseÚdry_runcCs4dtd}| t |¡d¡| t |¡d¡dS)NsnyanriM"B>lía )rr rrr)r r-ÚdatarrrÚtest_big_bufferOs z)ChecksumBigBufferTestCase.test_big_bufferN)rrrrrr1rrrrr+Msr+c@sBeZdZdd„Zdd„Zdd„Zdd„Zd d „Zej d d „ƒZ d S)ÚExceptionTestCasecCs| tjtjdd¡dS)NsERRORé )Ú assertRaisesrÚerrorÚcompressr rrrÚ test_badlevelXszExceptionTestCase.test_badlevelcCs’| ttj¡| ttj¡| ttj¡| ttj¡dddddgfD]D}| ttj|¡| ttj|¡| ttj|¡| ttj|¡qHdS)Né*ÚÚabcr)r4Ú TypeErrorrrrr6Ú decompress)r ÚargrrrÚ test_badargs^szExceptionTestCase.test_badargscCs6| ttjdtjd¡| ttjdtjtjd¡dS)Nrr)r4Ú ValueErrorrÚ compressobjÚDEFLATEDÚ MAX_WBITSr rrrÚtest_badcompressobjisÿz%ExceptionTestCase.test_badcompressobjcCs| ttjd¡dS)Néÿÿÿÿ)r4r?rÚ decompressobjr rrrÚtest_baddecompressobjpsz'ExceptionTestCase.test_baddecompressobjcCs,| tt ¡jd¡| tt ¡jd¡dS)NrrD)r4r?rrEÚflushr rrrÚtest_decompressobj_badflushtsz-ExceptionTestCase.test_decompressobj_badflushcCsÆ| td¡$t ddtjd¡Wdƒn1s60Y| td¡&t ¡ dtjd¡Wdƒn1sx0Y| td¡$t ¡ tjd¡Wdƒn1s¸0YdS)Nz int too largerér)ÚassertRaisesRegexÚ OverflowErrorrr<ÚsysÚmaxsizerErGr rrrÚ test_overflowys 24zExceptionTestCase.test_overflowN) rrrr7r>rCrFrHrZ cpython_onlyrNrrrrr2Vs r2c@seZdZdd„Zdd„ZdS)ÚBaseCompressTestCasecCsBd}t |d¡}||t|ƒd}z||ƒWd}nd}0dS)Nér3r)ÚrandomÚ randbytesÚlen)r r-Z compress_funcZ_1Mr0rrrÚcheck_big_compress_buffer„s  z.BaseCompressTestCase.check_big_compress_buffercCsfd|}zt |d¡}Wd}nd}0||ƒ}z.| t|ƒ|¡| t| d¡ƒd¡Wd}nd}0dS)Nóxrr)rr6r rSÚstrip)r r-Zdecompress_funcr0Ú compressedrrrÚcheck_big_decompress_buffer‘s z0BaseCompressTestCase.check_big_decompress_bufferN)rrrrTrXrrrrrOƒs rOc@s¢eZdZdd„Zdd„Zdd„Zdd„Zeed d d d d „ƒZ eed dd dd„ƒZ ee dd dd„ƒZ dd„Z e ejdkd¡ee ddd dd„ƒƒZdS)ÚCompressTestCasecCs t t¡}| t |¡t¡dS©N)rr6Ú HAMLET_SCENEr r<©r ÚxrrrÚ test_speech£s zCompressTestCase.test_speechcCsxtjtdd}| t |¡t¡| t¡tjtddWdƒn1sN0Y| tj|tjtjdt¡dS)Né)Úlevel)r0r`)ÚwbitsÚbufsize) rr6r[r r<r4r;rBÚ DEF_BUF_SIZEr\rrrÚ test_keywords§s , þýzCompressTestCase.test_keywordscCsPtd}t |¡}| t t|ƒ¡|¡|t|ƒfD]}| t |¡|¡q4dS©Né€)r[rr6r Ú bytearrayr<)r r0r]ÚobrrrÚtest_speech128±s  zCompressTestCase.test_speech128cCs*t t¡}| tjdtj|dd…¡dS)NzAError -5 while decompressing data: incomplete or truncated streamrD)rr6r[rJr5r<r\rrrÚtest_incomplete_stream¹s  þz'CompressTestCase.test_incomplete_streamrPr_©r-r.cCsdd„}| ||¡dS)NcSs t |d¡S©Nr)rr6©ÚsrrrÚÄrz;CompressTestCase.test_big_compress_buffer..)rT©r r-r6rrrÚtest_big_compress_bufferÂsz)CompressTestCase.test_big_compress_bufferécCs| |tj¡dSrZ)rXrr<)r r-rrrÚtest_big_decompress_bufferÇsz+CompressTestCase.test_big_decompress_bufferrcCs.td}t |d¡}| t |d|¡|¡dS©Nr3rrI)r[rr6r r<)r r-r0rWrrrÚtest_large_bufsizeËs z#CompressTestCase.test_large_bufsizecCs0td}t |d¡}| t |dtƒ¡|¡dSrt)r[rr6r r<Ú CustomInt)r r0rWrrrÚtest_custom_bufsizeÒs z$CompressTestCase.test_custom_bufsizeìúrequires 64bit platformédr,cCsBd|}z*t |d¡}| t |¡|¡Wd}}n d}}0dS©NrUr)rr6r r<)r r-r0ÚcomprrrÚtest_64bit_compress×s  z$CompressTestCase.test_64bit_compressN)rrrr^rdrirjrrrqrsrrurwÚunittestÚ skipUnlessrLrMr}rrrrrY¡s      rYc@söeZdZdd„Zdd„Zdd„Zdd„Zd]d d„Zdd„Zd^dd„Z d_dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd „Ze eed!ƒd"¡d#d$„ƒZd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zee d7d8d9d:„ƒZ!d;d<„Z"e#d=d>„ƒZ$e#d?d@„ƒZ%e&dAdB„ƒZ'e&dCdD„ƒZ(dEdF„Z)dGdH„Z*ee+dIdJd8dKdL„ƒZ,ee+dIdMd8dNdO„ƒZ-e e.j/dPkdQ¡ee dRdSd8dTdU„ƒƒZ0e e.j/dPkdQ¡ee dRdJd8dVdW„ƒƒZ1e e.j/dPkdQ¡ee dRdXd8dYdZ„ƒƒZ2d[d\„Z3d S)`ÚCompressObjectTestCasec CsÎtd}t |¡}|t|ƒfD]>}t ¡}| |¡}| ¡}| tj|j¡| |||¡q||ft|ƒt|ƒffD]R\}}t  ¡} |   ||¡} |  ¡} | || | ¡|  | j t ¡|  | jt ¡qvdSre)r[rr6rgr@rGr4r5r rEr<ÚassertIsInstanceÚunconsumed_tailÚbytesÚ unused_data) r ZdatasrcZdatazipr0ÚcoÚx1Úx2Zv1Zv2ÚdcoÚy1Úy2rrrÚ test_pairäs   z CompressObjectTestCase.test_pairc Csêd}tj}d}d}tj}tj|||||dd}tj|dd}| t¡|jtdWdƒn1sh0Y| t¡"|j t t¡dWdƒn1s¤0Y| t¡|  ¡}|j |t tƒd|  ¡} |  t| ¡dS) Nrréôÿÿÿé r)r`ÚmethodraÚmemLevelÚstrategyÚzdict©rar‘)r0)Ú max_length) rrAÚ Z_FILTEREDr@rEr4r;r6r[r<rGrSr ) r r`rŽrarrr…Údor]Úyrrrrd÷s(û * 0z$CompressObjectTestCase.test_keywordsc Cspd}tj}d}d}tj}t |||||¡}| t¡}| ¡}t |¡} |  ||¡} |  ¡} |  t| | ¡dS)NrrrŒr) rrAr”r@r6r[rGrEr<r ) r r`rŽrarrr…r†r‡rˆr‰rŠrrrÚtest_compressoptions s  z+CompressObjectTestCase.test_compressoptionsc Cs’td}t ¡}g}tdt|ƒdƒD] }| | |||d…¡¡q$| | ¡¡d |¡}t  ¡}|  d |¡¡}| ¡}|  |||¡dS)Nrfrér) r[rr@ÚrangerSÚappendr6rGÚjoinrEr<r ) r r0r…ÚbufsÚiÚcombufrˆr‰rŠrrrÚtest_compressincrementals z/CompressObjectTestCase.test_compressincrementalFNr˜é@c Csf|pt}|d}t ¡}g}tdt|ƒ|ƒD] }| | ||||…¡¡q,| | ¡¡d |¡} t  | ¡} |  | t ¡|  || ¡t  ¡} g}tdt| ƒ|ƒD]H}| |   | |||…¡¡|  d| jdt| jƒ¡|  d| j¡q¤|r| |  ¡¡n$|   d¡} | r(| | ¡nq(q|  d| jdt| jƒ¡|  d| j¡|  |d |¡¡dS)Nrfrrz"(A) uct should be b'': not %d longz"(B) uct should be b'': not %d long)r[rr@r™rSršr6rGr›r<rrƒr rEr‚r„) r rGÚsourceÚcxÚdcxr0r…rœrržZdecombufrˆÚchunkrrrÚtest_decompinc*sD     ÿÿ   ÿÿz%CompressObjectTestCase.test_decompinccCs|jdddS©NT)rG)r¥r rrrÚtest_decompincflushSsz*CompressObjectTestCase.test_decompincflushc Csò|pt}|d}t ¡}g}tdt|ƒ|ƒD] }| | ||||…¡¡q,| | ¡¡d |¡}|  |t  |¡d¡t  ¡} g}|} | rÌ|   | |¡} |  t| ƒ|kdt| ƒ|f¡| | ¡| j } qŠ| |  ¡¡|  |d |¡d¡dS)Nrfrrúcompressed data failureúchunk too big (%d>%d)úWrong data retrieved©r[rr@r™rSršr6rGr›r r<rEÚ assertFalser‚) r r¡r¢r£r0r…rœrržrˆÚcbr¤rrrÚtest_decompimaxVs. ÿ ÿ z&CompressObjectTestCase.test_decompimaxc Cs>td}t ¡}g}tdt|ƒdƒD] }| | |||d…¡¡q$| | ¡¡d |¡}|  |t  |¡d¡t  ¡}g}|}|rÔdt|ƒd} |  || ¡} |  t| ƒ| kdt| ƒ| f¡| | ¡|j }q‚|rè| | ¡¡n>| r&|  d| ¡} |  t| ƒ| kdt| ƒ| f¡| | ¡qè|  |d |¡d ¡dS) Nrfrr˜rr¨rr3r©rªr«) r rGr0r…rœrržrˆr­r“r¤rrrÚtest_decompressmaxlenqs< ÿ ÿ  ÿ z,CompressObjectTestCase.test_decompressmaxlencCs|jdddSr¦)r¯r rrrÚtest_decompressmaxlenflush‘sz1CompressObjectTestCase.test_decompressmaxlenflushcCs,t ¡}| t|jdd¡| d|j¡dS)NrrD)rrEr4r?r<r r‚)r rˆrrrÚtest_maxlenmisc”sz&CompressObjectTestCase.test_maxlenmisccCsHtd}| t|ƒtj¡t |d¡}t ¡}| | |t j ¡|¡dS©Nr3r) r[Z assertGreaterrSrrcr6rEr r<rLrM©r r0rWrˆrrrÚtest_maxlen_largešs  z(CompressObjectTestCase.test_maxlen_largecCs>td}t |d¡}t ¡}| | |tƒ¡|dd…¡dS)Nr3rrz)r[rr6rEr r<rvr³rrrÚtest_maxlen_custom£s z)CompressObjectTestCase.test_maxlen_customcCs:d}t ¡}| |d¡}|| |j¡7}| |jd¡dS)Ns xœKLJMrr)rrEr<r‚r )r ZcdatarˆZddatarrrÚtest_clear_unconsumed_tail©s  z1CompressObjectTestCase.test_clear_unconsumed_tailc Csögd¢}tdd„tj d¡Dƒƒ}|dkr4| d¡dd„|Dƒ}td }|D]¢}td ƒD]”}zDt |¡}| |dd …¡}|  |¡}| |d d…¡} |  ¡} Wnt d   ||¡ƒ‚Yn0|  t  d  ||| | g¡¡|d||f¡~qZqNdS)N)Ú Z_NO_FLUSHÚ Z_SYNC_FLUSHÚ Z_FULL_FLUSHÚZ_PARTIAL_FLUSHcss|]}t|ƒVqdSrZ)Úint)Ú.0ÚvrrrÚ ¸rz6CompressObjectTestCase.test_flushes..Ú.)rrrér_ÚZ_BLOCKcSs g|]}tt|ƒrtt|ƒ‘qSr)ÚhasattrrÚgetattr)r¼ÚoptrrrÚ ½s ÿz7CompressObjectTestCase.test_flushes..ér3i¸ z!Error for flush mode={}, level={}rz*Decompress failed: flush mode=%i, level=%i)Útuplerr Úsplitršr[r™r@r6rGÚprintÚformatr r<r›) r Zsync_optÚverr0Úsyncr`ÚobjÚaÚbÚcÚdrrrÚ test_flushes²s2     ÿÿÿz#CompressObjectTestCase.test_flushesr¸zrequires zlib.Z_SYNC_FLUSHc Csªddl}t tj¡}t ¡}z | ¡}Wn6ty^z | ¡}WntyX|}Yn0Yn0| d¡|  d¡}|  |¡}|  tj ¡}|  ||¡}| ||d¡dS)NrriDz17K random source doesn't match)rQrr@ÚZ_BEST_COMPRESSIONrEZ WichmannHillÚAttributeErrorÚRandomÚseedrRr6rGr¸r<r ) r rQr…rˆÚgenr0ÚfirstÚsecondZexpandedrrrÚtest_odd_flushÒs          z%CompressObjectTestCase.test_odd_flushcCs6t tj¡}| | ¡¡t ¡}| | ¡d¡dS)Nr)rr@rÓrrGrEr )r r…rˆrrrÚtest_empty_flushôs z'CompressObjectTestCase.test_empty_flushcCs‚t}| ¡}t |¡d |¡}tj|d}| |¡| ¡}tj |d}|  |  |¡| ¡|¡t  ¡}|  tj |j |¡dS)Nr©r‘)r[rÈrQÚshuffler›rr@r6rGrEr r<r4r5)r ÚhÚwordsr‘r…ZcdrˆrrrÚtest_dictionaryþs    z&CompressObjectTestCase.test_dictionarycCsÀtjtd}tjtd}tdd…}| |¡| tj¡}| |dd…¡| tj¡}| |dd…¡| tj¡}| | |¡|¡| | |¡|dd…¡| | |¡|dd…¡dS)NrÜéèiÜrziœÿÿÿ) rr@r[rEr6rGr¸r r<)r r…r•ZpieceÚd0Úd1Zd2rrrÚtest_dictionary_streamings   z0CompressObjectTestCase.test_dictionary_streamingcCsfd}| t |¡d¡| tjtj|dd…¡t ¡}| |dd…¡}|| ¡7}| |d¡dS)Nó xœKËÏ‚Esfooéûÿÿÿ)r rr<r4r5rErG)r r]rˆr–rrrÚ!test_decompress_incomplete_streams z8CompressObjectTestCase.test_decompress_incomplete_streamcCsld}t ¡}| |j¡| |dd…¡| |j¡| |dd…¡| |j¡| ¡| |j¡dS©Nråræ)rrEr¬Úeofr<rrG©r r]rˆrrrÚtest_decompress_eof(s   z*CompressObjectTestCase.test_decompress_eofcCsNd}t ¡}| |j¡| |dd…¡| |j¡| ¡| |j¡dSrè)rrEr¬rér<rGrêrrrÚ%test_decompress_eof_incomplete_stream3s  z.r)r[rƒÚstrÚswapcaserÚdeepcopyrr@rÓršr6rGr›r r<) r Zdata0Zdata1ÚfuncZc0Úbufs0Úc1Úbufs1Ús0Ús1rrrÚtest_compresscopy{s     z(CompressObjectTestCase.test_compresscopycCsLt ¡}| t¡| ¡| t|j¡| ttj|¡| ttj|¡dSrZ) rr@r6r[rGr4r?rrý)r rÐrrrÚtest_badcompresscopy“s  z+CompressObjectTestCase.test_badcompresscopyc CsÊt}t |¡}| |t¡dd„tjtjfD]˜}t ¡}g}| |  |dd…¡¡||ƒ}|dd…}| |  |dd…¡¡d  |¡}| |  |dd…¡¡d  |¡} |  || ¡|  ||¡q,dS)NcSs| ¡SrZrùrúrrrro¥rz.é r) r[rr6rrƒrrýrEršr<r›r ) r r0r|rþrârÿrãrrrrrrÚtest_decompresscopys      z*CompressObjectTestCase.test_decompresscopycCsVt t¡}t ¡}| |¡| ¡| t|j¡| ttj|¡| ttj |¡dSrZ) rr6r[rEr<rGr4r?rrý)r r0rÑrrrÚtest_baddecompresscopy¶s  z-CompressObjectTestCase.test_baddecompresscopyc Cs\ttjdƒD]H}| ttjf¡$t t tj ¡|¡Wdƒq1sL0YqdSrl) r™ÚpickleÚHIGHEST_PROTOCOLr4r;Ú PicklingErrorÚdumpsrr@rÓ©r ÚprotorrrÚtest_compresspickleÁsz*CompressObjectTestCase.test_compresspicklec CsXttjdƒD]D}| ttjf¡ t t ¡|¡Wdƒq1sH0YqdSrl) r™r r r4r;r r rrEr rrrÚtest_decompresspickleÆsz,CompressObjectTestCase.test_decompresspicklerPr_cs&t d¡‰‡fdd„}| ||¡dS)Nrcsˆ |¡ˆ ¡SrZ)r6rGrmrúrrroÐrzACompressObjectTestCase.test_big_compress_buffer..)rr@rTrprrúrrqÍs  z/CompressObjectTestCase.test_big_compress_bufferrrcs$t ¡‰‡fdd„}| ||¡dS)Ncsˆ |¡ˆ ¡SrZ)r<rGrm©rÑrrroÖrzCCompressObjectTestCase.test_big_decompress_buffer..)rrErX)r r-r<rrrrsÓs z1CompressObjectTestCase.test_big_decompress_bufferrxryrzr,cCsnd|}t d¡}t ¡}z@| |¡| ¡}| |¡| ¡}| ||¡Wd}}}nd}}}0dSr{)rr@rEr6rGr<r )r r-r0r…r•r|ròrrrr}Ùs z*CompressObjectTestCase.test_64bit_compresscCsrd}d|}t |¡|}t ¡}z<| |¡| ¡}| ||j¡| ||¡Wd}}}nd}}}0dS)Nr#rU)rr6rEr<rGr r„)r r-r0Zunusedr|r•ròrrrÚtest_large_unused_dataæsz-CompressObjectTestCase.test_large_unused_datarÀcCsnd|}t ¡}zJt |d¡}| |d¡| ¡}| ||¡| |jd¡Wd}}}nd}}}0dS)NrUrrr)rrEr6r<rGr r‚)r r-r0r•r|ròrrrÚtest_large_unconsumed_tailôs  z1CompressObjectTestCase.test_large_unconsumed_tailc Cs tj dd¡d d¡}t|ƒdkr0| d¡n|d ¡sDd|d<ttt|ƒƒ}|dk}tj dd d }|  t ¡|  ¡}|  t |d ¡t ¡|r¦|  t |d¡t ¡|  t |d ¡t ¡| tjd ¡t |d ¡Wdƒn1sê0Ytjd d}|  | |¡t ¡tjd d}| tjd ¡| |¡Wdƒn1sN0Ytj ddd }|  t ¡|  ¡}|  t |d¡t ¡|  t |d ¡t ¡|rº|  t |d¡t ¡|  t |d¡t ¡tjdd}|  | |¡t ¡tj ddd }|  t ¡|  ¡}|  t |d¡t ¡tjdd}|  | |¡t ¡tj ddd }|  t ¡|  ¡}|  t |d¡t ¡|  t |d¡t ¡tjdd}|  | |¡t ¡tj ddd }|  t ¡|  ¡} |  t | d¡t ¡|  t | d ¡t ¡t d ¡}|  | | ¡t ¡dS)Nú-rrr¿r,Ú0rD)rrrr_rÀrI)r`raé/zinvalid window sizeé)raré)iñÿÿÿi÷ÿÿÿé)rr rÈrSršÚ isnumericrÇÚmapr»r@r6r[rGr r<rJr5rE) r r½Zsupports_wbits_0r…Zzlib15rˆZzlib9Z deflate15Zdeflate9ÚgziprrrÚ test_wbitss\   *  *    z!CompressObjectTestCase.test_wbits)FNr˜r )Nr˜r )F)4rrrr‹rdr—rŸr¥r§r®r¯r°r±r´rµr¶rÒr~rrÂrrÚrÛràrärçrërìrñrórôrrrör÷Úrequires_Compress_copyrrÚrequires_Decompress_copyrrrrrrqrsrLrMr}rrrrrrrr€âsl )     ÿ                 r€cs4|durˆ |¡| d¡‰‡‡fdd„t|ƒDƒS)z=Return a list of number lines randomly chosen from the sourceNÚ csg|]}ˆ ˆ¡‘qSr)Úchoice)r¼Ún©Ú generatorZsourcesrrrÅ@rz choose_lines..)rÖrÈr™)r¡ZnumberrÖr$rr#rÚ choose_lines;s  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@seZdZdd„ZdS)rvcCsdS)Nrzrr rrrÚ __index__…szCustomInt.__index__N)rrrr&rrrrrv„srvÚ__main__)"r~Útestrr(rr rQrLZ test.supportrrrÚ import_modulerrrÂr@rrErZTestCaserrr+r2ÚobjectrOrYr€r%r[rvrÚmainrrrrÚs@   þ þ . -A]A