
    (&h                     ,   d dl Z d dl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	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) dZ*dZ+e*e+z  Z,d	Z-d
Z.e-e.z   Z/ ej0        ddddd          Z1 ej0        d e2d                    Z3 ej0        ddd          e3dz  z   Z4 ej0        ddde*z            e3dz  z   Z5 ej0        ddde+z            e3dz  z   Z6 ej0        ddde,z            e3dz  z   Z7 ej0        dddd          e4z   Z8 ej0        ddde*z  d          e5z   Z9 ej0        ddde+z  d          e6z   Z: ej0        ddde,z  d          e7z   Z; ej0        dddd          e4z   Z< ej0        ddde*z  d          e5z   Z= ej0        ddde+z  d          e6z   Z> ej0        ddde,z  d          e7z   Z? ej0        dddd          e8z   Z@ ej0        ddde*z  d          e9z   ZA ej0        ddde+z  d          e:z   ZB ej0        ddde,z  d          e;z   ZCdZD e jE        dddgdd          ZF e jE        ddddgdddidd          ZG e jE        d ddd!d"gdd#d$iddd%d!d&gd'dgd(d&gd)dggdd&d$d*ddd+d,d&gd-d&gd-dgd,dgd,d&gggdd.d/id$d*dgd0d          ZH e	jI        dd          ZJ e	jI        d!d"g           e	jK        d!d&gd'dgd(d&gd)dgg           e	jL        d,d&gd-d&gd-dgd,dgd,d&gg          gZMd1 ZNd2 ZOejP        Q                    d3dd4eRd5fd6d7d8eSd9fd7d4ed9fd7d:eTd;fd<d=d4ed>fd=d8eSd>fd?d@d8eSdAfdBdCd4edDfdCd8eSdDfg          dE             ZUejP        V                    e	jW        dFk     dGH          ejP        Q                    dIg dJ          dK                         ZXejP        V                    e	jW        dFk    dLH          dM             ZYejP        Q                    dNe          dO             ZZejP        Q                    dPdQ          dR             Z[ejP        Q                    dPdS          dT             Z\dU Z]dV Z^dW Z_ejP        Q                    dXdd4eRd5fd6d7d4edYfd7d8eSdYfd7d:eTd;fdZd[d4ed\fd[d8eSd\feDd]ddfeDd4ed^feDd8eSd^fg          d_             Z`ejP        V                    e	jW        dFk     dGH          ejP        Q                    d`dadbeDdcfg          dd                         ZaejP        V                    e	jW        dFk    dLH          de             ZbejP        Q                    dNe          ejP        Q                    dfdgdhg          ejP        Q                    did dg          dj                                     ZcejP        Q                    dNe          ejP        Q                    dfdgdhg          ejP        Q                    did dg          dk                                     ZdejP        V                    e	jW        dlk     dmH          ejP        Q                    dNe          ejP        Q                    dfdgdhg          ejP        Q                    did dg          dn                                                 ZeejP        V                    e	jW        dlk     dmH          ejP        Q                    dNe          ejP        Q                    dfdgdhg          ejP        Q                    did dg          do                                                 ZfejP        Q                    dN e             e             e             e
            f          dp             ZgejP        Q                    dqdr          ds             Zhdt Zidu Zjdv Zkdw Zldx Zmdy Zndz Zod{ ZpejP        Q                    dPg d|          d}             Zqd~ Zrd ZsejP        Q                    dN edd            ed d          g          d             ZtejP        Q                    dN edd            ed d          g          d             ZuejP        Q                    dN ed d d           eddg           eg d           eg d           eg dg dg           eddg           e eddg           eddg          g           ee) eg d          g           e
e' ed d d          g           e
 e
 ed d d          g          g           ed d ejv        fdg           ed d ejv        fdddg           e
 ed d            ed d d          g          g          d             Zwd Zxd Zyd ZzejP        V                    e	jW        dlk     dmH          d             Z{d Z|d Z}ejP        V                    e	jW        dlk     dmH          d             Z~d Zd Zd Zd Zd Zd Zd Zd Zd ZejP        V                    e	jW        dk     dH          d             ZejP        V                    e	jW        dlk     dmH          d             ZejP        V                    e	jW        dk     dH          d             ZejP        V                    e	jW        dk    dH          d             ZejP        Q                    d ej        ee4d           ej        ee4d           ej        ee4d           ej        ee4d           ej        e!e8d           ej        e#e8d           ej        e"e8d           ej        e$e8d           ej         e	j        eg          e<d           ej         e	j        eg          e<d           ej         e	j        eg          e<d           ej         e	j        eg          e<d           ej         e	j        e!g          e@d           ej         e	j        e#g          e@d           ej         e	j        e"g          e@d           ej         e	j        e$g          e@d          g          d             ZejP        Q                    d ej        ee5d           ej        ee5d           ej        e#e9d           ej        e$e9d           ej         e	j        eg          e=d           ej         e	j        eg          e=d           ej         e	j        e#g          eAd           ej         e	j        e$g          eAd          g          d             ZejP        V                    e	jW        dlk     dmH          ejP        Q                    d ej        ee6d           ej        e"e:d           ej         e	j        eg          e>d           ej         e	j        e"g          eBd          g          d                         ZejP        V                    e	jW        dlk     dmH          ejP        Q                    d ej        ee7d           ej        e$e;d           ej         e	j        eg          e?d           ej         e	j        e$g          eCd          g          d                         ZejP        Q                    d ej        ee4d           ej        e!e8d           ej         e	j        eg          e<d           ej         e	j        e!g          e@d          g          d             ZejP        Q                    d ej        e4d dd           ej        e5d dd           ej        e8ddd           ej        e9ddd           ej        e<ddd           ej        e=ddd           ej        e@ddd           ej        eAddd          g          d             ZejP        V                    e	jW        dlk     dmH          ejP        Q                    d ej        e6d dĬ           ej        e:ddŬ           ej        e>ddƬ           ej        eBddǬ          g          dȄ                         ZejP        V                    e	jW        dlk     dmH          ejP        Q                    d ej        e7d dɬ           ej        e;ddʬ           ej        e?ddˬ           ej        eCdd̬          g          d̈́                         Zd΄ ZejP        Q                    dNee'efz             dτ             ZejP        Q                    dNe          dЄ             ZejP        V                    e	jW        dlk     dmH          ejP        Q                    dNe          dф                         ZejP        V                    e	jW        dlk     dmH          ejP        Q                    dNe          d҄                         ZejP        Q                    dNee'efz             dӄ             ZejP        V                    e	jW        dk     dլH          ejP        Q                    d ej        eFeJd׬           ej        eGeJdج           ej        eH e	j        eM          d٬           ej        eFgdz  eJgdz  dڬ           ej        ddd۬           ej        eFdgeJdgdܬ          g          d݄                         ZejP        V                    e	jW        dk     dլH          dބ             ZejP        V                    e	jW        dk     dլH          d߄             ZejP        V                    e	jW        dk     dլH          d             ZejP        V                    e	jW        dk     dլH          d             ZejP        V                    e	jW        dk     dH          ejP        Q                    d ej        eFeJd׬           ej        eFgdz  eJgdz  dڬ           ej        ddd۬           ej        eFdgeJdgdܬ          g          d                         ZejP        V                    e	jW        dk     dH          ejP        Q                    dg d          d                         ZejP        V                    e	jW        dk     dH          d             ZejP        V                    e	jW        dk     dH          ejP        Q                    dNe e	j        ee%g           e	j        ee%g           e	j         e	j        eg          e%g          g          d                         ZejP        V                    e	jW        dk     dլH          ejP        Q                    dNe          d                         ZdS )    N)nullcontext)	GeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)UnsupportedGEOSVersionError)assert_geometries_equal)	all_typesall_types_mall_types_zall_types_zmempty_pointempty_point_mempty_point_zempty_point_zm)equal_geometries_abnormally_yield_unequalmulti_point_emptymulti_point_empty_mmulti_point_empty_zmulti_point_empty_zmpointpoint_mpoint_zpoint_zm	polygon_zl        i   @  i  <BI2d         ?z<dnanz<BI         z<BII   Z01030000000100000002000000507daec600b1354100de02498e5e3d41306ea321fcb03541a011a53d905e3d41r   gffffff_@g333333$@)typecoordinatesindentFeaturenamezDinagat Islands)r+   geometry
