Ë
    u™ãj¿  ã                   óž	  — d dl Z d dlmZ d dlZd dl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mZ d dlmZ d dlmZmZmZ d dlZd dlmZ d dlmZmZ d dlmc mc mZ dZe
j@                  d	„ «       Z! e
j@                  d
 e"d
d«      fddgfg¬«      d„ «       Z# G d„ d«      Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)e
jT                  jW                  dg d¢«      d„ «       Z,d„ Z-d„ Z.d„ Z/d„ Z0d„ Z1d„ Z2d„ Z3d „ Z4d!„ Z5e
jT                  jW                  d"d#d$g«      d%„ «       Z6d&„ Z7d'„ Z8d(„ Z9e
jT                  jW                  d)dd*g«      d+„ «       Z:d,„ Z;d-„ Z<d.„ Z=e
jT                  jW                  d/d0d1g«      e
jT                  jW                  d2g d3¢«      d4„ «       «       Z>e
jT                  jW                  d2d5d6g«      d7„ «       Z?e
jT                  jW                  d8d9d:g«      d;„ «       Z@d<„ ZAd=„ ZBe
jT                  jW                  d>g d?¢«      d@„ «       ZCdA„ ZDe
jT                  jW                  dBg dC¢«      dD„ «       ZEdE„ ZFe
jT                  jW                  dFg dG¢«      e
jT                  jW                  dHg dI¢«      dJ„ «       «       ZGe
jT                  jW                  dKg dL¢«      dM„ «       ZHe
jT                  jW                  dNg dO¢«      dP„ «       ZIe
jT                  jW                  dQdRdSg«      dT„ «       ZJdUej–                  fdV„ZLe
jT                  jW                  dWdXdYg dZ¢fdXdYg d[¢fd\d]d^gfd\d]d_gfdXdYg d`¢fdXdYg da¢fdXdYg db¢fdcddg fdedfg fg	g dg¢¬h«      di„ «       ZMdj„ ZNe
jT                  jW                  dkdldmg«      dn„ «       ZOdo„ ZPdp„ ZQe
jT                  jW                  dqdr„ eRdsdfeQeSdtdufgdvdwg¬h«      dx„ «       ZTdy„ ZUdz„ ZVd{„ ZWd|eXfd}„ZYd~d~d~d~dd€d�œZZe
jT                  jW                  d)g d‚¢«      e
jT                  jW                  dƒ e[eZ«      «      e
jT                  jW                  d„d…d†g«      d‡„ «       «       «       Z\dˆ„ Z]d‰„ Z^dŠ„ Z_e
jT                  jÁ                   e«        d‹¬Œ«      d�„ «       Zae
jT                  jW                  dŽd)did�d…d�œd)d‘id)d’id)d“ig«      d”„ «       Zbe
jT                  jW                  d)g d•¢«      d–„ «       Zce
jT                  jW                  d)g d—¢«      d˜„ «       Zdy)™é    N)Údatetime)ÚPath)Úusing_string_dtype)ÚHAS_PYARROW)ÚEmptyDataErrorÚOutOfBoundsDatetimeÚPandas4Warning)ÚSAS7BDATReaderÚ_utf8_translation_tablez9The default value of 'encoding' in read_sas is deprecatedc                 ó   —  | ddd«      S )NÚioÚsasÚdata© ©Údatapaths    úl/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tests/io/sas/test_sas7bdat.pyÚdirpathr   !   s   € á�D˜% Ó(Ð(ó    é   é   é   )Úparamsc                 ó”  — | j                   \  }}t        j                  j                  |d|› d�«      }t	        j
                  |«      }t        ddd«      }t	        j                  |d   d¬«      }||z   j                  d«      |d<   t	        j                  |d	   d¬«      }||z   j                  d«      |d	<   t        |j                  d   «      D ]s  }	|j                  d d …|	f   }
|
j                  t        j                  k(  sŒ4|j                  |	|j                  d d …|	f   j                  t        j                   «      «       Œu ||fS )
NÚtest_sas7bdat_z.csvi¨  r   ÚColumn4ÚD)ÚunitúM8[s]ÚColumn12)ÚparamÚosÚpathÚjoinÚpdÚread_csvr   Úto_timedeltaÚastypeÚrangeÚshapeÚilocÚdtypeÚnpÚint64ÚisetitemÚfloat64)Úrequestr   ÚiÚtest_ixÚfnameÚdfÚepochÚt1Út2ÚkÚcols              r   Údata_test_ixr;   &   s  € à—‘�J€A€wÜ�G‰G�L‰L˜ N°1°#°TÐ":Ó;€EÜ	�‰�UÓ	€BÜ�T˜1˜aÓ €EÜ	�‰˜˜I™¨SÔ	1€BØ˜R‘Z×'Ñ'¨Ó0€B€y�MÜ	�‰˜˜J™¨cÔ	2€BØ˜b‘j×(Ñ(¨Ó1€B€z�NÜ�2—8‘8˜A‘;Óò =ˆØ�g‰g’a˜�d‰mˆØ�9‰9œŸ™Ó Ø�K‰K˜˜2Ÿ7™7¢1 a 4™=×/Ñ/´·
±
Ó;Õ<ð=ð ˆwˆ;Ðr   c            	       ó´  — e Zd Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Zej                  j
                  d„ «       Z	ej                  j
                  ej                  j                  dd«      ej                  j                  d edd	«      «      d
„ «       «       «       Zd„ Zy)ÚTestSAS7BDATc                 ó¾   — |\  }}|D ]S  }t         j                  j                  |d|› d�«      }t        j                  |d¬«      }t        j                  ||«       ŒU y ©NÚtestú	.sas7bdatúutf-8©Úencoding)r"   r#   r$   r%   Úread_sasÚtmÚassert_frame_equal©Úselfr   r;   Úexpectedr3   r9   r4   r5   s           r   Útest_from_filezTestSAS7BDAT.test_from_file9   sX   € à(Ñˆ�'Øò 	0ˆAÜ—G‘G—L‘L ¨D°°°9Ð*=Ó>ˆEÜ—‘˜U¨WÔ5ˆBÜ×!Ñ! " hÕ/ñ	0r   c                 ó˜  — |\  }}|D ]¨  }t         j                  j                  |d|› d�«      }t        |d«      5 }|j	                  «       }d d d «       t        j                  «      }	t        j                  |	ddd¬«      5 }
|
j	                  «       }d d d «       t        j                  |«       Œª y # 1 sw Y   ŒixY w# 1 sw Y   Œ.xY w)Nr@   rA   ÚrbÚsas7bdatTrB   ©ÚformatÚiteratorrD   )r"   r#   r$   ÚopenÚreadr   ÚBytesIOr%   rE   rF   rG   )rI   r   r;   rJ   r3   r9   r4   ÚfÚbytsÚbufÚrdrr5   s               r   Útest_from_bufferzTestSAS7BDAT.test_from_bufferA   s¼   € à(Ñˆ�'Øò 		0ˆAÜ—G‘G—L‘L ¨D°°°9Ð*=Ó>ˆEÜ�e˜TÓ"ð   aØ—v‘v“x�÷ ä—*‘*˜TÓ"ˆCÜ—‘Ø˜J°Àôð  àØ—X‘X“Z�÷ ô ×!Ñ! " hÕ/ñ		0÷ ð  ú÷ ð  ús   »B4ÂC Â4B=	Ã C		c           	      ó¦  — |\  }}|D ]»  }t         j                  j                  |d|› d�«      }t        j                  |dd¬«      5 }|j                  d«      }t        j                  ||j                  dd…d d …f   «       |j                  d«      }t        j                  ||j                  dd	…d d …f   «       d d d «       Œ½ y # 1 sw Y   ŒÈxY w)
Nr@   rA   TrB   ©rQ   rD   r   r   é   é   )	r"   r#   r$   r%   rE   rS   rF   rG   r+   )	rI   r   r;   rJ   r3   r9   r4   rX   r5   s	            r   Útest_from_iteratorzTestSAS7BDAT.test_from_iteratorO   sÇ   € à(Ñˆ�'Øò 	AˆAÜ—G‘G—L‘L ¨D°°°9Ð*=Ó>ˆEÜ—‘˜U¨T¸GÔDð AÈØ—X‘X˜a“[�Ü×%Ñ% b¨(¯-©-¸¸!¸ºQ¸Ñ*?Ô@Ø—X‘X˜a“[�Ü×%Ñ% b¨(¯-©-¸¸!¸ºQ¸Ñ*?Ô@÷	Að Añ	A÷Að Aús   ÁA5CÃC	c           	      óÐ   — |\  }}|D ]\  }t        t        j                  j                  |d|› d�«      «      }t	        j
                  |d¬«      }t        j                  ||«       Œ^ y r?   )r   r"   r#   r$   r%   rE   rF   rG   rH   s           r   Útest_path_pathlibzTestSAS7BDAT.test_path_pathlibZ   s]   € à(Ñˆ�'Øò 	0ˆAÜœŸ™Ÿ™ g°°a°S¸	Ð/BÓCÓDˆEÜ—‘˜U¨WÔ5ˆBÜ×!Ñ! " hÕ/ñ	0r   Ú	chunksize)r\   r]   é
   é   r9   r   é   c                 ó   — t         j                  j                  |d|› d�«      }t        j                  ||d¬«      5 }d}|D ]  }||j
                  d   z  }Œ 	 d d d «       j                  k(  sJ ‚y # 1 sw Y   ŒxY w)Nr@   rA   rB   ©ra   rD   r   )r"   r#   r$   r%   rE   r*   Ú	row_count)rI   r   r9   ra   r4   rX   ÚyÚxs           r   Útest_iterator_loopzTestSAS7BDAT.test_iterator_loopb   s�   € ô
 —‘—‘˜W¨¨Q¨C¨yÐ&9Ó:ˆÜ�[‰[˜¨)¸gÔFð 	 È#ØˆAØò  �Ø�Q—W‘W˜Q‘Z‘‘ñ ÷	 ð �C—M‘MÒ!Ð!Ñ!÷		 ð 	 ús   ½A4Á4A=c                 óž  — t         j                  j                  |d«      }t        j                  |ddd¬«      5 }|j                  |j                  dz   «      }d d d «       t        j                  |dd¬«      5 }|j                  |j                  dz   «      }d d d «       t        j                  «       y # 1 sw Y   Œ_xY w# 1 sw Y   Œ,xY w)Nútest1.sas7bdatrN   TrB   rO   é   r[   )	r"   r#   r$   r%   rE   rS   rg   rF   rG   )rI   r   r4   rX   Úd1Úd2s         r   Útest_iterator_read_too_muchz(TestSAS7BDAT.test_iterator_read_too_muchn   s«   € ä—‘—‘˜WÐ&6Ó7ˆÜ�[‰[Ø˜*¨t¸gô
ð 	.àØ—‘˜#Ÿ-™-¨"Ñ,Ó-ˆB÷	.ô
 �[‰[˜¨¸Ô@ð 	.ÀCØ—‘˜#Ÿ-™-¨"Ñ,Ó-ˆB÷	.ä
×Ñ˜b "Õ%÷	.ð 	.ú÷
	.ð 	.ús   ºB7Á9CÂ7C ÃCN)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚslowrK   rY   r^   r`   Úparametrizer)   rj   rp   r   r   r   r=   r=   8   sÕ   „ Ø‡[�[×Ññ0ó ð0ð ‡[�[×Ññ0ó ð0ð ‡[�[×ÑñAó ðAð ‡[�[×Ññ0ó ð0ð ‡[�[×ÑØ‡[�[×Ñ˜[¨.Ó9Ø‡[�[×Ñ˜S¡%¨¨2£,Ó/ñ"ó 0ó :ó ð"ó
&r   r=   c                 ó0  —  | dddd«      }t        j                  |d ¬«      }t        j                  |d¬«      }|j                  D ]$  }	 ||   j                  j	                  d«      ||<   Œ& t        j                  ||«       t        j                  t        |d d¬«      «      5 }|j                  «       }d d d «       t        |j                  j                  d	¬
«      D ]  \  }}||j	                  «       k(  rŒJ ‚ y # t
        $ r Y ŒÂw xY w# 1 sw Y   ŒXxY w)Nr   r   r   rl   rC   rB   F)rD   Úconvert_header_textT)Ústrict)r%   rE   ÚcolumnsÚstrÚdecodeÚAttributeErrorrF   rG   Ú
contextlibÚclosingr
   rS   Úzip)	r   r4   Údf1Údf2r:   rX   Údf3ri   rh   s	            r   Útest_encoding_optionsr…   {   s  € Ù�T˜5 &Ð*:Ó;€EÜ
�+‰+�e dÔ
+€CÜ
�+‰+�e gÔ
.€CØ�{‰{ò ˆð	Ø˜3‘x—|‘|×*Ñ*¨7Ó3ˆC�ŠHðô
 ×Ñ˜#˜sÔ#ä	×	Ñ	Ü�u tÀÔGó
ð à	Ø�h‰h‹jˆ÷ô �C—K‘K §¡°TÔ:ò ‰ˆˆ1Ø�A—H‘H“J‹Ðˆñøô ò 	Ùð	ú÷ð ús   Á
!C=Â$DÃ=	D	ÄD	ÄDc                 ój  —  | dddd«      }t        j                  t        t        ¬«      5  t	        j
                  |«      }d d d «       d   j                  d   dk(  sJ ‚d	D ]7  }t        j                  d «      5  t	        j
                  ||¬
«       d d d «       Œ9 y # 1 sw Y   Œ]xY w# 1 sw Y   ŒPxY w)Nr   r   r   rl   ©ÚmatchÚColumn2r   s   pear)NÚinferÚcp1252rC   )rF   Úassert_produces_warningr	   Úencoding_depr_msgr%   rE   r+   )r   r4   ÚresultrD   s       r   Ú test_encoding_default_deprecatedr�   Ž   sª   € á�T˜5 &Ð*:Ó;€EÜ	×	#Ñ	#¤NÔ:KÔ	Lñ $Ü—‘˜UÓ#ˆ÷$à�)Ñ×!Ñ! !Ñ$¨Ò/Ð/Ð/à-ò 2ˆÜ×'Ñ'¨Ó-ñ 	2Ü�K‰K˜¨Õ1÷	2ð 	2ñ2÷	$ð $ú÷
	2ð 	2ús   «BÁ:B)ÂB&Â)B2	c                 ó  —  | dddd«      }t        j                  t        t        ¬«      5  t	        j
                  t        |«      «      5 }|j                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nr   r   r   rl   r‡   )rF   rŒ   r	   r�   r   r€   r
   rS   )r   r4   rX   s      r   Ú/test_encoding_default_deprecated_sas7bdatreaderr‘   š   sq   € á�T˜5 &Ð*:Ó;€EÜ	×	#Ñ	#¤NÔ:KÔ	Lñ Ü×Ñ¤¨uÓ 5Ó6ð 	¸#Ø�H‰HŒJ÷	÷ð ÷	ð 	ú÷ð ús#   «A8Á
