§
    â! h(  ã                   ó`   — d dl Zd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ  G d„ d¦  «        ZdS )é    N)Ú	DataFrameÚ
RangeIndexÚSeriesÚconcatÚ
date_rangec                   óÒ  — e Zd Zd„ Zd„ Zej                             dddg¦  «        ej                             dg g d¢g¦  «        d„ ¦   «         ¦   «         Zej                             d	e	j
        e	j        e	j        fe	j
        e	j        e	j        fd
e	j
        e	j        fd
e	j        e	j        fde	j
        e	j        fde	j        e	j        fddg¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestEmptyConcatc                 ó°  — t          t          j                             d¦  «                             d¦  «        t          d¦  «        ¬¦  «        }|d d…                              ¦   «         }d|d<   |dd…         }||||dd …         g}t          |d|¬	¦  «        }|                     g d
¢¬¦  «        }|d          	                    |st          nd¦  «        |d<   d|j        dd…df<   t          j        ||¦  «         t          dt          d¦  «        it          ddd¬¦  «        ¬¦  «        }t          ¦   «         }t          ||gd¬¦  «        }	t          j        |	|¦  «         t          ||gd¬¦  «        }	t          j        |	|¦  «         t          ||g¦  «        }	t          j        |	|¦  «         t          ||g¦  «        }	t          j        |	|¦  «         d S )Né   )é
   é   Úabcd©Úcolumnsé   ÚbarÚfoor   )ÚaxisÚsort)ÚaÚbÚcÚdr   zstring[pyarrow_numpy]r   ÚAi'  Ú20130101Ús)ÚperiodsÚfreq©Úindexé   ©r   )r   ÚnpÚrandomÚdefault_rngÚstandard_normalÚlistÚcopyr   ÚreindexÚastypeÚobjectÚlocÚtmÚassert_frame_equalÚranger   )
Úselfr   Úusing_infer_stringÚdfÚdfcopyÚemptyÚframesÚ	concattedÚexpectedÚresults
             ú`c:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/tests/reshape/concat/test_empty.pyÚtest_handle_empty_objectsz)TestEmptyConcat.test_handle_empty_objects   sä  € ÝÝŒI×!Ò! !Ñ$Ô$×4Ò4°WÑ=Ô=ÅtÈFÁ|Ä|ð
ñ 
ô 
ˆð �B�Q�B”—’‘”ˆØˆˆu‰Ø�1�Q�3”ˆà˜% ¨¨1¨2¨2¬Ð/ˆÝ˜6¨°Ð5Ñ5Ô5ˆ	à—:’:Ð&AÐ&AÐ&A�:ÑBÔBˆØ" 5œ/×0Ò0Ø,ÐI�FˆFÐ2Iñ
ô 
ˆ�‰ð $)ˆŒ�Q�q�S˜%�ZÑ å
Ô˜i¨Ñ2Ô2Ð2õ Ø•%˜‘,”,Ð¥z°*ÀeÐRUÐ'VÑ'VÔ'Vð
ñ 
ô 
ˆõ ‘”ˆÝ˜˜U˜¨!Ð,Ñ,Ô,ˆÝ
Ô˜f bÑ)Ô)Ð)Ý˜ ˜¨!Ð,Ñ,Ô,ˆÝ
Ô˜f bÑ)Ô)Ð)å˜˜U˜Ñ$Ô$ˆÝ
Ô˜f bÑ)Ô)Ð)Ý˜ ˜Ñ$Ô$ˆÝ
Ô˜f bÑ)Ô)Ð)Ð)Ð)ó    c                 óp  — t          g d¢d¬¦  «        }t          dd¬¦  «        }t          ||gd¬¦  «        }t          g d¢t          j        t          j        t          j        gd	œt          d
¦  «        ¬¦  «        }t          j        ||¦  «         t          g d¢d¬¦  «        }t          dd¬¦  «        }d}t          j        t          |¬¦  «        5  t          ||gd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          g d¢¦  «        }t          j
        ||¦  «         t          g d¢d¬¦  «        }t          d d¬¦  «        }t          ||gd¬¦  «        }t          g d¢t          j        t          j        t          j        gdœddgt          d