propertiesFeatureCollectiong     Y@g333333?prop0value0r   g        g     Y@g      Z@g     @Z@)prop1r4   r   g      Y@g     @Y@thisthat)r+   featuresc                      t          j        dd          } t          j        d          }t          ||            t          j        d          }t          ||            d S )Nr#   POINT (1 1)s   POINT (1 1))shapelypointsfrom_wktr   expectedactuals     P/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/test_io.pytest_from_wktrC      sY    ~a##Hm,,FFH---n--FFH-----    c                  2    t          j        d           J d S N)r<   r>    rD   rB   test_from_wkt_nonerH          D!!)))))rD   zwkt, on_invalid, error, messageraise!Expected bytes or string, got int) ignoreNNrL   warnz+Expected word but encountered end of streamunsupported_optionnot a valid option)LINESTRING (0 0)rM   NNrQ   zmust contain 0 or >1 elements)NOT A WKT STRINGrM   NNrR   zUnknown type: 'NOT')POLYGON ((0 0, 0 0))rM   NNrS   zInvalid number of pointsc                 <   |dk    rt          j        ||          }nH|dk    rt          j        ||          }n+|dk    rt                      }nt          j        ||          }|5  t	          j        | |          }|J 	 d d d            d S # 1 swxY w Y   d S NrN   matchrJ   rM   
on_invalid)pytestwarnsraisesr   r<   r>   )wktrY   errormessagehandlerresults         rB   test_from_wkt_on_invalidrb      s    & V,uG444	w		-W555	x		---W555	  !#*===~~~~                    (BBB)r'      r   z/on_invalid='fix' not supported with GEOS < 3.11)reasonzwkt, expected_wkt)	)rL   N)rQ   N)rR   N)rS   N)zPOLYGON ((0 0, 1 1, 0 1))zPOLYGON ((0 0, 1 1, 0 1, 0 0)))zPOLYGON ((0 0, 1 1))zPOLYGON ((0 0, 1 1, 0 0)))z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 0 0)))N)z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1)))z8MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1, 0 0))))zIGEOMETRYCOLLECTION (POLYGON ((5 5, 6 6, 6 5, 5 5)), POLYGON ((0 0, 0 0)))Nc                 f    t          j        | d          }t          j        |          |k    sJ dS z[Tests for on_invalid="fix".

    Geometries that cannot be fixed are returned as None.
    fixrX   N)r<   r>   to_wkt)r]   expected_wktgeoms      rB   test_from_wkt_on_invalid_fixrl      s:    : CE222D>$<//////rD   z/on_invalid='fix' is supported with GEOS >= 3.11c                      t          j        t          d          5  t          j        dd          } ddd           dS # 1 swxY w Y   dS )/on_invalid="fix" not supported with GEOS < 3.110on_invalid='fix' only supported for GEOS >= 3.11rV   rL   rh   rX   N)rZ   r\   
ValueErrorr<   r>   _s    rB   -test_from_wkt_on_invalid_fix_unsupported_geosrs      s     
L
 
 
 3 3 RE2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3   A  AArk   c                    t          j        |           }t          j        |          }t          |           rDt	          j        t                    5  t          ||            d d d            d S # 1 swxY w Y   d S t          ||            d S rF   )r<   ri   r>   r   rZ   r\   AssertionErrorr   )rk   r]   rA   s      rB   test_from_wkt_all_typesrw      s    
.

