
    7f#K              
      2   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZd dlmZ d dlmZmZmZmZ d d	lm Z  d d
l!m"Z" h dZ#h dZ$ddhZ%dZ&e&ddide'(                    e$e%z  d           ed          dd ed          ddid ed          dddd ed          ddddddddiid  ed!          ddd"d# ed$          d%d&d'Z)e
j        d(k    r ed)          d*d+d,e)d-<   d. Z*d/ Z+ ej,        d01          d2             Z-ej,        d3             Z.d4 Z/d5 Z0d6Z1d7 Z2d8 Z3d9 Z4ej5        6                    d:d;d<d=e&7                    d>d?          fg          d@             Z8dA Z9dB Z:dCZ;dDZ<ej5        =                    dE          dF             Z>dG Z?ej5        6                    dH e@ejA        B                                           e@ejA                  I          dJ             ZCdK ZDdL ZEdM ZFdN ZGdO ZHdP ZIdQ ZJdR ZKdS ZLdT ZMej5        6                    dUdVdWg          ej5        N                     ejO                    dXk    dYZ          d[                         ZPd_d^ZQdS )`    )annotationsN)suppress)cleandoc)Mock)ZipFile)	run_setup)bdist_wheelget_abi_tagremove_readonlyremove_readonly_exc)Distribution)tags>   dummy_dist-1.0.dist-info/WHEEL&dummy_dist-1.0.dist-info/top_level.txtdummy_dist-1.0.dist-info/RECORD!dummy_dist-1.0.dist-info/METADATA>
   
COPYING.md
NOTICE.rstAUTHORS.txtLICENCE.txtLICENSE.txtNOTICEAUTHORSCOPYINGLICENCELICENSEzLICENSE~zAUTHORS~zQfrom setuptools import setup

setup(
    name='dummy_dist',
    version='1.0',
)
	DUMMYFILE )setup.pylicensesu  
            from setuptools import setup

            setup(
                name="simple.dist",
                version="0.1",
                description="A testing distribution ☃",
                extras_require={"voting": ["beaglevote"]},
            )
            )r   
simpledistui  
            from setuptools import setup

            setup(
                name="complex-dist",
                version="0.1",
                description="Another testing distribution ☃",
                long_description="Another testing distribution ☃",
                author="Illustrious Author",
                author_email="illustrious@example.org",
                url="http://example.org/exemplary",
                packages=["complexdist"],
                setup_requires=["setuptools"],
                install_requires=["quux", "splort"],
                extras_require={"simple": ["simple.dist"]},
                entry_points={
                    "console_scripts": [
                        "complex-dist=complexdist:main",
                        "complex-dist2=complexdist:main",
                    ],
                },
            )
            __init__.pyzdef main(): return)r   complexdistz
            from setuptools import setup

            setup(
                name="headers.dist",
                version="0.1",
                description="A distribution with headers",
                headers=["header.h"],
            )
            z[bdist_wheel]
universal=1)r   	setup.cfgzheadersdist.pyzheader.hak  
            from setuptools import setup

            setup(
                name="testrepo",
                version="0.1",
                packages=["mypackage"],
                description="A test package with commas in file names",
                include_package_data=True,
                package_data={"mypackage.data": ["*"]},
            )
            )r"   z	1,2,3.txt)r"   data	mypackage)r   r&   ztestrepo-0.1.0u  
            from setuptools import setup

            setup(
                name="unicode.dist",
                version="0.1",
                description="A testing distribution ☃",
                packages=["unicodedist"],
                zip_safe=True,
            )
            )r"      åäö_日本語.py)r   unicodedistu   
            [metadata]
            name = utf8-metadata-dist
            version = 42
            author_email = "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>
            long_description = file: README.rst
               UTF-8 描述 説明)r$   z
README.rst)
dummy-distzsimple-distzcomplex-distzheaders-distzcommasinfilenames-distzunicode-distzutf8-metadata-distwin32u  
            from setuptools import Extension, setup

            setup(
                name="extension.dist",
                version="0.1",
                description="A testing distribution ☃",
                ext_modules=[
                    Extension(
                        name="extension", sources=["extension.c"], py_limited_api=True
                    )
                ],
            )
            z![bdist_wheel]
py_limited_api=cp32z5#define Py_LIMITED_API 0x03020000
#include <Python.h>)r   r$   extension.czabi3extension-distc                 L   t           j                            d          rt          dd          nt	          ddi          }|                                 t          |          }|                                 D ]\  }}t          |||           |	                                 |S )zHRun command in the same process so that it is easier to collect coverager   init)
stop_afterscript_namez%%build_meta%%)
ospathexistsr   r   parse_config_filesr	   itemssetattrfinalize_options)kwargsdist_objcmdattrvalues        _/home/feoh/.local/pipx/shared/lib/python3.11/site-packages/setuptools/tests/test_bdist_wheel.pybdist_wheel_cmdr>      s     7>>*%%	=	*0000=*:;<< 
 !!!
h

C||~~ " "eT5!!!!J    c                    |                      |          }t          j                            t          |         t          |                     |S )N)prefix)mktempjaracor2   buildEXAMPLESstr)tmp_path_factorynamebasedirs      r=   	mkexamplerJ      s?    %%d++G
KhtnS\\:::Nr?   session)scopec                   |                      d          }|                      d          }t          D ]}t          | |          }||z  }t          j                                                            |          5  t          t          |          t          |                    	                                 d d d            n# 1 swxY w Y   t          d |                    d          D                       S )NrD   dist	bdist_dirdist_dirc              3  4   K   | ]}t          |          V  d S N)rF   .0fnames     r=   	<genexpr>zwheel_paths.<locals>.<genexpr>   s(      AA#e**AAAAAAr?   z*.whl)rB   rE   rJ   rC   r2   DirectoryStackcontextr>   rF   runsortedglob)rG   
build_baserQ   rH   example_dir	build_dirs         r=   wheel_pathsr`      s2   !((11J&&v..H T T 0$77%	[''))11+>> 	T 	Tc)nns8}}MMMQQSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T AA(--*@*@AAAAAAs   :>CC	C	c                "    t          | d          S )Nr*   )rJ   )rG   s    r=   
dummy_distrb      s    %|444r?   c                    t          d | D                       }t          |                                          D ]}d|j        vsJ dS )z0Make sure entry point scripts are not generated.c              3  "   K   | ]
}d |v |V  dS )complex_distN rU   r2   s     r=   rW   z"test_no_scripts.<locals>.<genexpr>   ,      GG$0F0F0F0F0F0FGGr?   z.data/scripts/N)nextr   infolistfilename)r`   r2   entrys      r=   test_no_scriptsrm      s_    GGGGGGGD'')) 6 6u~555556 6r?   c                    t          d | D                       }t          |          5 }|                    d          }d d d            n# 1 swxY w Y   d                                |v sJ d S )Nc              3  "   K   | ]
}d |v |V  dS )zunicode.distNrf   rg   s     r=   rW   z&test_unicode_record.<locals>.<genexpr>   rh   r?   z!unicode.dist-0.1.dist-info/RECORDr'   )ri   r   readencode)r`   r2   zfrecords       r=   test_unicode_recordrt      s    GGGGGGGD	 >"<==> > > > > > > > > > > > > > > !''))V333333s   AAAu   Metadata-Version: 2.1
Name: helloworld
Version: 42
Author-email: "John X. Ãørçeč" <john@utf8.org>, Γαμα קּ 東 <gama@utf8.org>