A,ÁA8Á,A5	Á1A8Á8Bc                 ó˜   —  | dddd«      }t        j                  d «      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   r   r   útest_meta2_page.sas7bdat)rF   rŒ   r%   rE   ©r   r4   s     r   Ú1test_encoding_default_not_deprecated_without_textr•   ¢   sD   € ñ �T˜5 &Ð*DÓE€EÜ	×	#Ñ	# DÓ	)ñ Ü
�‰�EÔ÷÷ ñ ús   ¡A Á A	c                 óÄ  —  | dddd«      }t        |d«      5 }t        |j                  «       «      }d d d «       t        j                  t        |d ¬«      «      5 }d|j                  vsJ ‚	 d d d «       j                  d«      }d	|||d
z    t        j                  t        t        ¬«      5  t        j                  t        j                  |«      d¬«      }d d d «       dj                   v sJ ‚t        j                  t        j                  |«      dd¬«      }d	j#                  d«      dz   |j                   v sJ ‚y # 1 sw Y   �ŒxY w# 1 sw Y   ŒßxY w# 1 sw Y   Œ€xY w)Nr   r   r   údatetime.sas7bdatrM   rC   ó   ss
   DateTimeHis   Äàr   r‡   rN   ©rP   u   Ã„Ã teTimeHirŠ   ©rP   rD   Úcp1251ÚteTimeHi)rR   Ú	bytearrayrS   r   r€   r
   Ú_column_typesÚindexrF   rŒ   r	   r�   r%   rE   r   rT   r{   r}   )r   r4   Úfdr   rX   ÚixrŽ   rJ   s           r   Ú1test_encoding_default_deprecated_header_text_onlyr¢   ª   s:  € ñ �T˜5 &Ð*=Ó>€EÜ	ˆe�TÓ	ð $˜bÜ˜Ÿ™›Ó#ˆ÷$ä	×	Ñ	œN¨5¸4Ô@Ó	Að -ÀSØ˜3×,Ñ,Ñ,Ð,Ñ,÷-ð 