Cc""F066 .]>** 	2 	2#FD111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	 -----s   A//A36A3r]   )POINT EMPTYzLINESTRING EMPTYzPOLYGON EMPTYzGEOMETRYCOLLECTION EMPTYc                    t          j        |           }t          j        |                                          sJ t          j        |                                          sJ t          j        |          | k    sJ d S rF   )r<   r>   is_geometryallis_emptyri   )r]   rk   s     rB   test_from_wkt_emptyr}      s{    
 C  Dt$$((*****D!!%%'''''>$3&&&&&&rD   )zCIRCULARSTRING(1 3,2 4,3 1)z4COMPOUNDCURVE(CIRCULARSTRING(1 3,2 4,3 1),(3 1,0 0))zCURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)),CIRCULARSTRING(1.7 1,1.4 0.4,1.6 0.4,1.6 0.5,1.7 1))zhMULTICURVE((0 0,5 5),COMPOUNDCURVE((-1 -1,0 0),CIRCULARSTRING(0 0,1 1,2 0)),CIRCULARSTRING(4 0,4 4,8 4))zMULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0,4 0,4 4,0 4,0 0),(1 1,3 3,3 1,1 1)),((10 10,14 12,11 10,10 10),(11 11,11.5 11,11 11.5,11 11)))c                 ^   t           j        dk    rJt          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S t          j        t           j        j        d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )Nr'      r   4Nonlinear geometry types are not currently supportedrV   zUnknown type)r<   geos_versionrZ   r\   NotImplementedErrorr>   errorsr   r]   s    rB   #test_from_wkt_nonlinear_unsupportedr      s7    z))]H
 
 
 	" 	" S!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ]7>7~NNN 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"#   AAA B""B&)B&c                      t          j        dd          } t          j        t                    }t	          ||            d S Nr#   )r<   r=   from_wkbPOINT11_WKBr   r?   s     rB   test_from_wkbr     s9    ~a##Hk**FFH-----rD   c                      t          j        dd          } t          j        d          }t          ||            t          j        d          }t          ||            d S )Nr#   *0101000000000000000000F03F000000000000F03Fs*   0101000000000000000000F03F000000000000F03F)r<   r=   r   r   r?   s     rB   test_from_wkb_hexr     s[    ~a##HJKKFFH---KLLFFH-----rD   c                  2    t          j        d           J d S rF   )r<   r   rG   rD   rB   test_from_wkb_noner   $  rI   rD   zwkb, on_invalid, error, messagezUnexpected EOF parsing WKB)       rM   NNr   ParseExceptionrM   z4Points of LinearRing do not form a closed linestringc                 <   |dk    rt          j        ||          }nH|dk    rt          j        ||          }n+|dk    rt                      }nt          j        ||          }|5  t	          j        | |          }|J 	 d d d            d S # 1 swxY w Y   d S rU   )rZ   r[   r\   r   r<   r   )wkbrY   r^   r_   r`   ra   s         rB   test_from_wkb_on_invalidr   )  s    6 V,uG444	w		-W555	x		---W555	  !#*===~~~~                 rc   zwkb, expected_wkt)rD   N)r   Nz[POLYGON ((1421568.7761 1924750.2852, 1421564.1314 1924752.2408, 1421568.7761 1924750.2852))c                 f    t          j        | d          }t          j        |          |k    sJ dS rg   )r<   r   ri   )r   rj   rk   s      rB   test_from_wkb_on_invalid_fixr   R  s:    ( CE222D>$<//////rD   c                      t          j        t          d          5  t          j        dd          } ddd           dS # 1 swxY w Y   dS )rn   ro   rV   rD   rh   rX   N)rZ   r\   rp   r<   r   rq   s    rB   -test_from_wkb_on_invalid_fix_unsupported_geosr   j  s     
L
 
 
 4 4 SU3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4rt   use_hexFT
byte_orderc                     t          j        |           t           j        j        k    rt	          j        d           t          j        | ||          }t          j        |          }t          ||            d S Nz$Linearrings are not preserved in WKBhexr   	r<   get_type_idGeometryType
LINEARRINGrZ   skipto_wkbr   r   rk   r   r   r   rA   s        rB   test_from_wkb_all_typesr   v  m     4  G$8$CCC:;;;
.7z
B
B
BCc""FFD)))))rD   c                     t          j        |           t           j        j        k    rt	          j        d           t          j        | ||          }t          j        |          }t          ||            d S r   r   r   s        rB   test_from_wkb_all_types_zr     r   rD   r'      r   z,M coordinates not supported with GEOS < 3.12c                     t          j        |           t           j        j        k    rt	          j        d           t          j        | ||          }t          j        |          }t          ||            d S r   r   r   s        rB   test_from_wkb_all_types_mr     m     4  G$8$CCC:;;;
.7z
B
B
BCc""FFD)))))rD   c                     t          j        |           t           j        j        k    rt	          j        d           t          j        | ||          }t          j        |          }t          ||            d S r   r   r   s        rB   test_from_wkb_all_types_zmr     r   rD   c                 *   t          j        |           }t          j        |          } t          j        |                                           sJ t          j        |                                           sJ t          j        |           |k    sJ d S rF   )r<   r   r   rz   r{   r|   )rk   r   s     rB   test_from_wkb_emptyr     s    
 .

CC  Dt$$((*****D!!%%'''''>$3&&&&&&rD   r   )r010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F01090000200E16000002000000010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F0102000000020000000000000000000840000000000000F03F00000000000000000000000000000000"  010A0000200E1600000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000005000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F9A9999999999F93F9A9999999999D93F9A9999999999F93F000000000000E03F333333333333FB3F000000000000F03F  010B000000030000000102000000020000000000000000000000000000000000000000000000000014400000000000001440010900000002000000010200000002000000000000000000F0BF000000000000F0BF0000000000000000000000000000000001080000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000000010800000003000000000000000000104000000000000000000000000000001040000000000000104000000000000020400000000000001040  010C00000002000000010A000000020000000108000000050000000000000000000000000000000000000000000000000010400000000000000000000000000000104000000000000010400000000000000000000000000000104000000000000000000000000000000000010200000004000000000000000000F03F000000000000F03F000000000000084000000000000008400000000000000840000000000000F03F000000000000F03F000000000000F03F01030000000200000004000000000000000000244000000000000024400000000000002C40000000000000284000000000000026400000000000002440000000000000244000000000000024400400000000000000000026400000000000002640000000000000274000000000000026400000000000002640000000000000274000000000000026400000000000002640c                 ^   t           j        dk    rJt          j        t          d          5  t          j        |            d d d            d S # 1 swxY w Y   d S t          j        t           j        j        d          5  t          j        |            d d d            d S # 1 swxY w Y   d S )Nr   r   rV   zUnknown WKB type)r<   r   rZ   r\   r   r   r   r   )r   s    rB   #test_from_wkb_nonlinear_unsupportedr     s8     z))]H
 
 
 	" 	" S!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" ]7>7?QRRR 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r   c                      t          j        dd          } t          j        |           }|dk    sJ t          j        | d          }|dk    sJ t          j        | dd          }|dk    sJ d S )	Nr#   r;   FtrimzPOINT (1.000000 1.000000)r'   )rounding_precisionr   zPOINT (1.000 1.000))r<   r=   ri   r   rA   s     rB   test_to_wktr     s    N1a  E^E""F]""""^E...F00000^EaeDDDF*******rD   c                  j   t          j        ddd          } t          j        |           dk    sJ t          j        | d          dk    sJ t          j        | d          dk    sJ t          j        | d          d	k    sJ t           j        d
k    rt          j        | d          dk    sJ d S d S )Nr#   r&   r'   POINT Z (1 2 3)output_dimensionPOINT (1 2)Told_3dPOINT (1 2 3)r   r(   )r<   r=   ri   r   r   s    rB   test_to_wkt_zr     s    N1a##E>%  $55555>%!444EEEE>%!4448IIIII>%---@@@@z))~ea888<MMMMM *)MMrD   c                  
   t          j        d          } t          j        | d          dk    sJ t           j        dk     rTt          j        |           dk    sJ t          j        | d          dk    sJ t          j        | d	          d
k    sJ d S t          j        |           dk    sJ t          j        | d          dk    sJ t          j        | d          dk    sJ t          j        | d	          dk    sJ d S )NzPOINT M (1 2 4)r&   r   r   r   zPOINT Z (1 2 4)r'   Tr   zPOINT (1 2 4)r(   r<   r>   ri   r   r   s    rB   test_to_wkt_mr     s)   .//E>%!444EEEEj((~e$$(99999~ea888<MMMMM~eD111_DDDDDD~e$$(99999~ea888<MMMMM~ea888<MMMMM~eD1115FFFFFFFrD   c                     t          j        d          } t          j        | d          dk    sJ t          j        | d          dk    sJ t           j        dk     r8t          j        |           dk    sJ t          j        | d	          d
k    sJ d S t          j        |           dk    sJ t          j        | d          dk    sJ t          j        | d	          dk    sJ d S )NzPOINT ZM (1 2 3 4)r&   r   r   r'   r   r   Tr   r   r(   zPOINT (1 2 3 4)r   r   s    rB   test_to_wkt_zmr     s   122E>%!444EEEE>%!4448IIIIIj((~e$$(99999~eD111_DDDDDD~e$$(<<<<<~ea888<PPPPP~eD1115FFFFFFFrD   c                  2    t          j        d           J d S rF   )r<   ri   rG   rD   rB   test_to_wkt_noner         >$'''''rD   c                      g d} t          j        |           }t          t          j        |                    | k    sJ d S )N)POINT Z EMPTYNPOLYGON Z EMPTY)r<   r>   listri   )	empty_wktempty_geomss     rB   test_to_wkt_array_with_empty_zr     sF    :::I"9--K{++,,	999999rD   c                  4   t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j                  5  t          j        t          d           d d d            d S # 1 swxY w Y   d S )Nr#      r   )rZ   r\   	TypeErrorr<   ri   r   r   rG   rD   rB   test_to_wkt_exceptionsr     s   	y	!	!  q               
w,	-	- 2 2uq11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   ;??$BBBc                  D    t          j        t                    dk    sJ d S )Nrx   )r<   ri   r   rG   rD   rB   test_to_wkt_point_emptyr   !  s#    >+&&-777777rD   )r   zLINESTRING Z EMPTYzLINEARRING Z EMPTYr   c                 ^    t          j        t          j        |                     | k    sJ d S rF   )r<   ri   r>   r   s    rB   test_to_wkt_empty_zr   %  s0     >'*3//00C777777rD   c                      t          j        t          t          g          } t          j        |                               d          sJ d S )Nz(POINT EMPTY, POINT (2 3)))r<   geometrycollectionsr   r   ri   endswith)
collections    rB   /test_to_wkt_geometrycollection_with_point_emptyr   2  sD    ,k5-ABBJ >*%%../KLLLLLLLrD   c                      t          j        t          t          g          } t           j        dk    rd}nd}t          j        |           |k    sJ d S )Nr   zMULTIPOINT (EMPTY, (2 3))zMULTIPOINT (EMPTY, 2 3))r<   multipointsr   r   r   ri   )rk   r@   s     rB   'test_to_wkt_multipoint_with_point_emptyr   9  sT    U344Dz)). ->$8++++++rD   g}Ô%ITc                 T    t          j        |            dt          |           vsJ d S )NException in WKT writer)r<   ri   reprrk   s    rB   test_to_wkt_large_float_okr   C  s1     N4$DJJ666666rD   \nTc                 T   t           j        dk    r=|                     t          j        t          j        |                               sJ d S t          j        t          d          5  t          j        |            d d d            n# 1 swxY w Y   dt          |           v sJ d S )Nr   z(WKT output of coordinates greater than.*rV   r   )	r<   r   equalsr>   ri   rZ   r\   rp   r   r   s    rB   test_to_wkt_large_floatr   J  s    z)){{7+GN4,@,@AABBBBBBB ]H
 
 
 	! 	! N4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! )DJJ666666s   )B

BBr   r   r   )r   r   r   )r   r   r#   r   r#   r   r   r   )r   )r   
   r   )r   r   r   r   r   )r   r#   r   r   c                     	 t          j        |            n;# t          $ r.}t          |                              d          sJ Y d }~nd }~ww xY wt          |            d S )Nz&WKT output of coordinates greater than)r<   ri   rp   str
startswithr   )rk   es     rB   #test_to_wkt_large_float_3d_no_crashr   X  s}    :Kt K K K1vv  !IJJJJJJJJJJKJJJJJs    
A$A

Ac                  \    t          j        t          ddd          d          dk    sJ d S )Nr   r   r&   r   POINT (0 0))r<   ri   r   rG   rD   rB   test_to_wkt_large_float_skip_zr   |  s4    >%1e,,qAAA]RRRRRRrD   c                  x    t          j        t          dd          d                              d          sJ d S )Nr   r   Fr   zPOINT ()r<   ri   r   r   rG   rD   rB   test_to_wkt_large_float_no_trimr    s;     >%q//666AA)LLLLLLLrD   c                  n    t          t                    dk    sJ t          t                    dk    sJ d S )Nz<POINT (2 3)>z<POINT Z (2 3 4)>)r   r   r   rG   rD   rB   	test_reprr    s7    ;;/))))==///////rD   c                  n    t          t                    dk    sJ t          t                    dk    sJ d S )Nz<POINT M (2 3 5)>z<POINT ZM (2 3 4 5)>)r   r   r   rG   rD   rB   test_repr_mr    s:    
 ==/////>>3333333rD   c                      t          j        t          j        d          t          j        d                    } t	          |           }t          |          dk    sJ |                    d          sJ d S )Nr!   P   z...>)r<   linestringsnparanger   lenr   )rk   representations     rB   test_repr_max_lengthr    sh    ry	$@@D$ZZN~"$$$$""6*******rD   c                  :    t          t                    dk    sJ d S )Nz<POINT Z EMPTY>)r   r   rG   rD   rB   test_repr_point_z_emptyr    s"    "3333333rD   c                  n    t          t                    dk    sJ t          t                    dk    sJ d S )Nz<POINT M EMPTY>z<POINT ZM EMPTY>)r   r   r   rG   rD   rB   test_repr_point_m_emptyr    s>    
 "33333#5555555rD   c                  v    t          j        dd          } t          j        | d          }|t          k    sJ d S )Nr#   r   )r<   r=   r   r   r   s     rB   test_to_wkbr    s>    N1a  E^Ea000F[      rD   c                      t          j        dd          } t          j        | dd          }d}d}d}|||z   d|z  z   k    sJ d S )Nr#   Tr   0101000000000000000000F03Fr&   r<   r=   r   )r   rA   le
point_typecoords        rB   test_to_wkb_hexr    s\    N1a  E^Et:::F	BJER*_q5y0000000rD   c                     t          j        ddd          } t          j        ddddd          }t          j        dddt          z  ddd          }t          j        | d	          |k    sJ t          j        | dd
          |k    sJ t          j        | dd
          |k    sJ t           j        dk    rt          j        | dd
          |k    sJ d S d S )Nr#   r&   r'   r"   r$          @<BI3d      @r  r   r   r   r(   )r<   r=   structpackEWKBZr   r   )r   expected_wkbexpected_wkb_zs      rB   test_to_wkb_zr(    s    N1a##E;w1c377L[!QYS#FFN>%A....@@@@>%!BBBlRRRR>%!BBBnTTTTz))~eaAFFF.XXXX *)XXrD   c            
         t          j        t          j        dddt          z  ddd                    } t          j        ddddd          }t          j        dddt          z  ddd          }t           j        dk     r|}t          j        | d          |k    sJ t          j        | d	d
          |k    sJ t          j        | dd
          |k    sJ t           j        dk    rt          j        | dd
          |k    sJ d S d S )Nr   r#   r$   r        @r"   r   r  r&   r"  r'   r(   )r<   r   r#  r$  EWKBMr   r   )r   r&  expected_wkb_ms      rB   test_to_wkb_mr-    s   V[!QYS#NNOOE;w1c377L[!QYS#FFNj((%>%A....@@@@>%!BBBlRRRR>%!BBBnTTTTz))~eaAFFF.XXXX *)XXrD   c                  R   t          j        t          j        dddt          z  dddd                    } t          j        ddddd          }t          j        dddt
          z  ddd          }t          j        dddt          z  dddd          }t           j        d	k     r|}t          j        | d
          |k    sJ t          j        | dd          |k    sJ t          j        | dd          |k    sJ t           j        d	k    rt          j        | dd          |k    sJ d S d S )Nz<BI4dr#   r$   r  r!  r*  r"   r   r   r  r&   r"  r'   r(   )r<   r   r#  r$  EWKBZMr%  r   r   )r   r&  r'  expected_wkb_zms       rB   test_to_wkb_zmr1    s5   V[!QZc3PSTTUUE;w1c377L[!QYS#FFNk'1a&j#sCMMOj(((>%A.../AAAA>%!BBBlRRRR>%!BBBnTTTTz))N51CCCVVVV *)VVrD   c                  2    t          j        d           J d S rF   )r<   r   rG   rD   rB   test_to_wkb_noner3    r   rD   c                     t          j        t                    5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j                  5  t          j        t          d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        t          d           d d d            d S # 1 swxY w Y   d S )Nr#   r   r   otherflavor)rZ   r\   r   r<   r   r   r   rp   rG   rD   rB   test_to_wkb_exceptionsr8    s   	y	!	!  q               
w,	-	- 2 2uq11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
z	"	" . .uW----. . . . . . . . . . . . . . . . . .s1   ;??$BBB0CC Cc                      t          j        dd          } d}d}d}d}t          j        | d          ||z   d|z  z   k    sJ t          j        | d	          ||d d d
         z   d|d d d
         z  z   k    sJ d S )Nr$          s      s         ?r#   r  r&   r   r  )r   ber  r  r  s        rB   test_to_wkb_byte_orderr>    s    N3$$E	B	B$J,E>%A..."z/AI2MMMMMu+++rJttt4D/Dq5QUQUSUQU;/VVVVVVVrD   c                     d} d}t          j        |           }t          j        |d          dk    sJ t          j        |dd          |k    sJ t          j        |ddd          | k    sJ t          j        dd          }t          j        |t          j        d	                    }t          j        |dd
          }t          j        |dd         d          	                                d	k    sJ d S )N201010000200400000000000000000000000000000000000000*010100000000000000000000000000000000000000Tr   r   r#   r   )r   include_sridr     )rB  r   r   	   z<u4)
r<   r   ri   r   r=   set_sridr	  int32
frombufferitem)ewkbr   rA   r   point_with_sridra   s         rB   test_to_wkb_sridrK  	  s    ?D
6Cd##F>&t,,,====>&dq999S@@@@>&d!LLLPTTTTTN1a  E&ubhtnn==O^O$1MMMF=!e,,1133t;;;;;;rD   )r'   r   r   zGEOS < 3.10.0c                     t          j        t          d          } |                                 dd         t	          j        ddt          z                                            k    sJ t          j        t          dd          } |                                 dd         t	          j        ddt          z                                            k    sJ t          j        t          dd          } |                                 dd         t	          j        ddt          z                                            k    sJ d S )	Nr#   r  r&   r   <Iextendedr   r7  iso)r<   r   r   r   r#  r$  r%  ISOWKBZrA   s    rB   test_to_wkb_flavorrS    s    ^G222F::<<"T1u9!=!=!A!A!C!CCCCC^G*EEEF::<<"T1u9!=!=!A!A!C!CCCCC^G%@@@F::<<"T1w;!?!?!C!C!E!EEEEEEErD   c                  Z   t          j        t          d          } |                                 dd         t	          j        ddt          z                                            k    sJ t          j        t          dd          } |                                 dd         t	          j        ddt          z                                            k    sJ t          j        t          d          } |                                 dd         t	          j        ddt          z                                            k    sJ t          j        t          dd          } |                                 dd         t	          j        ddt          z                                            k    sJ d S )Nr#   r  r&   r   rM  rP  rO  )r<   r   r   r   r#  r$  r+  ISOWKBMr   r/  ISOWKBZMrR  s    rB   test_to_wkb_m_flavorrW  %  sX    ^G222F::<<"T1u9!=!=!A!A!C!CCCCC^G%@@@F::<<"T1w;!?!?!C!C!E!EEEEE ^H333F::<<"T1v:!>!>!B!B!D!DDDDD^H5AAAF::<<"T1x<!@!@!D!D!F!FFFFFFFrD   c                      t          j        t          d          5  t          j        t
          dd           d d d            d S # 1 swxY w Y   d S )Nzcannot be used togetherrV   TrP  )rB  r7  )rZ   r\   rp   r<   r   r   rG   rD   rB   test_to_wkb_flavor_sridrY  7  s    	z)B	C	C	C A AwT%@@@@A A A A A A A A A A A A A A A A A As   AA
A
c                      t          j        t                    5  t          j        t
          d           d d d            d S # 1 swxY w Y   d S )NrP  r6  )rZ   r\   r   r<   r   r   rG   rD   rB   #test_to_wkb_flavor_unsupported_geosr[  =  s    	2	3	3 . .wu----. . . . . . . . . . . . . . . . . .s   AA
Azgeom,expectedrx   )idr   zPOINT M EMPTYzPOINT ZM EMPTYzMULTIPOINT EMPTYzMULTIPOINT Z EMPTYzMULTIPOINT M EMPTYzMULTIPOINT ZM EMPTYz GEOMETRYCOLLECTION (POINT EMPTY)z"GEOMETRYCOLLECTION (POINT Z EMPTY)z"GEOMETRYCOLLECTION (POINT M EMPTY)z#GEOMETRYCOLLECTION (POINT ZM EMPTY)z%GEOMETRYCOLLECTION (MULTIPOINT EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT Z EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT M EMPTY)z(GEOMETRYCOLLECTION (MULTIPOINT ZM EMPTY)c                 B   t          j        | dd          }d}t          |          |z
  }t          |          ||z   k    sJ |d |         |d |         k    sJ t          j        t          j        d||d                                                              sJ d S )Nr&   r#   r"     <2dr<   r   r  r	  isnanr#  unpackr{   rk   r@   rA   coordinate_lengthheader_lengths        rB   test_to_wkb_point_empty_2drf  C  s    L ^D1CCCFMM$55Mv;;-*;;;;;;.=.!Xn}n%===== 8FM%)?@@AAEEGGGGGGGrD   c                 B   t          j        | dd          }d}t          |          |z
  }t          |          ||z   k    sJ |d |         |d |         k    sJ t          j        t          j        d||d                                                              sJ d S Nr'   r#   r"     z<3dr`  rc  s        rB   test_to_wkb_point_empty_zrj    s    L ^D1CCCFMM$55Mv;;-*;;;;;;.=.!Xn}n%===== 8FM%)?@@AAEEGGGGGGGrD   c                 B   t          j        | dd          }d}t          |          |z
  }t          |          ||z   k    sJ |d |         |d |         k    sJ t          j        t          j        d||d                                                              sJ d S rh  r`  rc  s        rB   test_to_wkb_point_empty_mrl        4 ^D1CCCFMM$55Mv;;-*;;;;;;.=.!Xn}n%=====8FM%)?@@AAEEGGGGGGGrD   c                 B   t          j        | dd          }d}t          |          |z
  }t          |          ||z   k    sJ |d |         |d |         k    sJ t          j        t          j        d||d                                                              sJ d S )Nr(   r#   r"      z<4dr`  rc  s        rB   test_to_wkb_point_empty_zmrp    rm  rD   c                 B   t          j        | dd          }d}t          |          |z
  }t          |          ||z   k    sJ |d |         |d |         k    sJ t          j        t          j        d||d                                                              sJ d S )Nr'   r#   r"  r^  r_  r`  rc  s        rB   'test_to_wkb_point_empty_2d_output_dim_3rr    s    $ ^D1CCCFMM$55Mv;;-*;;;;;;.=.!Xn}n%===== 8FM%)?@@AAEEGGGGGGGrD   zwkb,expected_type,expected_dimPOINT_NAN_WKBPOINTZ_NAN_WKBMULTIPOINT_NAN_WKBMULTIPOINTZ_NAN_WKBGEOMETRYCOLLECTION_NAN_WKBGEOMETRYCOLLECTIONZ_NAN_WKBNESTED_COLLECTION_NAN_WKBNESTED_COLLECTIONZ_NAN_WKBc                     t          j        |           }t          j        |          sJ t          j        |          |k    sJ t          j        |          |k    sJ d S rF   )r<   r   r|   r   get_coordinate_dimension)r   expected_typeexpected_dimrk   s       rB   test_from_wkb_point_emptyr  .  si      C  DD!!!!!t$$5555+D11\AAAAAArD   zwkb,expected_typePOINTM_NAN_WKBMULTIPOINTM_NAN_WKBGEOMETRYCOLLECTIONM_NAN_WKBNESTED_COLLECTIONM_NAN_WKBc                    t          j        |           }t          j        |          sJ t          j        |          |k    sJ t          j        |          dk    sJ t          j        |          rJ t          j        |          sJ d S )Nr'   r<   r   r|   r   r|  has_zhas_mr   r}  rk   s      rB   test_from_wkb_point_empty_mr  E  s     C  DD!!!!!t$$5555+D11Q6666}T"""""=rD   POINTZM_NAN_WKBMULTIPOINTZM_NAN_WKBGEOMETRYCOLLECTIONZM_NAN_WKBNESTED_COLLECTIONZM_NAN_WKBc                    t          j        |           }t          j        |          sJ t          j        |          |k    sJ t          j        |          dk    sJ t          j        |          sJ t          j        |          sJ d S )Nr(   r  r  s      rB   test_from_wkb_point_empty_zmr  \  s      C  DD!!!!!t$$5555+D11Q6666==rD   c                      t          j        t          d          } t          j        | d          }t          j        |          }t          j        |          dk    sJ d S )Ni  T)rB  )r<   rE  r   r   r   get_srid)r@   r   rA   s      rB   test_to_wkb_point_empty_sridr  u  sZ    T22H