¦  «        ¬¦  «        }t          j        ||¦  «         d S )N©r!   r   é   Úx)ÚnameÚyÚfloat64)r@   Údtyper!   r"   )r?   rA   r>   r   zDThe behavior of array concatenation with empty entries is deprecated)Úmatchr   )r?   r   )r   r    )r   r   r   r#   Únanr   r-   r.   Úassert_produces_warningÚFutureWarningÚassert_series_equal)r0   Ús1Ús2ÚresÚexpÚmsgs         r9   Útest_concat_empty_seriesz(TestEmptyConcat.test_concat_empty_series4   sý  € å�I�I�I CÐ(Ñ(Ô(ˆÝ˜ IÐ.Ñ.Ô.ˆÝ�b˜"�X AÐ&Ñ&Ô&ˆÝØ�)�)¥2¤6­2¬6µ2´6Ð":Ð;Ð;Ý˜Q‘-”-ð
ñ 
ô 
ˆõ 	Ô˜c 3Ñ'Ô'Ð'å�I�I�I CÐ(Ñ(Ô(ˆÝ˜ IÐ.Ñ.Ô.ˆØTˆÝÔ'­¸SÐAÑAÔAð 	+ð 	+Ý˜"˜b˜¨Ð*Ñ*Ô*ˆCð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+õ �Y�Y�YÑÔˆÝ
Ô˜s CÑ(Ô(Ð(õ �I�I�I CÐ(Ñ(Ô(ˆÝ˜ YÐ/Ñ/Ô/ˆÝ�b˜"�X AÐ&Ñ&Ô&ˆÝØ�)�)¥¤­¬µ´Ð 8Ð9Ð9Ø˜!�HÝ˜Q‘-”-ð
ñ 
ô 
ˆõ
 	Ô˜c 3Ñ'Ô'Ð'Ð'Ð's   ÃC2Ã2C6Ã9C6ÚtzNÚUTCÚvaluesr=   c                 ó’  — t          g d¬¦  «        j                             |¦  «        }|rd nt          j        }t          ||¬¦  «        }t          t          t          j        gt          |¦  «        z  d¬¦  «        j                             |¦  «        |dœ¦  «        }t          ||gd¬¦  «        }t          j        ||¦  «         d S )NúM8[ns]©rC   )r   r!   r!   r"   )r   ÚdtÚtz_localizer#   rB   r   ÚpdÚNaTÚlenr   r-   r.   )r0   rO   rQ   ÚfirstrC   Úsecondr7   r8   s           r9   Ú!test_concat_empty_series_timelikez1TestEmptyConcat.test_concat_empty_series_timelikeS   sÇ   € õ
 �r Ð*Ñ*Ô*Ô-×9Ò9¸"Ñ=Ô=ˆØÐ.��¥B¤JˆÝ˜ eÐ,Ñ,Ô,ˆåå�2œ6˜(¥S¨¡[¤[Ñ0¸ÐAÑAÔAÔD×PÒPÐQSÑTÔTØðð ñ
ô 
ˆõ ˜ ˜¨aÐ0Ñ0Ô0ˆÝ
Ô˜f hÑ/Ô/Ð/Ð/Ð/r;   zleft,right,expectedúm8[ns]rS   )Úcategoryr^   r^   )r^   r+   r+   c                 óz   — t          t          |¬¦  «        t          |¬¦  «        g¦  «        }|j        |k    sJ ‚d S ©NrT   )r   r   rC   )r0   ÚleftÚrightr7   r8   s        r9   Útest_concat_empty_series_dtypesz/TestEmptyConcat.test_concat_empty_series_dtypese   sE   € õ$ � dÐ+Ñ+Ô+­V¸%Ð-@Ñ-@Ô-@ÐAÑBÔBˆØŒ|˜xÒ'Ð'Ð'Ð'Ð'Ð'r;   rC   )rB   Úint8Úuint8Úboolr]   rS   c                 óø   — t          j        |¦  «        }t          t          |¬¦  «        g¦  «        }|j        |k    sJ ‚t          t          |¬¦  «        t          |¬¦  «        g¦  «        }|j        |k    sJ ‚d S r`   )r#   rC   r   r   )r0   rC   r8   s      r9   Ú0test_concat_empty_series_dtypes_match_roundtripsz@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtripsz   s€   € õ ”˜‘”ˆå� eÐ,Ñ,Ô,Ð-Ñ.Ô.ˆØŒ|˜uÒ$Ð$Ð$Ð$å� eÐ,Ñ,Ô,­f¸5Ð.AÑ.AÔ.AÐBÑCÔCˆØŒ|˜uÒ$Ð$Ð$Ð$Ð$Ð$r;   )rB   rd   re   r]   rS   Údtype2c                 ó<  ‡‡— ||k    rt          j        d¦  «         d„ Šd„ Šˆˆfd„}t          j        |¦  «        }t          j        |¦  «        } |||¦  «        }t	          t          |¬¦  «        t          |¬¦  «        g¦  «        j        }|j        |k    sJ ‚d S )Nz%same dtype is not applicable for testc                 óÒ   — | j         |j         h}t          |h d£z
  ¦  «        s| j         dk    s|j         dk    rdS t          |ddhz
  ¦  «        s| j         dk    s|j         dk    rdS d S )N>   r   ÚiÚurl   rm   r   ©ÚkindrY   ©rC   ri   Útypss      r9   Úint_result_typezSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.int_result_type�   sƒ   € Ø”J ¤Ð,ˆDÝ�t˜o˜o˜oÑ-Ñ.Ô.ð Ø”
˜cÒ!Ð! V¤[°CÒ%7Ð%7à�sÝ˜  c 
Ñ*Ñ+Ô+ð Ø”
˜cÒ!Ð! V¤[°CÒ%7Ð%7à�sØ�4r;   c                 óz   — | j         |j         h}t          |h d£z
  ¦  «        s| j         dk    s|j         dk    rdS d S )N>   Úfrl   rm   rt   rn   rp   s      r9   Úfloat_result_typezUTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.float_result_typeœ   sL   € Ø”J ¤Ð,ˆDÝ�t˜o˜o˜oÑ-Ñ.Ô.ð Ø”
˜cÒ!Ð! V¤[°CÒ%7Ð%7à�sØ�4r;   c                 óH   •—  ‰| |¦  «        }|�|S  ‰| |¦  «        }|�|S dS )NÚO© )rC   ri   r8   ru   rr   s      €€r9   Úget_result_typezSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_type¤   sA   ø€ Ø&Ð& u¨fÑ5Ô5ˆFØÐ!Ø�Ø$�_ U¨FÑ3Ô3ˆFØÐ!Ø�Ø�3r;   rT   )ÚpytestÚskipr#   rC   r   r   ro   )r0   rC   ri   ry   r7   r8   ru   rr   s         @@r9   Ú*test_concat_empty_series_dtypes_roundtripsz:TestEmptyConcat.test_concat_empty_series_dtypes_roundtrips†   sÏ   øø€ ð �FŠ?ˆ?ÝŒKÐ?Ñ@Ô@Ð@ð
	ð 
	ð 
	ð	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	õ ”˜‘”ˆÝ”˜&Ñ!Ô!ˆØ"�? 5¨&Ñ1Ô1ˆÝ� eÐ,Ñ,Ô,­f¸6Ð.BÑ.BÔ.BÐCÑDÔDÔJˆØŒ{˜hÒ&Ð&Ð&Ð&Ð&Ð&r;   c                 óÐ   — t          t          d¬¦  «        t          t          j        ¬¦  «        t          t          j        ¬¦  «        g¦  «        j        t          j        k    sJ ‚d S )NrS   rT   )r   r   r#   Úbool_Úint64rC   Úobject_©r0   s    r9   Ú&test_concat_empty_series_dtypes_triplez6TestEmptyConcat.test_concat_empty_series_dtypes_triple³   sd   € åÝ˜hÐ'Ñ'Ô'­µb´hÐ)?Ñ)?Ô)?ÅÍbÌhÐAWÑAWÔAWÐXñô äÝŒzòð ð ð ð ð r;   c                 óœ   — t          t          t          j        g ¦  «        d¬¦  «        t          d¬¦  «        g¦  «        j        dk    sJ ‚d S )Nr^   rT   rB   )r   r   r#   ÚarrayrC   r�   s    r9   Ú2test_concat_empty_series_dtype_category_with_arrayzBTestEmptyConcat.test_concat_empty_series_dtype_category_with_array»   s]   € õ Ý�œ ™œ¨JÐ7Ñ7Ô7½ÀiÐ9PÑ9PÔ9PÐQñô äØòð ð ð ð ð r;   c                 ó^  — t          t          d¬¦  «                             d¦  «        t          d¬¦  «                             d¦  «        g¦  «        }|j        dk    sJ ‚t          t          d¬¦  «                             d¦  «        t          d¬¦  «        g¦  «        }t	          j        t          j        ¦  «        }|j        |k    sJ ‚t          t          d¬¦  «                             d¦  «        t          d¬¦  «        g¦  «        }t	          j        d¦  «        }|j        |k    sJ ‚d S )NrB   rT   ÚSparsezSparse[float64]r+   )r   r   r*   rC   rW   ÚSparseDtyper#   rB   )r0   r8   r7   s      r9   Ú&test_concat_empty_series_dtypes_sparsez6TestEmptyConcat.test_concat_empty_series_dtypes_sparseÄ   s*  € Ýå˜YÐ'Ñ'Ô'×.Ò.¨xÑ8Ô8Ý˜YÐ'Ñ'Ô'×.Ò.¨xÑ8Ô8ðñ
ô 
ˆð Œ|Ð0Ò0Ð0Ð0Ð0åÝ˜)Ð$Ñ$Ô$×+Ò+¨HÑ5Ô5µvÀIÐ7NÑ7NÔ7NÐOñ
ô 
ˆõ ”>¥"¤*Ñ-Ô-ˆØŒ|˜xÒ'Ð'Ð'Ð'åÝ˜)Ð$Ñ$Ô$×+Ò+¨HÑ5Ô5µvÀHÐ7MÑ7MÔ7MÐNñ
ô 
ˆõ ”> (Ñ+Ô+ˆØŒ|˜xÒ'Ð'Ð'Ð'Ð'Ð'r;   c                 óö   — t          g d¢t          j        g d¢dœ¦  «        }t          |j        ¬¦  «        }t	          ||gd¬¦  «        }|                     t          ¦  «        }t          j        ||¦  «         d S )N)r   r!   r!   r=   )ÚRowÚEmptyColÚ	NumberColr   r   r"   )	r   r#   rE   r   r   r*   r+   r-   r.   )r0   Údf_1Údf_2r8   r7   s        r9   Ú!test_concat_empty_df_object_dtypez1TestEmptyConcat.test_concat_empty_df_object_dtypeÙ   su   € å   ½¼ÈYÈYÈYÐWÐWÑXÔXˆÝ ¤Ð.Ñ.Ô.ˆÝ˜˜t˜¨1Ð-Ñ-Ô-ˆØ—;’;�vÑ&Ô&ˆÝ
Ô˜f hÑ/Ô/Ð/Ð/Ð/r;   c                 ó
  — t          t          d¦  «        ¬¦  «        }|d                              t          j        ¦  «        |d<   |d                              t          j        ¦  «        |d<   |d                              t          j        ¦  «        |d<   t          ||g¦  «        }|d         j        t          j        k    sJ ‚|d         j        t          j        k    sJ ‚|d         j        t          j        k    sJ ‚t          ||                     t          j        ¦  «        g¦  «        }|d         j        t          j	        k    sJ ‚|d         j        t          j        k    sJ ‚|d         j        t          j        k    sJ ‚d S )NÚabcr   r   r   r   )
r   r'   r*   r#   r~   Úint32rB   r   rC   r€   )r0   r2   r8   s      r9   Ú"test_concat_empty_dataframe_dtypesz2TestEmptyConcat.test_concat_empty_dataframe_dtypesá   s<  € Ý�t E™{œ{Ð+Ñ+Ô+ˆØ�S”'—.’.¥¤Ñ*Ô*ˆˆ3‰Ø�S”'—.’.¥¤Ñ*Ô*ˆˆ3‰Ø�S”'—.’.¥¤Ñ,Ô,ˆˆ3‰å˜˜R˜Ñ!Ô!ˆØ�cŒ{Ô ¥B¤HÒ,Ð,Ð,Ð,Ø�cŒ{Ô ¥B¤HÒ,Ð,Ð,Ð,Ø�cŒ{Ô ¥B¤JÒ.Ð.Ð.Ð.å˜˜RŸYšY¥r¤zÑ2Ô2Ð3Ñ4Ô4ˆØ�cŒ{Ô ¥B¤JÒ.Ð.Ð.Ð.Ø�cŒ{Ô ¥B¤JÒ.Ð.Ð.Ð.Ø�cŒ{Ô ¥B¤JÒ.Ð.Ð.Ð.Ð.Ð.r;   c                 ó8  — t          ¦   «         }t          dddgiddgd¬¦  «        }t          dg it          d¦  «        d¬¦  «        }t          ||gdd¬¦  «        }t          j        ||¦  «         t          ||gdd	¬¦  «        }t          j        ||¦  «         d S )
Nr   r!   r   r   r   )r    rC   Úinner)r   ÚjoinÚouter)r   r   r   r-   r.   )r0   Údf_emptyÚdf_aÚdf_expectedr8   s        r9   Útest_concat_inner_join_emptyz,TestEmptyConcat.test_concat_inner_join_emptyñ   s§   € å‘;”;ˆÝ˜#  1˜v˜¨q°!¨f¸GÐDÑDÔDˆÝ  b 	µ¸A±´ÀgÐNÑNÔNˆå˜˜xÐ(¨q°wÐ?Ñ?Ô?ˆÝ
Ô˜f kÑ2Ô2Ð2å˜˜xÐ(¨q°wÐ?Ñ?Ô?ˆÝ
Ô˜f dÑ+Ô+Ð+Ð+Ð+r;   c                 óÎ   — t          dd gdd ggddg¬¦  «        }t          dd gdd ggddg¬¦  «        }t          ||g¦  «        }|j        }t          j        |j        |¦  «         d S )Nr!   r   r   r   )Údatar   r>   r   )r   r   Údtypesr-   rH   )r0   Údf1Údf2r8   r7   s        r9   Útest_empty_dtype_coercez'TestEmptyConcat.test_empty_dtype_coerceý   s}   € õ ˜q $˜i¨!¨T¨Ð3¸cÀ3¸ZÐHÑHÔHˆÝ˜q $˜i¨!¨T¨Ð3¸cÀ3¸ZÐHÑHÔHˆÝ˜˜c˜
Ñ#Ô#ˆØ”:ˆÝ
Ô˜vœ}¨hÑ7Ô7Ð7Ð7Ð7r;   c                 óv  — t          ddg¬¦  «        }t          ddg¬¦  «        }t          |||g¦  «        }t          g d¢¬¦  «        }t          j        ||¦  «         t          ddg¬¦  «        }t          dg¬¦  «        }t          ||g¦  «        }t          ddg¬¦  «        }t          j        ||¦  «         d S )Nr   r   r   r   ©r   r   r   )r   r   r-   r.   )r0   r    r¡   r8   r7   Údf3Údf4s          r9   Útest_concat_empty_dataframez+TestEmptyConcat.test_concat_empty_dataframe
  sÈ   € å  c 
Ð+Ñ+Ô+ˆÝ  c 
Ð+Ñ+Ô+ˆÝ˜˜c 3˜Ñ(Ô(ˆÝ _ _ _Ð5Ñ5Ô5ˆÝ
Ô˜f hÑ/Ô/Ð/å  c 
Ð+Ñ+Ô+ˆÝ  Ð&Ñ&Ô&ˆÝ˜˜c˜
Ñ#Ô#ˆÝ c¨3 ZÐ0Ñ0Ô0ˆÝ
Ô˜f hÑ/Ô/Ð/Ð/Ð/r;   c                 ó  — t          g d¢g d¢dœ¦  «        }t          dg d¢i¦  «        }t          |d d…         |d d…         g¦  «        }|d         j        t          j        k    sJ ‚|s|d         j        t          j        k    snd S J ‚d S )Nr=   r¤   )r   r   r   r   r   )r   r   rC   r#   r   r€   )r0   r1   r    r¡   r8   s        r9   Ú,test_concat_empty_dataframe_different_dtypesz<TestEmptyConcat.test_concat_empty_dataframe_different_dtypes  sŸ   € å˜i˜i˜i¨o¨o¨oÐ>Ð>Ñ?Ô?ˆÝ˜˜i˜i˜iÐ(Ñ)Ô)ˆå˜˜R˜a˜Rœ # b q b¤'Ð*Ñ+Ô+ˆØ�cŒ{Ô ¥B¤HÒ,Ð,Ð,Ð,Ø6HÐVˆv�cŒ{Ô ¥B¤JÒ.Ð.Ð.Ð.Ð.Ð.ÐVÐ.Ð.r;   c                 óV  — t          dt          j        g t          j        ¦   «         ¬¦  «        i¦  «        }t          dt          j        g d¢t          j        ¦   «         ¬¦  «        i¦  «        }|                     ¦   «         }t          ||g¦  «        }t          j        ||¦  «         dS )z<48510 `concat` to an empty EA should maintain type EA dtype.r   rT   r=   N)r   rW   r„   Ú
Int64Dtyper(   r   r-   r.   )r0   r™   Údf_newr7   r8   s        r9   Útest_concat_to_empty_eaz'TestEmptyConcat.test_concat_to_empty_ea!  sŒ   € å˜c¥2¤8¨Bµb´m±o´oÐ#FÑ#FÔ#FÐGÑHÔHˆÝ˜C¥¤¨)¨)¨)½2¼=¹?¼?Ð!KÑ!KÔ!KÐLÑMÔMˆØ—;’;‘=”=ˆÝ˜ 6Ð*Ñ+Ô+ˆÝ
Ô˜f hÑ/Ô/Ð/Ð/Ð/r;   )Ú__name__Ú
__module__Ú__qualname__r:   rN   rz   ÚmarkÚparametrizer\   r#   r~   r“   r€   Úfloat32r   rc   rh   r|   r‚   r…   r‰   r�   r”   rœ   r¢   r§   r©   r­   rx   r;   r9   r	   r	      sY  € € € € € ð"*ð "*ð "*ðH(ð (ð (ð> „[×Ò˜T D¨% =Ñ1Ô1Ø„[×Ò˜X¨¨I¨I¨I Ñ7Ô7ð0ð 0ñ 8Ô7ñ 2Ô1ð0ð  „[×ÒØð ŒX�r”x ¤Ð,ØŒX�r”z 2¤:Ð.à�r”x ¤Ð,Ø�r”x ¤Ð,Ø�r”x ¤Ð,Ø�r”x ¤Ð,à0Ø,ð	
ñô ð (ð (ñ!ô ð (ð
 „[×ÒØÐIÐIÐIñô ð%ð %ñô ð%ð „[×Ò˜WÐ&VÐ&VÐ&VÑWÔWØ„[×ÒØØ8Ð8Ð8ñô ð&'ð &'ñ	ô ñ XÔWð
&'ðP
ð 
ð 
ð
ð 
ð 
ð(ð (ð (ð*0ð 0ð 0ð/ð /ð /ð 
,ð 
,ð 
,ð8ð 8ð 8ð0ð 0ð 0ðWð Wð Wð0ð 0ð 0ð 0ð 0r;   r	   )Únumpyr#   rz   ÚpandasrW   r   r   r   r   r   Úpandas._testingÚ_testingr-   r	   rx   r;   r9   ú<module>r¸      s¼   ðØ Ð Ð Ð Ø €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ðX0ð X0ð X0ð X0ð X0ñ X0ô X0ð X0ð X0ð X0r;   