�‰�MÓ	"€BØ#€Dˆˆb�1‰fÐä	×	#Ñ	#¤NÔ:KÔ	Lñ BÜ—‘œRŸZ™Z¨Ó-°jÔAˆ÷Bà˜VŸ^™^Ñ+Ð+Ð+ä�{‰{œ2Ÿ:™: dÓ+°JÈÔQ€HØ×Ñ˜hÓ'¨*Ñ4¸×8HÑ8HÑHÐHÑH÷$ñ $ú÷-ð -ú÷Bð Bús#   ˜D=ÁE
Â,+EÄ=EÅ
EÅEzfname, expected))Úairliner‹   )Úcarsr‹   )ÚproductsalesÚasciic                 óÀ   —  | ddd|› d�«      }t        j                  |dd¬«      5 }|j                  |k(  sJ ‚|j                  |k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr   r   r   rA   rŠ   T©rD   rQ   )r%   rE   Úinferred_encodingrD   )r   r4   rJ   Úreaders       r   Ú*test_encoding_infer_newly_recognized_codesr«   ¿   sh   € ñ �T˜5 &¨U¨G°9Ð*=Ó>€EÜ	�‰�U W°tÔ	<ð +ÀØ×'Ñ'¨8Ò3Ð3Ð3Ø�‰ (Ò*Ð*Ñ*÷+÷ +ñ +ús   §#AÁAc                  ól   — t         j                  j                  «       D ]  } dj                  | «       Œ y )Nr   )ÚconstÚencoding_namesÚvaluesr}   ©Únames    r   Ú$test_encoding_names_are_valid_codecsr²   Ò   s.   € ô ×$Ñ$×+Ñ+Ó-ò ˆØ�
‰
�4Õñr   c                 ó(  —  | dddd«      }t        |d«      5 }t        |j                  «       «      }d d d «       t        j                     dvsJ ‚d|t        j                  <   t        j                  t        j                  |«      dd	d
¬«      5 }|j                  dk(  sJ ‚|j                  «       }d d d «       t        j                  t        j                  |«      dd¬«      }t        j                  |«       y # 1 sw Y   ŒËxY w# 1 sw Y   ŒWxY w)Nr   r   r   rl   rM   )éú   éû   r´   rN   rŠ   T)rP   rD   rQ   zunknown (code=250)úlatin-1rš   )rR   r�   rS   r­   Úencoding_offsetr%   rE   r   rT   r©   rF   rG   )r   r4   r    r   rª   rŽ   rJ   s          r   Ú%test_encoding_infer_unrecognized_coder¸   Ù   sò   € ñ �T˜5 &Ð*:Ó;€EÜ	ˆe�TÓ	ð $˜bÜ˜Ÿ™›Ó#ˆ÷$à”×%Ñ%Ñ&¨jÑ8Ð8Ð8Ø"%€DŒ×	Ñ	Ñä	�‰Ü
�
‰
�4Ó °gÈô
ð à	Ø×'Ñ'Ð+?Ò?Ð?Ð?Ø—‘“ˆ÷	ô
 �{‰{œ2Ÿ:™: dÓ+°JÈÔS€HÜ×Ñ˜& (Õ+÷$ð $ú÷
ð ús   ˜C<Â"DÃ<DÄDc                 óÈ  —  | dddd«      }t        |d«      5 }t        |j                  «       «      }d d d «       j                  d«      }dj	                  «       |||dz    t        j                  t        j                  |«      d	d
¬«      }d|j                  v sJ ‚t        j                  t        j                  |«      d	d ¬«      }d|j                  v sJ ‚y # 1 sw Y   Œ§xY w)Nr   r   r   úmany_columns.sas7bdatrM   s   ecgrtxtõ   Ã©r   rN   rŠ   rš   u   Ã©grtxtu	   ÃƒÂ©grtxt)
rR   r�   rS   rŸ   Úencoder%   rE   r   rT   r{   )r   r4   r    r   r¡   rŽ   s         r   Ú"test_header_text_encoding_contractr½   ë   sÈ   € ñ �T˜5 &Ð*AÓB€EÜ	ˆe�TÓ	ð $˜bÜ˜Ÿ™›Ó#ˆ÷$ð 
�‰�JÓ	€BØŸ™›€Dˆˆb�1‰fÐä�[‰[œŸ™ DÓ)°*ÀwÔO€FØ˜Ÿ™Ñ&Ð&Ð&ô �[‰[œŸ™ DÓ)°*ÀtÔL€FØ˜&Ÿ.™.Ñ(Ð(Ñ(÷$ð $ús   ˜CÃC!c                 ó,  —  | dddd«      }t        |d«      5 }t        |j                  «       «      }d d d «       d|j                  d«      <   t	        j
                  t        j                  |«      dd ¬	«      }d
|j                  v sJ ‚y # 1 sw Y   ŒYxY w)Nr   r   r   rl   rM   é�   s   Column1rN   rš   u   Â�olumn1)	rR   r�   rS   rŸ   r%   rE   r   rT   r{   )r   r4   r    r   rŽ   s        r   Ú.test_header_text_never_raises_without_encodingrÀ   ÿ   sˆ   € ñ �T˜5 &Ð*:Ó;€EÜ	ˆe�TÓ	ð $˜bÜ˜Ÿ™›Ó#ˆ÷$ð $(€Dˆ�‰�JÓ	Ñ ä�[‰[œŸ™ DÓ)°*ÀtÔL€FØ˜6Ÿ>™>Ñ)Ð)Ñ)÷$ð $ús   ˜B
Â
Bc                 ó\  —  | dddd«      }t        j                  |dd¬«      5 }|j                  dk(  sJ ‚|j                  «       }d d d «       t        j                  |dd¬«      5 }|j                  «       }d d d «       t	        j
                  «       y # 1 sw Y   ŒQxY w# 1 sw Y   Œ,xY w)	Nr   r   r   rl   rŠ   Tr¨   r‹   )r%   rE   r©   rS   rF   rG   )r   r4   Ú
df1_readerr‚   Ú
df2_readerrƒ   s         r   Útest_encoding_inferrÄ     s¡   € Ù�T˜5 &Ð*:Ó;€Eä	�‰�U W°tÔ	<ð  À
à×+Ñ+¨xÒ7Ð7Ð7Ø�o‰oÓˆ÷ ô
 
�‰�U X¸Ô	=ð  ÀØ�o‰oÓˆ÷ ô ×Ñ˜#˜sÕ#÷ ð  ú÷
 ð  ús   ¤"BÁ&B"ÂBÂ"B+c                 ó:  —  | dddd«      }t        j                  |d¬«      } | dddd«      }t        j                  |dg¬	«      }g d
¢}||   j                  t        j
                  «      ||<   |d   j                  d«      |d<   t        j                  ||«       y )Nr   r   r   zproductsales.sas7bdatrB   rC   zproductsales.csvÚMONTH©Úparse_dates)ÚACTUALÚPREDICTÚQUARTERÚYEARr   ©r%   rE   r&   r(   r-   r0   rF   rG   )r   r4   r5   Údf0Úvns        r   Útest_productsalesrÐ     s�   € Ù�T˜5 &Ð*AÓB€EÜ	�‰�U WÔ	-€BÙ�T˜5 &Ð*<Ó=€EÜ
�+‰+�e¨'¨Ô
3€CÚ	1€BØ�"‰g�n‰nœRŸZ™ZÓ(€Cˆ�Gà�w‘<×&Ñ& wÓ/€Cˆ�LÜ×Ñ˜"˜cÕ"r   c                 óî   —  | dddd«      }t        j                  |«      } | dddd«      }t        j                  |«      }|j                  t        j
                  «      }t        j                  ||«       y )Nr   r   r   ztest_12659.sas7bdatztest_12659.csvrÍ   ©r   r4   r5   rÎ   s       r   Ú
test_12659rÓ   '  sb   € Ù�T˜5 &Ð*?Ó@€EÜ	�‰�UÓ	€BÙ�T˜5 &Ð*:Ó;€EÜ
�+‰+�eÓ
€CØ
�*‰*”R—Z‘ZÓ
 €CÜ×Ñ˜"˜cÕ"r   c                 óî   —  | dddd«      }t        j                  |«      } | dddd«      }t        j                  |«      }|j                  t        j
                  «      }t        j                  ||«       y )Nr   r   r   zairline.sas7bdatzairline.csvrÍ   rÒ   s       r   Útest_airlinerÕ   0  sa   € Ù�T˜5 &Ð*<Ó=€EÜ	�‰�UÓ	€BÙ�T˜5 &¨-Ó8€EÜ
�+‰+�eÓ
€CØ
�*‰*”R—Z‘ZÓ
 €CÜ×Ñ˜"˜cÕ"r   c                 ój  —  | dddd«      }t        j                  |«      } | dddd«      }t        j                  |g d¢¬«      }|j                  d d …df   j                  j                  d	«      ||j                  d   <   |d
   j                  d«      |d