.
5
5
5Cc""FF##t++++++rD   c                 v    t          j        |           }t          t          j        |          | d           d S Nr   	tolerance)pickledumpsr   loadsrk   pickleds     rB   test_pickler  |  s6    l4  GFL1141EEEEEErD   c                     t          j        |           }t          j        |          }t          || d           |j        s	|j        sJ t          j        dk    r	|j        rJ d S d S )Nr   r  r   )	r  r  r  r   r|   r  r<   r   r  rk   r  rA   s      rB   test_pickle_zr    sw    l4  G\'""FFDA6666? |z))< *)rD   c                     t          j        |           }t          j        |          }t          || d           |j        rJ |j        s	|j        sJ d S d S r  )r  r  r  r   r  r|   r  r  s      rB   test_pickle_mr    sm     l4  G\'""FFDA6666|? | rD   c                     t          j        |           }t          j        |          }t          || d           |j        s|j        sJ |j        sJ d S d S r  )r  r  r  r   r|   r  r  r  s      rB   test_pickle_zmr    sm     l4  G\'""FFDA6666? || rD   c                     t          j        | d          } t          j        |           }t          j        t          j        |                    dk    sJ d S )NrC  )r<   rE  r  r  r  r  r  s     rB   test_pickle_with_sridr    sO    D$''Dl4  GFL1122d::::::rD   )r'   r   r#   zGEOS < 3.10.1zgeojson,expectedGEOJSON_GEOMETRYGEOJSON_FEATUREGEOJSON_FEATURECOLECTIONGEOJSON_GEOMETRYx2NoneGEOJSON_GEOMETRY_Nonec                 N    t          j        |           }t          ||           d S rF   )r<   from_geojsonr   )geojsonr@   rA   s      rB   test_from_geojsonr    s*    6 !'**FFH-----rD   c                     t          j        t          d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j        d          5  t          j        d	           d d d            n# 1 swxY w Y   t          j        t          j        d
          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t          j        d
          5  t          j        d           d d d            d S # 1 swxY w Y   d S )NrK   rV   r#   zError parsing JSONrL   zUnknown geometry typez){"type": "NoGeometry", "coordinates": []}ztype must be array, but is nullz+{"type": "LineString", "coordinates": null}zkey 'type' not foundz${"geometry": null, "properties": []}z{"no": "geojson"})rZ   r\   r   r<   r  r   rG   rD   rB   test_from_geojson_exceptionsr    sI   	y(K	L	L	L    Q                              