UTF-8 描述 説明
c                   |                      |           |dz  }|dz  }|                                 |dz                      t          d           |dz                                    G d dt
                    } |            }|                    ||           |d	z                      d          }d
|v sJ d|v sJ d|v sJ d S )Nzdummy_dist.egg-infozdummy_dist.dist-infozPKG-INFOutf-8encodingzdependency_links.txtc                  .    e Zd ZdZd Zed             ZdS );test_preserve_unicode_metadata.<locals>.simpler_bdist_wheelz1Avoid messing with setuptools/distutils internalsc                    d S rS   rf   selfs    r=   __init__zDtest_preserve_unicode_metadata.<locals>.simpler_bdist_wheel.__init__  s    Dr?   c                    g S rS   rf   r|   s    r=   license_pathszItest_preserve_unicode_metadata.<locals>.simpler_bdist_wheel.license_paths  s    Ir?   N)__name__
__module____qualname____doc__r~   propertyr   rf   r?   r=   simpler_bdist_wheelrz     sD        ??	 	 	 
	 	 
	 	 	r?   r   METADATAu"   Author-email: "John X. Ãørçeč"u   Γαμα קּ 東 r)   )chdirmkdir
write_textUTF8_PKG_INFOtouchr	   egg2dist	read_text)monkeypatchtmp_pathegginfodistinfor   cmd_objmetadatas          r=   test_preserve_unicode_metadatar     s   h..G00HMMOOOz%%mg%FFF%%,,...    k    "!##GWh''':%00'0BBH/8;;;;(**** H,,,,,,r?   c                b   |                     |            t          t          |          d                                           t	          d          5 }d t
          D             }t          |                                          t          |z  k    sJ 	 d d d            d S # 1 swxY w Y   d S )NTrP   	universal(dist/dummy_dist-1.0-py2.py3-none-any.whlc                    h | ]}d |z   S zdummy_dist-1.0.dist-info/rf   rT   s     r=   	<setcomp>z(test_licenses_default.<locals>.<setcomp>0  +     
 
 