<   |d   j                  d«      |d<   |d   j                  d«      |d<   |d   j                  d«      |d<   |d   j                  d«      j                  j                  d«      }|j                  d«      |d<   t        j                  ||«       y )Nr   r   r   r—   zdatetime.csv)ÚDate1ÚDate2ÚDateTimeÚ
DateTimeHiÚTaiwrÇ   r\   Úusr×   r   rØ   rÙ   úM8[ms]rÛ   rÚ   zM8[us]Úms)
r%   rE   r&   r+   ÚdtÚroundr{   r(   rF   rG   )r   r4   r5   rÎ   Úress        r   Útest_date_timerâ   9  s  € á�T˜5 &Ð*=Ó>€EÜ	�‰�UÓ	€BÙ�T˜5 &¨.Ó9€EÜ
�+‰+ØÒOô€Cð Ÿ™¢ 1 ™×(Ñ(×.Ñ.¨tÓ4€B€r‡z�z�!�}ÑØ�w‘<×&Ñ& wÓ/€Cˆ�LØ�w‘<×&Ñ& wÓ/€Cˆ�LØ˜*‘o×,Ñ,¨XÓ6€Cˆ
�OØ�f‘+×$Ñ$ WÓ-€Cˆ�Kà
ˆlÑ
×
"Ñ
" 8Ó
,×
/Ñ
/×
5Ñ
5°dÓ
;€CØŸ
™
 8Ó,€CˆÑä×Ñ˜"˜cÕ"r   ÚcolumnÚWGTÚCYLc                 ó¨   —  | dddd«      }t        j                  |d¬«      }||   }||   j                  «       }t        j                  ||d¬«       y )	Nr   r   r   zcars.sas7bdatr¶   rC   T)Úcheck_exact)r%   rE   rà   rF   Úassert_series_equal)r   rã   r4   r5   rŽ   rJ   s         r   Útest_compact_numerical_valuesré   R  sS   € ñ �T˜5 &¨/Ó:€EÜ	�‰�U YÔ	/€Bð
 �‰Z€FØ�&‰z×ÑÓ!€HÜ×Ñ˜6 8¸Ö>r   c                 ó¸   —  | dddd«      }t        j                  |d¬«      } | dddd«      }t        j                  |d¬«      }t        j                  ||«       y )Nr   r   r   rº   r¶   rC   zmany_columns.csv©r%   rE   r&   rF   rG   rÒ   s       r   Útest_many_columnsrì   `  sT   € á�T˜5 &Ð*AÓB€Eä	�‰�U YÔ	/€Bá�T˜5 &Ð*<Ó=€EÜ
�+‰+�e iÔ
0€CÜ×Ñ˜"˜cÕ"r   c                 óh   —  | dddd«      }t        j                  |d¬«      }t        |«      dk(  sJ ‚y )Nr   r   r   úload_log.sas7bdatr¶   rC   i1  ©r%   rE   Úlen©r   r4   r5   s      r   Ú test_inconsistent_number_of_rowsrò   k  s3   € á�T˜5 &Ð*=Ó>€EÜ	�‰�U YÔ	/€BÜˆr‹7�dŠ?Ð‰?r   c                 ó¤   —  | dddd«      }t        j                  t        d¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   r   r   zzero_variables.sas7bdatzNo columns to parse from filer‡   )rt   Úraisesr   r%   rE   r”   s     r   Útest_zero_variablesrõ   r  sC   € á�T˜5 &Ð*CÓD€EÜ	�‰”~Ð-LÔ	Mñ Ü
�‰�EÔ÷÷ ñ ús   §AÁArD   Úutf8c                 óÌ   —  | dddd«      }t        j                  ||¬«      }|€dnd}t        j                  |dd	œg«      j                  d d
 }t	        j
                  ||«       y )Nr   r   r   zzero_rows.sas7bdatrC   ó   aÚag      ð?)Ú
char_fieldÚ	num_fieldr   )r%   rE   Ú	DataFramer+   rF   rG   )r   rD   r4   rŽ   Ú	str_valuerJ   s         r   Útest_zero_rowsrþ   y  sf   € ñ �T˜5 &Ð*>Ó?€EÜ�[‰[˜¨Ô2€FØ Ð(‘¨c€IÜ�|‰|¨IÀCÑHÐIÓJ×OÑOÐPRÐQRÐS€HÜ×Ñ˜& (Õ+r   c                 ó¨   —  | dddd«      }d}t        j                  t        |¬«      5  t        j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   r   r   zcorrupt.sas7bdatz7'SAS7BDATReader' object has no attribute 'column_count'r‡   )rt   rô   r~   r%   rE   )r   r4   Úmsgs      r   Útest_corrupt_readr  ƒ  sI   € ñ �T˜5 &Ð*<Ó=€EØ
C€CÜ	�‰”~¨SÔ	1ñ Ü
�‰�EÔ÷÷ ñ ús   ©AÁAc                 ó‚  —  | dddd«      }t        j                  |d¬«      }t        j                  ddgd	d
gt        j                  t        ddddddd«      t        ddddddd«      gd¬«      ddgt        j                  t        ddd«      t        ddd«      gd¬«      dœg d¢¬«      }t        j                  ||«       y )Nr   r   r   úmax_sas_date.sas7bdatú
iso-8859-1rC   ÚmaxÚnormalçßÿÿÊ`‰MBçžïÿÝÜAé'  é   é   é   é;   éX> iã  é   r   rÝ   ©r,   ç   €qgFAç    €@Õ@r   ©ÚtextÚdt_as_floatÚdt_as_dtÚdate_as_floatÚdate_as_date©r{   )r%   rE   rü   r-   Úarrayr   rF   rG   ©r   r4   r5   rJ   s       r   Útest_max_sas_dater  Œ  sÖ   € ñ
 �T˜5 &Ð*AÓB€EÜ	�‰�U \Ô	2€Bä�|‰|à˜HÐ%Ø,¨nÐ=ÜŸ™ä˜T 2 r¨2¨r°2°vÓ>Ü˜T 1 a¨¨R°°VÓ<ðð ôð (¨Ð1ÜŸH™Hä˜T 2 rÓ*Ü˜T 1 aÓ(ðð ôñ	
ò& Uô)€Hô, ×Ñ˜"˜hÕ'r   c                 óz  — g d¢} | dddd«      }g }t        j                  |dd¬«      D ]%  }|j                  d	¬
«      }|j                  |«       Œ' t        j                  dgdgt        j                  t        ddddddd«      gd¬«      dgt        j                  t        ddd«      gd¬«      dœ|¬«      t        j                  dgdgt        j                  dgd¬«      dgt        j                  dgd¬«      dœ|¬«      g}t        j                  |d   |d   «       t        j                  |d   |d   «       y )Nr  r   r   r   r  r  r   ©rD   ra   T)Údropr  r  r	  r
  r  r  r  r  rÝ   r  r  r   r  r  r  z2019-08-01 23:59:59.999r  z
2019-08-01r   )
r%   rE   Úreset_indexÚappendrü   r-   r  r   rF   rG   )r   Ú	col_orderr4   Úresultsr5   rJ   s         r   Útest_max_sas_date_iteratorr$  ­  sD  € ò
 U€IÙ�T˜5 &Ð*AÓB€EØ€GÜ�k‰k˜%¨,À!ÔDò ˆà�^‰^ ˆ^Ó&ˆØ�‰�rÕðô
 	�‰à˜Ø 0Ð1ÜŸH™HÜ˜d B¨¨B°°B¸Ó?Ð@Èôð #, Ü "§¡¬(°4¸¸RÓ*@Ð)AÈÔ Qñð ô	
ô 	�‰à!˜
Ø .Ð/ÜŸH™HÐ&?Ð%@ÈÔQØ") Ü "§¡¨,¨¸wÔ Gñð ô		
ð€Hô2 ×Ñ˜' !™* h¨q¡kÔ2Ü×Ñ˜' !™* h¨q¡kÕ2r   zfield_offset, what)é Údate)i  r   Úvalue)g      àÃgœu ˆ<ä7þg      àCgœu ˆ<ä7~c                 óx  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  d||«       t        j                  t        d|› d�¬	«      5  t        j                  t        j                  |«      d
d ¬«       d d d «       y # 1 sw Y   ŒuxY w# 1 sw Y   y xY w)Nr   r   r   údates_null.sas7bdatrM   ú<dzOut of bounds SAS z valuer‡   rN   rš   ©rR   r�   rS   ÚstructÚ	pack_intort   rô   r   r%   rE   r   rT   )r   Úfield_offsetÚwhatr'  r    r   s         r   Ú"test_date_too_large_to_cast_raisesr0  Ö  s¦   € ô 
‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ä
×Ñ�T˜4 ¨uÔ5Ü	�‰Ô*Ð5GÈÀvÈVÐ2TÔ	Uñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷$ð $ú÷Hð Hús   –B$Á/,B0Â$B-Â0B9g)QÎ ÈEØBg)QÎ ÈEØÂc                 óp  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  dd|«       t        j                  t        d¬	«      5  t        j                  t        j                  |«      d
d ¬«       d d d «       y # 1 sw Y   ŒqxY w# 1 sw Y   y xY w)Nr   r   r   r)  rM   r*  r%  zOut of bounds SAS date valuer‡   rN   rš   r+  )r   r'  r    r   s       r   Ú.test_date_too_large_to_scale_to_seconds_raisesr2  ç  s�   € ô 
‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ä
×Ñ�T˜4 ¨Ô.Ü	�‰Ô*Ð2PÔ	Qñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷$ð $ú÷Hð Hús   –B Á+,B,Â B)Â,B5zday_count, expected_date)g©Ö®±¤@Õ@z2019-08-01T13:45:37)g      à¿z1959-12-31T12:00:00c                 óž  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  dd|«       t        j                  t        j                  |«      dd ¬	«      }t        j                  t        j                  |d
gd¬«      d¬«      }t        j                  |d   |«       y # 1 sw Y   Œ”xY w)Nr   r   r   r)  rM   r*  r%  rN   rš   ÚNaTr   r  Údatecolr°   )rR   r�   rS   r,  r-  r%   rE   r   rT   ÚSeriesr-   r  rF   rè   )r   Ú	day_countÚexpected_dater    r   r5   rJ   s          r   Ú&test_fractional_date_keeps_time_of_dayr9  õ  s©   € ô 
‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ä
×Ñ�T˜4 ¨	Ô2Ü	�‰”R—Z‘Z Ó%¨jÀ4Ô	H€BÜ�y‰yÜ
�‰�- Ð'¨wÔ7¸iô€Hô ×Ñ˜2˜i™=¨(Õ3÷$ð $ús   –CÃCc                 ó„  —  | dddd«      }t        j                  |d¬«      }t        j                  t        j                  t        ddd	«      t        j                  d
d«      gd¬«      t        j                  t        ddd	dddd«      t        j                  d
d«      gd¬«      dœ«      }t        j                  ||«       y )Nr   r   r   r)  rB   rC   r	  r
  r  r4  Únsr   r  r  r  r  rÝ   )r5  Údatetimecol)	r%   rE   rü   r-   r  r   Ú
datetime64rF   rG   r  s       r   Útest_null_dater>    s²   € Ù�T˜5 &Ð*?Ó@€EÜ	�‰�U WÔ	-€Bä�|‰|ä—x‘xä˜T 2 rÓ*Ü—M‘M %¨Ó.ðð ôô Ÿ8™8ä˜T 2 r¨2¨r°2°vÓ>Ü—M‘M %¨Ó.ðð ôñ	
ó€Hô$ ×Ñ˜"˜hÕ'r   c                 ód   —  | dddd«      }t        j                  |«      }t        |«      dk(  sJ ‚y )Nr   r   r   r“   éè  rï   rñ   s      r   Útest_meta2_pagerA  &  s1   € á�T˜5 &Ð*DÓE€EÜ	�‰�UÓ	€BÜˆr‹7�dŠ?Ð‰?r   z8test_file, override_offset, override_value, expected_msg))útest2.sas7bdaté½× é�   úOut of bounds)rB  rC  r   zunknown control byte)ztest3.sas7bdatišÍ é¸   rE  c                 óJ  — t         | ddd|«      d«      5 }t        |j                  «       «      }ddd«       ||<   t        j                  t
        |¬«      5  t        j                  t        j                  |«      dd¬«       ddd«       y# 1 sw Y   Œ^xY w# 1 sw Y   yxY w)	z1Errors in RLE/RDC decompression should propagate.r   r   r   rM   Nr‡   rN   rš   )