w,4H	I	I	I ! !R   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
w,4K	L	L	L J JHIIIJ J J J J J J J J J J J J J J 
w,4U	V	V	V L LJKKKL L L L L L L L L L L L L L L
 
w,4J	K	K	K E ECDDDE E E E E E E E E E E E E E E 
w,4J	K	K	K 2 201112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2si   =AA(B		BB4CCC D!!D%(D%E--E14E1F::F>F>c                      t          j        t          d          5  t          j        dd          J 	 d d d            d S # 1 swxY w Y   d S )NzInvalid GeoJSONrV   rL   rN   rX   )rZ   r[   Warningr<   r  rG   rD   rB   !test_from_geojson_warn_on_invalidr    s    	g%6	7	7	7 C C#B6:::BBBBC C C C C C C C C C C C C C C C C Cs   AA
Ac                      t          j                    5  t          j        d           t          j        dd          J 	 d d d            d S # 1 swxY w Y   d S )Nr^   rL   rM   rX   )warningscatch_warningssimplefilterr<   r  rG   rD   rB   #test_from_geojson_ignore_on_invalidr    s    		 	"	" E Eg&&&#B8<<<DDDDE E E E E E E E E E E E E E E E E Es   -AAAc                      t          j        t          d          5  t          j        t
          d           d d d            d S # 1 swxY w Y   d S )NrP   rV   rO   rX   )rZ   r\   rp   r<   r  r  rG   rD   rB   /test_from_geojson_on_invalid_unsupported_optionr    s    	z)=	>	>	> P P-:NOOOOP P P P P P P P P P P P P P P P P Ps   AA	A	zGEOS < 3.10zexpected,geometryc                     t          j        | d          }t          j        |t          j        |          k              sJ d S )Nr(   r-   )r<   
to_geojsonr	  r{   asarray)r1   r@   rA   s      rB   test_to_geojsonr    sD    * 333F6&BJx0001111111rD   r.   )Nr   r(   c                     | dnd}t          j        t          j        t                    | |          }t	          j        t          |           }||k    sJ d S )N),:)r  z: )r.   
separatorsr-   )jsonr  r  r  r<   r  GEOJSON_GEOMETRY_EXPECTED)r.   r  r@   rA   s       rB   test_to_geojson_indentr    sh      &~;Jz
#$$V
  H  9&IIIFXrD   c                      t          j        t                    5  t          j        d           d d d            d S # 1 swxY w Y   d S r   )rZ   r\   r   r<   r  rG   rD   rB   test_to_geojson_exceptionsr    s    	y	!	!  1                 s   <A A r'   r   r&   zGEOS < 3.10.2c                 |    |                      t          j        t          j        |                               sJ d S rF   )r   r<   r  r  r   s    rB   test_to_geojson_point_emptyr  #  s8     ;;w+G,>t,D,DEEFFFFFFFrD   c                    t          j        |           }|t           j        j        k    rt	          j        d           n@| j        r9|t           j        j        k    r$t           j        dk     rt	          j        d           t          j	        |           }t          j
        |          }|j        rJ t          j        | |g          }|                                r|                                sJ d S t          ||            d S )Nz(Linearrings are not preserved in GeoJSONr  zGEOS < 3.10.2 with POINT EMPTY)r<   r   r   r   rZ   r   r|   POINTr   r  r  r  anyr{   r   )rk   type_idr  rA   geoms_are_emptys        rB   test_geojson_all_typesr  3  s     !$''G'&111>????6w+111 :--4555 &&G!'**F|&f~66O .""$$$$$$$-----rD   )r  r  r#  r  