49'%/
 
 
r?   )	r   r>   rF   rZ   r   DEFAULT_LICENSE_FILESsetnamelistDEFAULT_FILESrb   r   r   wflicense_filess        r=   test_licenses_defaultr   ,  s   j!!!c(mmt<<<@@BBB	;	<	< C
 
=R
 
 
 2;;==!!]]%BBBBBB	C C C C C C C C C C C C C C C C C Cs   AB$$B(+B(c                   |                      d                              dd           |                    |            t          t	          |          d                                           t          d          5 }dh}t          |                                          t          |z  k    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr$   z*[metadata]
license_file=licenses/DUMMYFILErv   rw   Tr   r   z"dummy_dist-1.0.dist-info/DUMMYFILE
joinpathr   r   r>   rF   rZ   r   r   r   r   r   s        r=   test_licenses_deprecatedr   6  s!   $$//5 0    j!!!c(mmt<<<@@BBB	;	<	< C=>2;;==!!]]%BBBBBBC C C C C C C C C C C C C C C C C Cs   ?3C  CCzconfig_file, config)r$   z-[metadata]
license_files=licenses/*
  LICENSE)r$   z,[metadata]
license_files=licenses/*, LICENSEr   )z2  license_files=['licenses/DUMMYFILE', 'LICENSE'])c                   |                      |                              |d           |                    |            t          t	          |          d                                           t          d          5 }d dD             }t          |                                          t          |z  k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrv   rw   Tr   r   c                    h | ]}d |z   S r   rf   rT   s     r=   r   z)test_licenses_override.<locals>.<setcomp>U  r   r?   >   r   r   r   )rb   r   r   config_fileconfigr   r   s          r=   test_licenses_overrider   C  s0    $$///IIIj!!!c(mmt<<<@@BBB	;	<	< C
 
=U
 
 
 2;;==!!]]%BBBBBB	C C C C C C C C C C C C C C C C C Cs   ?<C		CCc                   |                      d                              dd           |                    |            t          t	          |          d                                           t          d          5 }t          |                                          t          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr$   z[metadata]
license_files=
rv   rw   Tr   r   r   )rb   r   r   r   s       r=   test_licenses_disabledr   [  s   $$//& 0    j!!!c(mmt<<<@@BBB	;	<	< 32;;==!!]222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   ?-B::B>B>c                >   |                     |            t          t          |          dd                                           t	          d          5 }t          |                                          }d|v sJ d|v sJ 	 d d d            d S # 1 swxY w Y   d S )N2TrP   build_numberr   z*dist/dummy_dist-1.0-2-py2.py3-none-any.whlr   r   )r   r>   rF   rZ   r   r   r   )rb   r   r   r   	filenamess        r=   test_build_numberr   e  s    j!!!c(mm#NNNRRTTT	=	>	> @"&&	0I====2i?????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   .BBBa&  #include <Python.h>

static PyMethodDef methods[] = {
  { NULL, NULL, 0, NULL }
};

static struct PyModuleDef module_def = {
  PyModuleDef_HEAD_INIT,
  "extension",
  "Dummy extension module",
  -1,
  methods
};

PyMODINIT_FUNC PyInit_extension(void) {
  return PyModule_Create(&module_def);
}
u   from __future__ import annotations

from setuptools import Extension, setup

setup(
    name="extension.dist",
    version="0.1",
    description="A testing distribution ☃",
    ext_modules=[Extension(name="extension", sources=["extension.c"])],
)
zEonce:Config variable '.*' is unset.*, Python ABI tag may be incorrectc                   |                     d          }|dz                      t          d           |dz                      t          d           |                    d          }|                    d          }|                     |           t          t          |          t          |                                                     d	S )
z=Test that building a binary wheel with the limited ABI works.extension_distr   rv   rw   r,   rD   rN   rO   N)	rB   r   EXTENSION_SETUPPYEXTENSION_EXAMPLEr   r   r>   rF   rZ   )r   r   rG   
source_dirr_   rQ   s         r=   test_limited_abir     s    
 "(()9::J*(():W(MMM-++,=+PPP!!'**I  ((Hj!!!c)nns8}}EEEIIKKKKKr?   c                   t          |                    d                    }t          j        t          |           |           |                    |           t          j        |          D ]H\  }}}|D ]?}t          j        t
          j        	                    ||          t          j                   @It                                                       d S )Ndummy)rF   r   shutilcopytreer   r1   walkchmodr2   joinstatS_IREADr>   rZ   )rb   r   r   rI   root_dirsfilesrV   s           r=   test_build_from_readonly_treer     s    (##G,,--G
OC
OOW---g !gg.. > >eU 	> 	>EHRW\\$..====	> r?   zoption, compress_type)idsc                l   |                     |            t          t          |          d|                                           t	          d          5 }t          |                                          }d|v sJ d|v sJ |j        D ]}|j        |k    sJ 	 d d d            d S # 1 swxY w Y   d S )NT)rP   r   compressionr   r   r   )	r   r>   rF   rZ   r   r   r   filelistcompress_type)rb   r   r   optionr   r   r   zinfos           r=   test_compressionr     s    j!!!c(mmtPPPTTVVV	;	<	< 8&&	0I====2i????[ 	8 	8E&-77777	8	8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   AB))B-0B-c                    | D ]c}t          |          5 }t          d |j        D                       }|                    |          }d|vsJ 	 d d d            n# 1 swxY w Y   dd S )Nc              3  N   K   | ] }|j                             d           |V  !dS )WHEELN)rk   endswith)rU   fns     r=   rW   z.test_wheelfile_line_endings.<locals>.<genexpr>  s7      WWB9M9Mg9V9VWRWWWWWWr?      )r   ri   r   rp   )r`   r2   r   	wheelfilewheelfile_contentss        r=   test_wheelfile_line_endingsr     s     3 3T]] 	3bWW"+WWWWWI!#!3!3 222222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3s   :AA	"A	c                >   |                     dd           |                    |            t          t          |          dd                                           t          d          5 }|j        D ]}|j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NSOURCE_DATE_EPOCH02aTr   z+dist/dummy_dist-1.0-2a-py2.py3-none-any.whl)i     r   r   r   r   )setenvr   r>   rF   rZ   r   r   	date_time)rb   r   r   r   r   s        r=   test_unix_epoch_timestampsr     s    *C000j!!!c(mm$$OOOSSUUU	>	?	? <2[ 	< 	<E?&;;;;;;	<< < < < < < < < < < < < < < < < < <s   ,BBBc                    |                      t          dd            |                      t          dd            t                      dk    sJ d S )Ninterpreter_namec                     dS )Ncprf   rf   r?   r=   <lambda>z*test_get_abi_tag_windows.<locals>.<lambda>      $ r?   get_config_varc                    dS )Nzcp313-win_amd64rf   xs    r=   r   z*test_get_abi_tag_windows.<locals>.<lambda>  s    ?P r?   cp313r6   r   	sysconfigr
   r   s    r=   test_get_abi_tag_windowsr     sU    0,,???	#35P5PQQQ==G######r?   c                    |                      t          dd            |                      t          dd            t                      dk    sJ d S )Nr   c                     dS Npprf   rf   r?   r=   r   z+test_get_abi_tag_pypy_old.<locals>.<lambda>  r   r?   r   c                    dS )Nzpypy36-pp73rf   r   s    r=   r   z+test_get_abi_tag_pypy_old.<locals>.<lambda>  s    } r?   pypy36_pp73r   r   s    r=   test_get_abi_tag_pypy_oldr     sU    0,,???	#35L5LMMM==M))))))r?   c                    |                      t          dd            |                      t          dd            t                      dk    sJ d S )Nr   c                    dS )Nzpypy37-pp73-darwinrf   r   s    r=   r   z+test_get_abi_tag_pypy_new.<locals>.<lambda>      ?S r?   r   c                     dS r   rf   rf   r?   r=   r   z+test_get_abi_tag_pypy_new.<locals>.<lambda>  r   r?   pypy37_pp73r6   r   r   r
   r   s    r=   test_get_abi_tag_pypy_newr     sU    	#35S5STTT0,,???==M))))))r?   c                    |                      t          dd            |                      t          dd            t                      dk    sJ d S )Nr   c                    dS )Nz"graalpy231-310-native-x86_64-linuxrf   r   s    r=   r   z*test_get_abi_tag_graalpy.<locals>.<lambda>  s    /S r?   r   c                     dS )Ngraalpyrf   rf   r?   r=   r   z*test_get_abi_tag_graalpy.<locals>.<lambda>  s    ) r?   graalpy231_310_nativer   r   s    r=   test_get_abi_tag_graalpyr    sa    #%S%S   02C2CDDD==3333333r?   c                    |                      t          dd            |                      t          dd            t                      dk    sJ d S )Nr   c                    dS )Nzunknown-python-310rf   r   s    r=   r   z+test_get_abi_tag_fallback.<locals>.<lambda>  r   r?   r   c                     dS )Nzunknown-pythonrf   rf   r?   r=   r   z+test_get_abi_tag_fallback.<locals>.<lambda>  s    :J r?   unknown_python_310r   r   s    r=   test_get_abi_tag_fallbackr    sX    	#35S5STTT02J2JKKK==0000000r?   c                t    |                     |            t          d                                           dS )z>Ensure building on platforms with a space in the name succeed.zisilon onefs)	plat_nameN)r   r>   rZ   )rb   r   s     r=   test_platform_with_spacer    s9    j!!!n---1133333r?   c                <   |dz  }|                                  |                    d          }|                                 |                    t          j                   t          j                            d          rdnd}t          j	        dk     r9t          t                    }t          j        ||           |j        |k    sJ n8t          t                    }t          j        ||	           |j        |k    sJ |                                rJ d
S )zVerify onerr works as expectedwith_readonlyfile.txtwinr   r   )      )side_effect)onerror)onexcN)r   r   r   r   r   r   sysplatform
startswithversion_infor   r   r   rmtree
call_countr   is_dir)r   r   rP   	some_fileexpected_countcount_remove_readonlycount_remove_readonly_excs          r=   test_rmtree_readonlyr#    s    ?*IOO"":..IOOOODL!!!,11%88?QQaN
'!! $ A A Ai)>????$/>AAAAA$(5H$I$I$I!i'@AAAA(3~EEEE!!!!!!!r?   c                   |                      |           ddddd}|                                D ]Q\  }}t          |dd          5 }|                    t	          |                     ddd           n# 1 swxY w Y   Rt                                                       d	}t          j        	                    |          sJ t          t          |                                                    }d
D ]}||v sJ 	dD ]}	|	|vsJ 	dS )z
    Setuptools allow authors to set PEP 440's local version segments
    using ``egg_info.tag_build``. This should be reflected not only in the
    ``.whl`` file name, but also in the ``.dist-info`` and ``.data`` dirs.
    See pypa/setuptools#3997.
    z]
            from setuptools import setup
            setup(headers=["hello.h"])
            z
            [metadata]
            name = test
            version = 1.0

            [options.data_files]
            hello/world = file.txt

            [egg_info]
            tag_build = +what
            tag_date = 0
            r   )r   r$   r  zhello.hwrv   rw   Nz#dist/test-1.0+what-py3-none-any.whl)z"test-1.0+what.data/headers/hello.hz,test-1.0+what.data/data/hello/world/file.txtz test-1.0+what.dist-info/METADATAztest-1.0+what.dist-info/WHEEL)ztest.data/headers/hello.hz'test-1.0.data/data/hello/world/file.txtztest.dist-info/METADATAztest-1.0.dist-info/WHEEL)r   r5   openwriter   r>   rZ   r1   r2   r3   r   r   r   )
r   r   r   filecontentfh
wheel_pathentriesexpectednot_expecteds
             r=   test_data_dir_with_tag_buildr/    s    h % E(  ( (g$g... 	("HHXg&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(  7J7>>*%%%%%'*%%..0011G # # 7""""" + + 7*****+ +s   #A77A;	>A;	zreported,expected)zlinux-x86_64
linux_i686)zlinux-aarch64linux_armv7lLinuxz!Only makes sense to test on Linux)reasonc                    |                     t          dd            t          j                    }t	          |          }| |_        d|_        |                                \  }}}||k    sJ d S )Ncalcsizec                    dS )N   rf   r   s    r=   r   z'test_platform_linux32.<locals>.<lambda>G  s    a r?   F)r6   struct
setuptoolsr   r	   r  root_is_pureget_tag)reportedr-  r   rN   r:   _actuals          r=   test_platform_linux32r?  ?  sr     
KK888"$$D
d

CCMC;;==LAq&Xr?   returnNonec                   d
d}t          t                    5  |                     t          j        d           d d d            n# 1 swxY w Y   |                     t          d|           t          j        t          d          5  dd l
}d d d            n# 1 swxY w Y   |                     t          j        d	           dd l}d S )NrH   rF   c                \    | dk    rt          d|            t          j        | g|R i |S )NctypeszNo module named )ModuleNotFoundError	importlib
__import__)rH   argsr8   s      r=   _fake_importz$test_no_ctypes.<locals>._fake_importQ  sE    8%&?&?&?@@@#D:4:::6:::r?   zwheel.macosx_libfilerG  zNo module named ctypes)matchr   zsetuptools.command.bdist_wheel)rH   rF   )r   KeyErrordelitemr  modulesr6   builtinspytestraisesrE  wheel.macosx_libfilesetuptools.command.bdist_wheel)r   rI  wheelr9  s       r=   test_no_ctypesrT  P  sd   ; ; ; ; 
(		 A ACK)?@@@A A A A A A A A A A A A A A A ,===	*2J	K	K	K $ $####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $
 %EFFF))))))s#   !AA
A
BB B)r@  rA  )R
__future__r   rN  rF  os.pathr1   r  r   r   r8  r  r   
contextlibr   inspectr   unittest.mockr   zipfiler   jaraco.pathrC   rO  r9  distutils.corer   rR  r	   r
   r   r   setuptools.distr   	packagingr   r   r   OTHER_IGNORED_FILESSETUPPY_EXAMPLEdictfromkeysrE   r>   rJ   fixturer`   rb   rm   rt   r   r   r   r   markparametrizereplacer   r   r   r   r   filterwarningsr   r   listsupported_compressionsr5   r   r   r   r   r   r   r  r  r  r#  r/  skipifsystemr?  rT  rf   r?   r=   <module>rl     sK   " " " " " "           



                                      $ $ $ $ $ $            ) ( ( ( ( (              $ "%  ---0CCR
H
H H	
 
    H
 
2 &';<5 : H	
 
 2 $ H
 
 $&R88
 

 -,
' 0 H

 
 (*"EE " X
 
 , Su up <7 H
 
  :O%& &H!",     i   	B 	B ! 	B 5 5 56 6 64 4 4- - -8C C C
C 
C 
C HF##I 	
	 C C C3 3 3@ @ @ &  K L L L
 
 
 D	+	1	1	3	344[/00   
8 8 
83 3 3< < <$ $ $* * ** * *4 4 41 1 14 4 4" " ".4+ 4+ 4+n #%FG  HO )L     	 * * * * * *r?   