rR   r�   rS   rt   rô   Ú	Exceptionr%   rE   r   rT   )r   Ú	test_fileÚoverride_offsetÚoverride_valueÚexpected_msgr    r   s          r   Útest_rle_rdc_exceptionsrM  -  s�   € ô 
‰h�t˜U F¨IÓ6¸Ó	=ð $ÀÜ˜Ÿ™›Ó#ˆ÷$à*€DˆÑÜ	�‰”y¨Ô	5ñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷$ð $ú÷Hð Hús   –BÁ,BÂBÂB"c                 ó$  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  t        j                  t        «      «      dd ¬«      }|dd	 d
k(  sJ ‚d|dd	 t        j                  t        j                  t        |«      «      dd ¬«      }t        j                  d|j                  d   «      dd  }t        j                  d|dz  «      d   }|j                  d   |k(  sJ ‚y # 1 sw Y   Œ×xY w)Nr   r   r   ztest11.sas7bdatrM   rN   rš   iZØ i\Ø s   � s   � z>d)r   ÚColumn9é   r   r   )r   ÚColumn11)rR   r�   rS   r%   rE   r   rT   Úbytesr,  ÚpackÚlocÚunpack)r   r    r   ÚoriginalrŽ   Úsecond_halfrJ   s          r   Ú#test_rdc_overlapping_back_referencerX  @  só   € ô 
‰h�t˜U FÐ,=Ó>ÀÓ	Eð $ÈÜ˜Ÿ™›Ó#ˆ÷$ä�{‰{œ2Ÿ:™:¤e¨D£kÓ2¸:ÐPTÔU€Hà��vÐ +Ò-Ð-Ð-Ø%€Dˆ�ÐÜ�[‰[œŸ™¤E¨$£KÓ0¸ÈdÔS€Fô
 —+‘+˜d H§L¡L°Ñ$>Ó?ÀÀÐC€KÜ�}‰}˜T ;°¡?Ó3°AÑ6€HØ�:‰:�mÑ$¨Ò0Ð0Ñ0÷$ð $ús   –DÄDzfname, fmt, field_offset, value))útest9.sas7bdatú<Qi0
 ì   ÿÿÿÿ )rY  rZ  i8
 ì        )rY  rZ  i�  l   D   )r“   z<Ii  l   ÿÿ c                 ón  — t         | ddd|«      d«      5 }t        |j                  «       «      }d d d «       t        j                  |||«       t        j                  t        d¬«      5  t        j                  t        j                  |«      d¬«       d d d «       y # 1 sw Y   ŒpxY w# 1 sw Y   y xY w)	Nr   r   r   rM   zcached page is too smallr‡   rN   r™   ©rR   r�   rS   r,  r-  rt   rô   Ú
ValueErrorr%   rE   r   rT   )r   r4   Úfmtr.  r'  r    r   s          r   Útest_corrupt_subheader_pointerra  W  s–   € ô* 
‰h�t˜U F¨EÓ2°DÓ	9ð $¸RÜ˜Ÿ™›Ó#ˆ÷$ä
×Ñ�S˜$ ¨eÔ4ô 
�‰”zÐ)CÔ	Dñ 9Ü
�‰”B—J‘J˜tÓ$¨ZÕ8÷9ð 9÷$ð $ú÷
9ð 9ús   –BÁ++B+ÂB(Â+B4c                 óL  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       ddd d	}t        j                  t
        |¬
«      5  t        j                  t        j                  |«      d¬«       d d d «       y # 1 sw Y   Œ_xY w# 1 sw Y   y xY w)Nr   r   r   rl   rM   s   Þ­¾ïi Ú i$Ú z3Unknown subheader signature b'\\xde\\xad\\xbe\\xef'r‡   rN   r™   )
rR   r�   rS   rt   rô   r_  r%   rE   r   rT   )r   r    r   r   s       r   Ú test_unknown_subheader_signaturerc  u  s‘   € ô 
‰h�t˜U FÐ,<Ó=¸tÓ	Dð $ÈÜ˜Ÿ™›Ó#ˆ÷$à-€Dˆ�ÐØ
@€CÜ	�‰”z¨Ô	-ñ 9Ü
�‰”B—J‘J˜tÓ$¨ZÕ8÷9ð 9÷	$ð $ú÷9ð 9ús   –BÁ+BÂBÂB#z,test_file, offset_field, int_len, row_length))rB  itî rP  é)  )rl   i|î rP  é0  )útest7.sas7bdaté\ê r  re  Ú	overshoot)r   r  é   c                 ó€  — t         | ddd|«      d«      5 }t        |j                  «       «      }d d d «       ||z   dz
  }|j                  |d«      |||z    t	        j
                  t        d¬«      5  t        j                  t        j                  |«      d	d ¬
«       d d d «       y # 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nr   r   r   rM   r  Úlittleúthe file is corruptr‡   rN   rš   ©rR   r�   rS   Úto_bytesrt   rô   r_  r%   rE   r   rT   )	r   rI  Úoffset_fieldÚint_lenÚ
row_lengthrh  r    r   Ú
bad_offsets	            r   Ú"test_column_offset_past_row_raisesrs  �  s´   € ô  
‰h�t˜U F¨IÓ6¸Ó	=ð $ÀÜ˜Ÿ™›Ó#ˆ÷$à˜iÑ'¨!Ñ+€JØ2<×2EÑ2EÀgÈxÓ2X€Dˆ˜ wÑ.Ð/Ü	�‰”zÐ)>Ô	?ñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷	$ð $ú÷Hð Hús   –B(Á3,B4Â(B1Â4B=z7test_file, row_length_field_offset, int_len, row_length))rl   é4þ rP  re  )rB  rt  rP  rd  )rf  i ý r  re  c                 ót  — t         | ddd|«      d«      5 }t        |j                  «       «      }d d d «       d}|j                  |d«      |||z    t	        j
                  t        d¬«      5  t        j                  t        j                  |«      d	d ¬
«       d d d «       y # 1 sw Y   ŒsxY w# 1 sw Y   y xY w)Nr   r   r   rM   iðÿÿrk  z(row_length \(\d+\) exceeds the page sizer‡   rN   rš   rm  )r   rI  Úrow_length_field_offsetrp  rq  r    r   Ú	bad_values           r   Ú(test_row_length_exceeds_page_size_raisesrx  ™  s±   € ô" 
‰h�t˜U F¨IÓ6¸Ó	=ð $ÀÜ˜Ÿ™›Ó#ˆ÷$à€Ià×Ñ˜7 HÓ-ð 	Ð	 Ð#:¸WÑ#DÐEô 
�‰”zÐ)TÔ	Uñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷$ð $ú÷Hð Hús   –B"Á-,B.Â"B+Â.B7Ú
bad_length)é	   r   ri  c                 ój  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       |j                  dd«      dd	 t	        j
                  t        d
¬«      5  t        j                  t        j                  |«      dd ¬«       d d d «       y # 1 sw Y   ŒnxY w# 1 sw Y   y xY w)Nr   r   r   rl   rM   rP  rk  i€î i„î rl  r‡   rN   rš   rm  )r   ry  r    r   s       r   Ú.test_numeric_column_longer_than_8_bytes_raisesr|  ´  s£   € ô 
‰h�t˜U FÐ,<Ó=¸tÓ	Dð $ÈÜ˜Ÿ™›Ó#ˆ÷$ð %×-Ñ-¨a°Ó:€Dˆ�ÐÜ	�‰”zÐ)>Ô	?ñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷	$ð $ú÷Hð Húó   –BÁ(,B)ÂB&Â)B2rr  l   ÿÿÿÿ r[  c                 ój  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       |j                  dd«      dd	 t	        j
                  t        d
¬«      5  t        j                  t        j                  |«      dd ¬«       d d d «       y # 1 sw Y   ŒnxY w# 1 sw Y   y xY w)Nr   r   r   rf  rM   r  rk  rg  idê rl  r‡   rN   rš   rm  )r   rr  r    r   s       r   Ú(test_column_offset_near_int64_max_raisesr  À  s¡   € ô 
‰h�t˜U FÐ,<Ó=¸tÓ	Dð $ÈÜ˜Ÿ™›Ó#ˆ÷$à$×-Ñ-¨a°Ó:€Dˆ�ÐÜ	�‰”zÐ)>Ô	?ñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷Hð H÷$ð $ú÷Hð Húr}  é   c                 óö  — dx}}t         | dddd«      d«      5 }t        |j                  «       «      }	ddd«       |dz   }
t        j                  d		|
d
z   |«       t        j                  d	|	|
dz   d«       t
        j                  }|t
        j                  z   }t        |«      }t        j                  d||t
        j                  dd«       d}t        j                  d||||«       t        |	||z   d d| «      }|D ]  \  }}t        j                  d	|||«       Œ |||||z    t        |«      }t        j                  d|||dd«       t        |	«      t        |«      z   t        |«      z   S # 1 sw Y   �Œ<xY w)a  
    dates_null.sas7bdat, with a metadata page inserted after its data rows.

    dates_null is a 64-bit uncompressed file: a 65536-byte header followed by
    one 65536-byte mix page holding two 16-byte rows. The copy built here claims
    more rows than that page holds and continues with a metadata page carrying a
    patched copy of the subheader at ``sub_offset``, so that the patch is
    processed only once the parser has read past the mix page, and then with a
    data page for the rows it still owes.
    é   r   r   r   r)  rM   NéØü  ú<qé0   éx   r   ú<HHHr   r   ri  z<qqrP  )