contextlibr   numpyr	  rZ   r<   r   r   r   r   r   r	   r
   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r%  r+  r/  rQ  rU  rV  r$  r   floatNANrs  rt  r  r  ru  rv  r  r  rw  rx  r  r  ry  rz  r  r  INVALID_WKBr  r  r  r  r=   r  r  polygonsGEOJSON_COLLECTION_EXPECTEDrC   rH   markparametrizer   r  rp   rb   skipifr   rl   rs   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   r  r  r  r  r  r  r  r  r(  r-  r1  r3  r8  r>  rK  rS  rW  rY  r[  paramr   rf  rj  rl  rp  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  rG   rD   rB   <module>r     s."       " " " " " "      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 7 6 6 6 6 6 3 3 3 3 3 3                                       * 		

Wfk'1ac22fk$e%%E1a((C!G4UAq5y11S1W=UAq5y11S1W=&+eQF
33sQw? V[Aq11MA !fk&!QY::^K !fk&!QY::^K "v{61a&j!<<N (V[Aq99MI )fk&!QYBB^S )fk&!QYBB^S *v{61a&j!DDV 'FK1a88;MM (V[AIqAADWW (V[AIqAADWW FK1v:q)),@@  k4:wt}MMVWXXX $*$eT]CC01 
    &4:# "%,eS\JJ&1  "(	$  ),h??  "% #CL"CL"CL"CL"CL$  *0(88LL '#
& &N Q) ) ) V +GN5$77 GNE3<  G%s|eS\E3<PQQG
s|eS\E3<%N  . . .* * *
 %	