rR   r�   rS   r,  r-  r­   Úpage_bit_offset_x64Úsubheader_pointers_offsetÚpage_meta_typerR  )r   Ú
sub_offsetÚ
sub_lengthÚpatchesÚ
total_rowsÚtail_page_typeÚpage_lengthÚheader_lengthr    r   ÚrowsizeÚ
bit_offsetÚpointersÚ	meta_pageÚsub_positionÚ	subheaderr.  r'  Ú	data_pages                      r   Ú#_dates_null_with_late_metadata_pager™  Ë  s�  € ð$ #(Ð'€K�-Ü	‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ð ˜eÑ#€Gô ×Ñ�T˜4 ¨5¡°*Ô=Ü
×Ñ�T˜4 ¨6Ñ!1°1Ô5ô ×*Ñ*€JØœE×;Ñ;Ñ;€Hä˜+Ó&€IÜ
×Ñ�V˜Y¨
´E×4HÑ4HÈ!ÈQÔOØ€Lä
×Ñ�U˜I x°¸zÔJÜ˜$˜}¨zÑ9Ð;Ð<¸[¸jÐIÓJ€IØ&ò ?Ñˆ�eÜ×Ñ˜˜y¨,¸Õ>ð?à:C€Iˆl˜\¨JÑ6Ð7ä˜+Ó&€IÜ
×Ñ�V˜Y¨
°NÀAÀqÔIä�‹;œ˜yÓ)Ñ)¬E°)Ó,<Ñ<Ð<÷9$ñ $ús   šE.Å.E8zsub_offset, sub_length, patchesrƒ  é(  ))é(   r  ©r…  r€  ©r†  r   ))r›  ri  rœ  r�  éÀü  é   )r  ri  ©r  r   )©r›  r   )r…  r
  r�  )r¡  )r…  r   r�  )r¡  rœ  )r†  rP  iØù  é,   iœù  é<   )	zrow_length shrunkzrow_length grownzcount grownzcount shrunkzrow_count grownzrow_count shrunkzmix page row countzcolumn names repeatedzcolumn attributes repeated)Úidsc                 ó"  — t        | |||«      }t        j                  t        j                  |«      ddd ¬«      5 }t        j                  t        d¬«      5  |j                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NrN   r   ©rP   ra   rD   úchanges the layout it declaredr‡   )	r™  r%   rE   r   rT   rt   rô   r_  rS   )r   r‹  rŒ  r�  r   rª   s         r   Ú.test_late_metadata_page_changing_layout_raisesr¨  ý  s‚   € ô^ /Ø�*˜j¨'ó€Dô 
�‰Ü
�
‰
�4Ó °qÀ4ô
ð à	ä�]‰]œ:Ð-MÔNñ 	Ø�K‰KŒM÷	÷	ð ÷	ð 	ú÷	ð ús#   »BÁA9Á(BÁ9B	Á>BÂBc                 óü   — t        | ddg d¢dt        j                  ¬«      }t        j                  t
        d¬«      5  t        j                  t        j                  |«      dd ¬	«       d d d «       y # 1 sw Y   y xY w)
Nrƒ  rš  )r¡  )r…  éˆ  )r†  i   rª  )rŽ  r�  r§  r‡   rN   rš   )
r™  r­   Úpage_mix_typert   rô   r_  r%   rE   r   rT   )r   r   s     r   Ú0test_late_metadata_page_reached_mid_chunk_raisesr¬  7  si   € ô /ØØØÚ4ØÜ×*Ñ*ô€Dô 
�‰”zÐ)IÔ	Jñ HÜ
�‰”B—J‘J˜tÓ$¨ZÀ$ÕG÷H÷ Hñ Hús   ½,A2Á2A;rg   i  r\  c                 ó¾  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  dd|«       t        j                  d|d|«       t        j                  t        d	¬
«      5  t        j                  t        j                  |«      ddd ¬«      j                  «        d d d «       y # 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)Nr   r   r   r)  rM   r„  éý éPý z!does not fit in a 65536-byte pager‡   rN   r   r¦  r^  )r   rg   r    r   s       r   Ú/test_mix_page_row_count_larger_than_page_raisesr°  I  s»   € ô
 
‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ô
 ×Ñ�T˜4Ð!6¸	ÔBÜ
×Ñ�T˜4Ð!7¸ÔCÜ	�‰”zÐ)LÔ	Mñ Ü
�‰Ü�J‰J�tÓ Z¸1Àtô	
ç
‰$Œ&÷ð ÷$ð $ú÷ð ús   –CÂ;CÃCÃCc                 ó   — t        | ddg d¢«      }t        j                  t        j                  |«      ddd ¬«      5 }t        |j                  «       «      dk(  sJ ‚t        |j                  «       «      dk(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nrƒ  rš  )r¡  rœ  r�  rN   r   r¦  )r™  r%   rE   r   rT   rð   rS   )r   r   rª   s      r   Ú.test_late_metadata_page_repeating_layout_readsr²  [  s‚   € ô
 /Ø�%˜ÒDó€Dô 
�‰Ü
�
‰
�4Ó °qÀ4ô
ð 'à	Ü�6—;‘;“=Ó! QÒ&Ð&Ð&Ü�6—;‘;“=Ó! QÒ&Ð&Ñ&÷	'÷ 'ñ 'ús   ½=BÂBc                 ó˜  — t         | dddd«      d«      5 }t        |j                  «       «      }d d d «       t        j                  ddd«       t        j                  d|d	d
«       t        d«      }t        j                  d|t
        j                  t
        j                  dd«       t        |«      t        |«      z   S # 1 sw Y   Œ‘xY w)Nr   r   r   r)  rM   r„  r®  i † r¯  r   r‚  r‡  i`ê  r   )	rR   r�   rS   r,  r-  r­   rˆ  Úpage_data_typerR  )r   r    r   r˜  s       r   Ú"_dates_null_with_overrun_data_pagerµ  j  s³   € ô 
‰h�t˜U FÐ,AÓBÀDÓ	Ið $ÈRÜ˜Ÿ™›Ó#ˆ÷$ä
×Ñ�T˜4Ð!6¸Ô?Ü
×Ñ�T˜4Ð!7¸Ô;Ü˜%Ó €IÜ
×ÑØ�	œ5×4Ñ4´e×6JÑ6JÈEÐSTôô �‹;œ˜yÓ)Ñ)Ð)÷$ð $ús   –C Ã C	z!build, expected, match, chunksizec                 ó    — t        | dddg«      S )Nrž  rŸ  r   )r™  r   s    r   ú<lambda>r·  |  s   € Ô@Ø˜%  f Xó€ r   r§  zOut of bounds readr@  zlayout redefinedzpage overrunc                 óv  — |dz  }|j                   || «      «       t        j                  |d|d ¬«      }t        j                  ||¬«      5  |j                  «       j                  s	 |j                  «       j                  sŒd d d «       |j                  j                  j                  sJ ‚y # 1 sw Y   Œ,xY w)Nzrejected.sas7bdatrN   r¦  r‡   )
Úwrite_bytesr%   rE   rt   rô   rS   ÚemptyÚhandlesÚhandleÚclosed)r   Útmp_pathÚbuildrJ   rˆ   ra   r#   rª   s           r   Ú,test_chunked_read_closes_the_file_it_rejectsrÀ  x  s—   € ð, Ð)Ñ)€DØ×Ñ‘U˜8“_Ô%Ü�[‰[˜ j¸IÐPTÔU€FÜ	�‰�x uÔ	-ñ Ø—+‘+“-×%Ò%Øð —+‘+“-×%Ó%÷ð �>‰>× Ñ ×'Ò'Ð'Ñ'÷ð ús   Á6B/Â/B8c                 ó²   —  | dddd«      }t        j                  |ddd ¬«      }t        j                  |j                  j
                  «      }~ |«       �J ‚y )Nr   r   r   rl   rN   r   r¦  )r%   rE   ÚweakrefÚrefr»  r¼  )r   r4   rª   r¼  s       r   Ú#test_dropped_reader_closes_the_filerÄ  —  sR   € ñ �T˜5 &Ð*:Ó;€EÜ�[‰[˜ z¸QÈÔN€FÜ�[‰[˜Ÿ™×.Ñ.Ó/€FØÙ‹8ÐÐÑr   c                 ó¸   —  | dddd«      }t        j                  |d¬«      } | dddd«      }t        j                  |d¬	«      }t        j                  ||«       y )
Nr   r   r   z0x40controlbyte.sas7bdatr¦   rC   z0x40controlbyte.csvr|   r  rë   rÒ   s       r   Útest_0x40_control_byterÆ  ¡  sT   € á�T˜5 &Ð*DÓE€EÜ	�‰�U WÔ	-€BÙ�T˜5 &Ð*?Ó@€EÜ
�+‰+�e 5Ô
)€CÜ×Ñ˜"˜cÕ"r   c                 ó¬   —  | dddd«      }t        j                  |dd ¬«      5 }t        |«      }d d d «       j                  dk(  sJ ‚y # 1 sw Y   ŒxY w)Nr   r   r   z0x00controlbyte.sas7bdat.bz2éø*  rf   )rÈ  rm   )r%   rE   Únextr*   )r   r4   rª   r5   s       r   Útest_0x00_control_byterÊ  ª  sU   € á�T˜5 &Ð*HÓI€EÜ	�‰�U f°tÔ	<ð ÀÜ�&‹\ˆ÷à�8‰8�|Ò#Ð#Ñ#÷ð ús   ¤A
Á
AÚreturnc                  óŒ   — t        «       xr9 t        xr1 t        j                  t        j
                  ¬«      j                  dk(  S )N)Úna_valueÚpyarrow)r   r   r%   ÚStringDtyper-   ÚnanÚstorager   r   r   Ú_fast_string_path_availablerÒ  ²  s9   € ô
 	Óò 	AÜò	Aä�N‰N¤B§F¡FÔ+×3Ñ3°yÑ@ðr   é   r´   é2   )Útest1Útest2Útest3Útest16Úload_logr¥   )rB   r¶   r‹   Úcp437r›   Úlatin9r¦   Úcp037r±   ÚchunkedFTc                 óÄ  ‡‡‡—  | ddd|› d�«      Š|r	t         |   nd Št        «       st        j                  }n&‰dk(  rt        j                  }nt        j
                  }ˆˆˆfd„}|j                  «       5 }|j                  t        dd„ «        |«       \  }}	}
d d d «        |«       \  }}}||k(  sJ ‚|	k(  sJ ‚|	st        j                  |«       y y # 1 sw Y   Œ<xY w)	Nr   r   r   rA   rB   c                  ó@  •— t        j                  t        ‰‰‰¬«      «      5 } 	 ‰rt        j                  t        | «      «      n| j                  «       }|d| j                  fcd d d «       S # t        $ r d d| j                  fcY cd d d «       S w xY w# 1 sw Y   y xY w)Nr  TF)	r   r€   r
   r%   ÚconcatÚlistrS   ÚUnicodeDecodeErrorÚ	_str_mode)rX   Úframera   rD   r4   s     €€€r   rS   z7test_string_fast_path_matches_object_path.<locals>.readä  s›   ø€ Ü×ÑÜ˜5¨8¸yÔIó
ð 	/àð1ñ 1:œŸ	™	¤$ s£)Ô,¸s¿x¹x»z�ð ˜% §¡Ð.÷	/ñ 	/øô &ò 1ð ˜T 3§=¡=Ð0Ñ0÷	/ñ 	/ð1ú÷	/ð 	/ús.   £B¥0A-ÁBÁ-BÂBÂBÂBÂBÚ_string_modec                 ó&   — t         j                  d fS ©N©r­   Ústring_mode_object©rI   r;  s     r   r·  z;test_string_fast_path_matches_object_path.<locals>.<lambda>÷  ó   € œe×6Ñ6¸Ð=€ r   )Ú_string_path_chunksizesrÒ  r­   ré  Ústring_mode_utf8Ústring_mode_tableÚcontextÚsetattrr
   rF   rG   )r   ÚmonkeypatchrD   r±   rÝ  Úexpected_moderS   ÚpatcherrJ   Úexpected_raisedÚ_rŽ   Úresult_raisedÚresult_modera   r4   s     `           @@r   Ú)test_string_fast_path_matches_object_pathrø  Í  sï   ú€ ñ �T˜5 &¨T¨F°)Ð*<Ó=€EÙ18Ô'¨Ò-¸d€IÜ&Ô(Ü×0Ñ0‰Ø	�WÒ	Ü×.Ñ.‰ä×/Ñ/ˆö/ð 
×	Ñ	Ó	ð . 'Ø�‰ÜØÙ=ô	
ñ
 (,£vÑ$ˆ�/ 1÷.ñ *.«Ñ&€FˆM˜;ð ˜-Ò'Ð'Ð'Ø˜OÒ+Ð+Ð+ÙÜ
×Ñ˜f hÕ/ð ÷.ð .ús   Á7$CÃCc                 ó`  ‡—  | dddd«      Šˆfd„}|j                  «       5 }|j                  t        dd„ «        |«       \  }}d d d «        |«       \  }}t        «       r|t        j
                  k(  sJ ‚|d   j                  d	   d
k(  sJ ‚t        j                  |«       y # 1 sw Y   Œ`xY w)Nr   r   r   rl   c                  óª   •— t        j                  t        ‰dd¬«      «      5 } | j                  «       | j                  fcd d d «       S # 1 sw Y   y xY w)Nr¶   F)rD   Úblank_missing)r   r€   r
   rS   rã  )rX   r4   s    €r   rS   z1test_string_fast_path_blank_missing.<locals>.read  sG   ø€ Ü×ÑÜ˜5¨9ÀEÔJó
ð 	-àØ—8‘8“:˜sŸ}™}Ð,÷	-÷ 	-ò 	-ús   £A	Á	Arå  c                 ó&   — t         j                  d fS rç  rè  rê  s     r   r·  z5test_string_fast_path_blank_missing.<locals>.<lambda>  rë  r   ÚColumn54r   Ú )	rï  rð  r
   rÒ  r­   rî  r+   rF   rG   )	r   rñ  rS   ró  rJ   rõ  rŽ   r÷  r4   s	           @r   Ú#test_string_fast_path_blank_missingrÿ    s¸   ø€ ñ �T˜5 &Ð*:Ó;€Eô-ð 
×	Ñ	Ó	ð  'Ø�‰ÜØÙ=ô	
ñ
 “f‰ˆ�!÷ñ ›&Ñ€FˆKÜ"Ô$Øœe×5Ñ5Ò5Ð5Ð5à�*Ñ×"Ñ" 1Ñ%¨Ò+Ð+Ð+Ü×Ñ˜& (Õ+÷ð ús   ¢#B$Â$B-c           
      óº  ‡
— t        t         | dddd«      «      j                  «       «      }d||j                  d«      <   |dz  Š
‰
j	                  t        |«      «       ˆ
fd„}|j                  «       5 }|j                  t        d	d
„ «        |«       \  }}d d d «        |«       \  }}	t        «       r|	t        j                  k(  sJ ‚|k(  sJ ‚y # 1 sw Y   Œ:xY w)Nr   r   r   ztest16.sas7bdatéÿ   s   é«˜zinvalid_utf8.sas7bdatc                  ó.  •— t        j                  t        ‰d¬«      «      5 } t        j                  t
        «      5 }| j                  «        d d d «       t        j                  «      | j                  fcd d d «       S # 1 sw Y   Œ3xY w# 1 sw Y   y xY w)NrB   rC   )
r   r€   r
   rt   rô   râ  rS   r|   r'  rã  )rX   Úexcinfor4   s     €r   rS   z0test_string_fast_path_invalid_utf8.<locals>.read(  sv   ø€ Ü×Ñ¤¨u¸wÔ GÓHð 	5ÈCÜ—‘Ô1Ó2ð °gØ—‘”
÷ä�w—}‘}Ó% s§}¡}Ð4÷	5ñ 	5÷ð ú÷	5ð 	5ús"   ¢B¼A?Á(BÁ?B	ÂBÂBrå  c                 ó&   — t         j                  d fS rç  rè  rê  s     r   r·  z4test_string_fast_path_invalid_utf8.<locals>.<lambda>2  rë  r   )r�   r   Ú
read_bytesrŸ   r¹  rR  rï  rð  r
   rÒ  r­   rí  )r   r¾  rñ  r   rS   ró  rJ   rõ  rŽ   r÷  r4   s             @r   Ú"test_string_fast_path_invalid_utf8r    sà   ø€ ô Ü‰X�d˜E 6Ð+<Ó=Ó>×IÑIÓKó€Dð )-€Dˆ�‰�OÓ	$Ñ%ØÐ.Ñ.€EØ	×Ñ”e˜D“kÔ"ô5ð 
×	Ñ	Ó	ð  'Ø�‰ÜØÙ=ô	
ñ
 “f‰ˆ�!÷ñ ›&Ñ€FˆKÜ"Ô$Øœe×4Ñ4Ò4Ð4Ð4Ø�XÒÐÑ÷ð ús   Á5#CÃCc                 óø  ‡—  | dddd«      }t        j                  t        |d¬«      «      5 }|j                  }d d d «       |dz  Š‰j	                  t        |«      j                  «       d   «       ˆfd„}|j                  «       5 }|j                  t        d	d