GY CD"	VWKL	Wm%RS	!:/CD2	Wm5TU	VW.MN2	VW.CD6	-9ST	2LM $ % $ :%<       (0 0) 	 00 J&<   3 3	 3 ++
. 
. ,+
. 	T ' '	 ' 		 	" "	 	". . .. . .* * *
 %	
GY CD"	Wm%AB	VW:;	!:/CD;	$g}>NO	$fg7GH	hd+B		
 B		
! 4 5 4 :%<    +i	

 
0 0
 
	 0 J&<   4 4	 4 ++UDM221v..* * /. 32 ,+* --UDM221v..* * /. 32 .-* :%9    --UDM221v..* * /. 32 .-	 * :%9    ..UDM221v..* * /. 32 /.	 * 

UWWjjllGGII'9'9';';< ' '	 ' 	 " " "	+ 	+ 	+	N 	N 	NG G G"G G G ( ( (
: : :2 2 28 8 8 	   8 8 8M M M, , , %%q//55E??!CDD7 7 ED7 %%q//55E??!CDD
7 
7 ED
7 
 	aE
I}-..
CCCDD@@@AA:::===>	
 	
 	
I}-..ZI.//Y<V1W1WX	
 	
 	 P P PQQR	
 	
 	GUU1a%7%7899..aE0B0B/CDDEFF