„ «        |«       \  }}	d d d «        |«       \  }
}t        «       r|t        j                  k(  sJ ‚|
k(  sJ ‚y # 1 sw Y   Œ«xY w# 1 sw Y   ŒFxY w)Nr   r   r   rî   rB   rC   ztruncated.sas7bdatc                  ó2  •— t        j                  t        ‰d¬«      «      5 } t        j                  t
        d¬«      5 }| j                  «        d d d «       t        j                  «      | j                  fcd d d «       S # 1 sw Y   Œ3xY w# 1 sw Y   y xY w)NrB   rC   zLength of valuesr‡   )
r   r€   r
   rt   rô   r_  rS   r|   r'  rã  )rX   r  Ú	truncateds     €r   rS   z2test_string_fast_path_truncated_file.<locals>.readE  sy   ø€ Ü×Ñ¤¨yÀ7Ô KÓLð 	5ÐPSÜ—‘œzÐ1CÔDð ÈØ—‘”
÷ä�w—}‘}Ó% s§}¡}Ð4÷	5ñ 	5÷ð ú÷	5ð 	5ús"   ¢B¾BÁ(BÂB
	ÂBÂBrå  c                 ó&   — t         j                  d fS rç  rè  rê  s     r   r·  z6test_string_fast_path_truncated_file.<locals>.<lambda>O  rë  r   )r   r€   r
   Ú_page_lengthr¹  r   r  rï  rð  rÒ  r­   rí  )r   r¾  rñ  r4   rX   r�  rS   ró  rJ   rõ  rŽ   r÷  r	  s               @r   Ú$test_string_fast_path_truncated_filer  ;  sþ   ø€ ñ �T˜5 &Ð*=Ó>€EÜ	×	Ñ	œN¨5¸7ÔCÓ	Dð 'ÈØ×&Ñ&ˆ÷'àÐ/Ñ/€IØ×Ñœ$˜u›+×0Ñ0Ó2°=°[°LÐAÔBô5ð 
×	Ñ	Ó	ð  'Ø�‰ÜØÙ=ô	
ñ
 “f‰ˆ�!÷ñ ›&Ñ€FˆKÜ"Ô$Øœe×4Ñ4Ò4Ð4Ð4Ø�XÒÐÑ÷+'ð 'ú÷ð ús   ­C$Â#C0Ã$C-Ã0C9zFstring columns are object dtype, with no storage, under infer_string=0)Úreasonc                 ó  —  | dddd«      }t        j                  dd«      5  t        j                  t	        |d¬«      «      5 }|j                  |j                  j                  d	«      «      d
   t        j                  k(  sJ ‚|j                  |j                  j                  d	«         }|j                  «       }d d d «       d d d «          j                  j                  dk(  sJ ‚y # 1 sw Y   Œ0xY w# 1 sw Y   Œ4xY w)Nr   r   r   rl   zmode.string_storageÚpythonr‹   rC   r˜   r   )r%   Úoption_contextr   r€   r
   rå  rž   Úcountr­   ré  Úcolumn_namesrŸ   rS   r,   rÑ  )r   r4   rX   Ústr_colrŽ   s        r   Ú-test_string_fast_path_respects_string_storager  X  sñ   € ñ �T˜5 &Ð*:Ó;€EÜ	×	Ñ	Ð0°(Ó	;ñ  Ü×Ñ¤¨u¸xÔ HÓIð 	 ÈSà× Ñ  ×!2Ñ!2×!8Ñ!8¸Ó!>Ó?ÀÑBÜ×+Ñ+ò,ðð,ð ×&Ñ& s×'8Ñ'8×'>Ñ'>¸tÓ'DÑEˆGØ—X‘X“ZˆF÷	 ÷ ð �'‰?× Ñ ×(Ñ(¨HÒ4Ð4Ñ4÷	 ð 	 ú÷ ð  ús$   ¢!C7ÁA9C+Â<C7Ã+C4	Ã0C7Ã7D Úkwargsr‹   )rD   Úconvert_textÚ	shift_jisÚbig5Úeuc_jpc                 ó  —  | dddd«      }t        j                  t        |fi |¤Ž«      5 }|j                  |j                  j                  d«      «      d   t        j                  k(  sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nr   r   r   rl   r˜   r   )r   r€   r
   rå  rž   r  r­   ré  )r   r  r4   rX   s       r   Útest_string_fast_path_skippedr  k  s€   € ñ �T˜5 &Ð*:Ó;€EÜ	×	Ñ	œN¨5Ñ;°FÑ;Ó	<ð 
Àà×Ñ˜S×.Ñ.×4Ñ4°TÓ:Ó;¸AÑ>Ü×'Ñ'ò(ð	
ñ(÷
÷ 
ñ 
ús   «AA6Á6A?)r¶   r‹   rÚ  r›   rÛ  r¦   Úcp874rÜ  c           	      ó¸  ‡ — t        ‰ «      \  }}}t        |«      dz  }|t        ˆ fd„t        d«      D «       «      k(  sJ ‚t        d«      D ]e  }	 t	        |g«      j                  ‰ «      j                  d«      }||   t        |«      k(  sJ ‚t	        |||z  ||z  t        |«      z    «      |k(  rŒeJ ‚ y # t        $ r ||   t        j                  k(  sJ ‚Y ŒŒw xY w)Né   c              3   ón   •K  — | ],  }t        |g«      j                  ‰d «      t        |«      k(  –— Œ. y­w)ÚreplaceN)rR  r}   Úchr)Ú.0r'  rD   s     €r   ú	<genexpr>z.test_utf8_translation_table.<locals>.<genexpr>Š  s5   øè ø€ ò !àô 	ˆuˆg‹×Ñ˜h¨	Ó2´c¸%³jÕ@ñ!ùs   ƒ25é€   rB   )
r   rð   Úallr)   rR  r}   r¼   râ  r­   Úundefined_byte)rD   ÚtableÚlengthsÚascii_identityÚwidthr'  rJ   s   `      r   Útest_utf8_translation_tabler+  �  sú   ø€ ô &=¸XÓ%FÑ"€Eˆ7�NÜ�‹J˜#Ñ€EØœSó !ä˜4“[ô!ó ò ð ð ô �s“ò Wˆð	Ü˜e˜W“~×,Ñ,¨XÓ6×=Ñ=¸gÓFˆHð �u‰~¤ X£Ò.Ð.Ð.Ü�U˜5 5™=¨5°5©=¼3¸x»=Ñ+HÐIÓJÈhÓVÐVÐVñWøô "ò 	Ø˜5‘>¤U×%9Ñ%9Ò9Ð9Ð9Ùð	ús   Á*B5Â5!CÃC)rB   z	utf-8-sigzutf-16r  r  Úcp932r  Úraw_unicode_escapec                 ó   — t        | «      �J ‚y rç  )r   rC   s    r   Ú5test_utf8_translation_table_rejects_context_dependentr/  ˜  s   € ô$ # 8Ó,Ð4Ð4Ñ4r   )er   r   r   r"   Úpathlibr   r,  rÂ  Únumpyr-   rt   Úpandas._configr   Úpandas.compatr   Úpandas.errorsr   r   r	   Úpandasr%   Úpandas._testingÚ_testingrF   Úpandas.io.sas.sas7bdatr
   r   Úpandas.io.sas.sas_constantsr   Úsas_constantsr­   r�   Úfixturer   r)   r;   r=   r…   r�   r‘   r•   r¢   ru   rw   r«   r²   r¸   r½   rÀ   rÄ   rÐ   rÓ   rÕ   râ   ré   rì   rò   rõ   rþ   r  r  r$  r0  r2  r9  r>  rA  rM  rX  ra  rc  rs  rx  r|  r  r´  r™  r¨  r¬  r°  r²  rµ  r_  rH  rÀ  rÄ  rÆ  rÊ  ÚboolrÒ  rì  rá  rø  rÿ  r  r  Úskipifr  r  r+  r/  r   r   r   ú<module>r>     s>  ðÛ Ý Û 	Û 	Ý Û Û ã Û å -å %÷ñ ó Ý ÷÷ ,Ó +àOÐ ð ‡�ñ)ó ð)ð €‡�˜™E ! R›LÐ)¨A°¨t¨9Ð5Ô6ñó 7ð÷"@&ñ @&òFò&	2òòòIð* ‡�×ÑØòó	ñ+ó	ð+òò,ò$)ò(
*ò$ò	#ò#ò#ò#ð2 ‡�×Ñ˜ E¨5 >Ó2ñ
?ó 3ð
?ò#òòð ‡�×Ñ˜ d¨F ^Ó4ñ,ó 5ð,òò(òB&3ðR ‡�×ÑÐ-°ÐATÐ/UÓVØ‡�×Ñ˜Ò"FÓGñHó Hó WðHð ‡�×Ñ˜ ?Ð4FÐ"GÓHñ
Hó Ið
Hð ‡�×ÑØàKØ%ðóñ4óð4ò"(ò2ð ‡�×ÑØ>òóñHóðHò1ð. ‡�×ÑØ%òóñ$	9ó%ð$	9ò	9ð ‡�×ÑØ2òó	ð ‡�×Ñ˜¢lÓ3ñ
Hó 4ó	ð
Hð ‡�×ÑØ=òó
ñHó
ðHð  ‡�×Ñ˜¢}Ó5ñHó 6ðHð ‡�×Ñ˜¨	°9Ð'=Ó>ñHó ?ðHð Ø×'Ñ'ó/=ðd ‡�×ÑØ%ð 
�Ò:Ð;Ø	�Ò=Ð>ð
 
��Y�KÐ Ø	��V�HÐð
 
�Ò<Ð=Ø	�Ò;Ð<Ø	�Ò;Ð<ð 
��BˆØ	��Bˆð3ò6
	ð; ó (ñRóS(ðRò"Hð$ ‡�×Ñ˜ t¨U mÓ4ñó 5ðò"'ò*ð ‡�×ÑØ'ñð Ø,Øð	
ð 
,¨YÐ8LÈdÐSð
ð 
˜^Ð,ð ó ñ(óð(ò ò#ò$ð Tó ð  ØØØØØñÐ ð ‡�×ÑØÚQóð ‡�×Ñ˜¡Ð&=Ó!>Ó?Ø‡�×Ñ˜ U¨D MÓ2ñ+0ó 3ó @óð+0ò\,ò4ò<ð: ‡�×ÑÙÓÐØSð ó ñ5ó	ð5ð ‡�×ÑØà	�TÐØ¨uÑ5Ø	�[Ð!Ø	�VÐØ	�XÐðó	ñ	
ó	ð	
ð ‡�×ÑØÚQóñWó	ðWð& ‡�×ÑØò	óñ5óñ5r   