Q26NM233!QM9EFFEE!QKKq!U););<==+ 4 5 4S S S
M M M0 0 0
 :%9   4 4	 4
+ + +4 4 4 :%9   6 6	 6
! ! !1 1 1
Y 
Y 
YY Y Y"
 
 
(( ( (
. . .
 
 
< < <" G(:5oNNF F ONF :%9   G G	 G G(:5oNNA A ONA
 G(J6OO. . PO.
 [-MBBB]MoFFF]MoFFF^]7GHHH!	
 	
 	

 	#	
 	
 	

 	#	
 	
 	

 	 $	
 	
 	

 	'G'66&1	
 	
 	

 	'G'88&3	
 	
 	

 	'G'88&3	
 	
 	

 	'G'(899&4	
 	
 	

 	'G'):(;<<%6	
 	
 	

 	'G')<(=>>%8	
 	
 	

 	'G')<(=>>%8	
 	
 	

 	'G')=(>??%9	
 	
 	
yAD DJH HKD DJH ]NGGG^^8HIII#	
 	
 	

 	 $	
 	
 	

 	'G'88'3	
 	
 	

 	'G'(899'4	
 	
 	

 	'G')<(=>>&8	
 	
 	

 	'G')=(>??&9	
 	
 	
9!$ $JH HK$ $JH :%9    ]NGGG#	
 	
 	

 	'G'88'3	
 	
 	

 	'G')<(=>>&8	
 	
 	
 *H H+ 	 2H :%9    ^_9IJJJ  $	
 	
 	

 	'G'(899(4	
 	
 	

 	'G')=(>??'9	
 	
 	
 *H H+ 	 2H [-MBBB&(:?QRRR'G'66&1	
 	
 	

 	'G'):(;<<%6	
 	
 	
 "H H# "H $]Aq_===^Q.>???'A2FGGG(!Q3HIII/A:VWWW'A2O	
 	
 	
 	.19TUUU/A:VWWW B B B :%9    ^Q+;<<<(!0EFFF0!8UVVV/7STTT	   	  :%9    _a,=>>>)11GHHH(!0N	
 	
 	
 	0!8UVVV
 
 
 
	 , , , g{-C!CDDF F EDF
 --    .-  :%9    --  .-	 
 :%9    ..  /.	 
 g{-C!CDD; ; ED; G(:5oNN7<N	
 	
 	
 	_&?DUVVV$'G'(CDD)	
 	
 	

 	"&'!+#	
 	
 	

 	T4F+++t$&-&	
 	
 	
! 2. .3  ON4.
 G(:5oNN2 2 ON2, G(:5oNNC C ONC
 G(:5oNNE E ONE G(:5oNNP P ONP
 G(:5mLL7<N	
 	
 	
 	"&'!+#	
 	
 	

 	T4F+++t$&-&	
 	
 	
 &2 2'  ML(2
 G(:5mLL<<<00  10 ML G(:5mLL  ML
 G(:5oNN
[%011##[%$899##(W(+77?	
 	
	
 
G G
 
 ONG G(:5oNN++. . ,+ ON. . .rD   