Ë
    £èhÃ\  ã                  ó²  — d dl mZ d dlmZmZmZ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mZmZ d dlmZmZmZmZmZmZ d dlmZ d d	lmZm Z  d d
l!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 erd dl7m8Z8 d dl9m:Z: ddgZ; ejx                  d«      Z= edi d edd¬«      “d edd¬«      “d ed d! ej|                  d d"«      e¬#«      “d$ ed%ej~                  e"¬&«      “d' ed(ej~                  e"¬&«      “d) ed*dej€                  e¬#«      “d+ ed,d¬«      “d- ed.d¬«      “d/ ed0d¬«      “d1 ed2ej~                  e#ej‚                  e¬3«      “d4 ed5ej„                  e$ej‚                  e¬3«      “d6 ed7d ej|                  d d8«      e¬#«      “d9 ed:dej€                  e¬#«      “d; ed<d ej†                  e¬#«      “d= ed>d ¬«      “d? ed@d ¬«      “dA edBdCdD¬E«      “ edFdCdD¬E«       edGdCdD¬E«       edHdCdD¬E«      dIœ¥«      ZD eeD«      ZEdJZF G dK„ de«      ZGdOdL„ZHe1 G dM„ de/«      «       ZIdPdN„ZJy)Qé    )Úannotations)ÚTYPE_CHECKINGÚSequenceÚIterableÚOptional)ÚElementTreeN)Ú	validator)ÚDXFAttributesÚDefSubclassÚDXFAttrÚXTypeÚRETURN_DEFAULTÚgroup_code_mapping)ÚSUBCLASS_MARKERÚDXFStructureErrorÚDXF2010ÚDXFTypeErrorÚDXFValueErrorÚInvalidGeoDataException)ÚVertexArray)ÚTagsÚDXFTag)ÚNULLVECÚZ_AXISÚY_AXISÚUVecÚVec3ÚVec2ÚMatrix44)Úsplit_mtext_stringé   )Ú
base_classÚSubclassProcessor)Ú	DXFObject)Úregister_entity)Údefault_copyÚCopyNotSupportedé   )Úunits)ÚDXFNamespace)ÚAbstractTagWriterÚGeoDataÚMeshVerticesÚezdxfÚAcDbGeoDataÚversionéZ   )ÚdefaultÚblock_record_handleiJ  Ú0Úcoordinate_typeéF   é   é   )r2   r	   ÚfixerÚdesign_pointé
   )Úxtyper2   Úreference_pointé   Úhorizontal_unit_scaleé(   Úhorizontal_unitsé[   Úvertical_unit_scaleé)   Úvertical_unitsé\   Úup_directionéÒ   )r<   r2   r	   r9   Únorth_directioné   Úscale_estimation_methodé_   é   Úuser_scale_factoré�   Úsea_level_correctioni&  Úsea_level_elevationéŽ   Úcoordinate_projection_radiusé�   Úgeo_rss_tagi.  Ú T)r2   Úoptionali1  i2  i3  )Úobservation_from_tagÚobservation_to_tagÚobservation_coverage_taga/
  <?xml version="1.0" encoding="UTF-16" standalone="no" ?>
<Dictionary version="1.0" xmlns="http://www.osgeo.org/mapguide/coordinatesystem">

<ProjectedCoordinateSystem id="WORLD-MERCATOR">
<Name>WORLD-MERCATOR</Name>
<AdditionalInformation>
<ParameterItem type="CsMap">
<Key>CSQuadrantSimplified</Key>
<IntegerValue>1</IntegerValue>
</ParameterItem>
</AdditionalInformation>
<DomainOfValidity>
<Extent>
<GeographicElement>
<GeographicBoundingBox>
<WestBoundLongitude>-180.75</WestBoundLongitude>
<EastBoundLongitude>180.75</EastBoundLongitude>
<SouthBoundLatitude>-80.75</SouthBoundLatitude>
<NorthBoundLatitude>84.75</NorthBoundLatitude>
</GeographicBoundingBox>
</GeographicElement>
</Extent>
</DomainOfValidity>
<DatumId>WGS84</DatumId>
<Axis uom="Meter">
<CoordinateSystemAxis>
<AxisOrder>1</AxisOrder>
<AxisName>Easting</AxisName>
<AxisAbbreviation>E</AxisAbbreviation>
<AxisDirection>East</AxisDirection>
</CoordinateSystemAxis>
<CoordinateSystemAxis>
<AxisOrder>2</AxisOrder>
<AxisName>Northing</AxisName>
<AxisAbbreviation>N</AxisAbbreviation>
<AxisDirection>North</AxisDirection>
</CoordinateSystemAxis>
</Axis>
<Conversion>
<Projection>
<OperationMethodId>Mercator (variant B)</OperationMethodId>
<ParameterValue><OperationParameterId>Longitude of natural origin</OperationParameterId><Value uom="degree">0</Value></ParameterValue>
<ParameterValue><OperationParameterId>Standard Parallel</OperationParameterId><Value uom="degree">0</Value></ParameterValue>
<ParameterValue><OperationParameterId>Scaling factor for coord differences</OperationParameterId><Value uom="unity">1</Value></ParameterValue>
<ParameterValue><OperationParameterId>False easting</OperationParameterId><Value uom="Meter">0</Value></ParameterValue>
<ParameterValue><OperationParameterId>False northing</OperationParameterId><Value uom="Meter">0</Value></ParameterValue>
</Projection>
</Conversion>
</ProjectedCoordinateSystem>
<Alias id="3395" type="CoordinateSystem">
<ObjectId>WORLD-MERCATOR</ObjectId>
<Namespace>EPSG Code</Namespace>
</Alias>

<GeodeticDatum id="WGS84">
<Name>WGS84</Name>
<PrimeMeridianId>Greenwich</PrimeMeridianId>
<EllipsoidId>WGS84</EllipsoidId>
</GeodeticDatum>
<Alias id="6326" type="Datum">
<ObjectId>WGS84</ObjectId>
<Namespace>EPSG Code</Namespace>
</Alias>

<Ellipsoid id="WGS84">
<Name>WGS84</Name>
<SemiMajorAxis uom="meter">6.37814e+06</SemiMajorAxis>
<SecondDefiningParameter>
<SemiMinorAxis uom="meter">6.35675e+06</SemiMinorAxis>
</SecondDefiningParameter>
</Ellipsoid>
<Alias id="7030" type="Ellipsoid">
<ObjectId>WGS84</ObjectId>
<Namespace>EPSG Code</Namespace>
</Alias>

</Dictionary>
c                  ó   — e Zd ZdZy)r-   r(   N)Ú__name__Ú
__module__Ú__qualname__ÚVERTEX_SIZE© ó    ú6lib/python3.12/site-packages/ezdxf/entities/geodata.pyr-   r-   á   s   „ Ø�Kra   c                ó   — | dk  rdS dS )Nr(   )rJ   é   )rd   é   r`   )r0   s    rb   Úmesh_group_codesrf   å   s   € Ø ’{ˆ8Ð0¨Ð0ra   c                  óò   ‡ — e Zd ZdZdZ eee«      Ze	Z
dZdZdZdZdZdZdZdZdˆ fd„Zefd	„Z	 d	 	 	 dˆ fd
„Zdd„Zddd„Zdˆ fd„Zdd„Zdd„Zd d„Zd!d„Zddœ	 	 	 d"d„Zdedœ	 	 	 	 	 	 	 	 	 d#d„Z ˆ xZ!S )$r,   zDXF GEODATA entityÚGEODATAr   r!   r(   r7   r8   c                óz   •— t         ‰| �  «        t        «       | _        t        «       | _        g | _        d| _        y )NrV   )ÚsuperÚ__init__r-   Úsource_verticesÚtarget_verticesÚfacesÚcoordinate_system_definition)ÚselfÚ	__class__s    €rb   rk   zGeoData.__init__ý   s1   ø€ Ü‰ÑÔÜ+›~ˆÔÜ+›~ˆÔØ*,ˆŒ
Ø,.ˆÕ)ra   c                ó4   — t        d| j                  › d�«      ‚)NzCopying of z not supported.)r'   ÚDXFTYPE)rp   Úcopy_strategys     rb   ÚcopyzGeoData.copy  s   € Ü ¨T¯\©\¨N¸/ÐJÓKÐKra   c                ó$  •— t         ‰| �  |«      }|r}|j                  ddd¬«      }|j                  |t        dd¬«      }| j                  |«      }|dkD  r| j                  ||«       |S t        j                  d«       |j                  d«       |S )	Nr!   r1   r(   )Úsubclass_indexÚ
group_coder2   F)Úlogz9GEODATA version 1 found, perhaps loaded data is incorrectrI   )
rj   Úload_dxf_attribsÚdetect_implementation_versionÚfast_load_dxfattribsÚacdb_geo_data_group_codesÚ!load_coordinate_system_definitionÚload_mesh_dataÚloggerÚwarningÚdiscard)rp   Ú	processorÚdxfr0   Útagsrq   s        €rb   rz   zGeoData.load_dxf_attribs  s«   ø€ ô ‰gÑ& yÓ1ˆÙØ×=Ñ=Ø ØØð >ó ˆGð
 ×1Ñ1ØÔ.°°uð 2ó ˆDð ×9Ñ9¸$Ó?ˆDØ˜Š{Ø×#Ñ# D¨'Ô2ð ˆ
ô	 —‘ØOôð —‘Ð-Ô.Øˆ
ra   c              #  óÞ   K  — g }|D ]@  }|j                   dv r,|j                  |j                  j                  dd«      «       Œ=|–— ŒB t	        |«      rdj                  |«      | _        y y ­w)N)é-  é/  ú^JÚ
rV   )ÚcodeÚappendÚvalueÚreplaceÚlenÚjoinro   )rp   r…   ÚlinesÚtags       rb   r~   z)GeoData.load_coordinate_system_definition   sa   è ø€ àˆÛˆCØ�x‰x˜:Ñ%Ø—‘˜SŸY™Y×.Ñ.¨t°TÓ:Õ;à“	ð	 ô
 ˆuŒ:Ø02·±¸³ˆDÕ-ð ùs   ‚A+A-c                ó|  — t        |«      \  }}h d£}g }|D ]Ç  \  }}||k(  r| j                  j                  |«       Œ'||k(  r| j                  j                  |«       ŒH||v sŒM|dk(  ret	        |«      rZt	        |«      dk7  rt        dt	        |«      › d�«      ‚| j                  j                  t        |«      «       |j                  «        |j                  |«       ŒÉ |r$| j                  j                  t        |«      «       t	        | j                  «      t	        | j                  «      k7  rt        d«      ‚y )N>   éa   éb   éc   r”   r7   ú3GEODATA face definition error: invalid index count Ú.úLGEODATA mesh definition error: source and target point count does not match.)	rf   rl   rŒ   rm   r�   r   rn   ÚtupleÚclear)	rp   r…   r0   ÚsrcÚtargetÚface_indicesÚfacer‹   r�   s	            rb   r   zGeoData.load_mesh_data+  s  € ä& wÓ/‰ˆˆVÚ#ˆØˆÛ‰KˆD�%Ø�sŠ{Ø×$Ñ$×+Ñ+¨EÕ2Ø˜’Ø×$Ñ$×+Ñ+¨EÕ2Ø˜Ò%Ø˜2’:¤# d¤)Ü˜4“y A’~Ü/ð%Ü%(¨£Y K¨qð2óð ð —J‘J×%Ñ%¤e¨D£kÔ2Ø—J‘J”LØ—‘˜EÕ"ð  ñ Ø�J‰J×Ñœe D›kÔ*Üˆt×#Ñ#Ó$¬¨D×,@Ñ,@Ó(AÒAÜ#ð"óð ð Bra   c                ó„  •— t         ‰| �  |«       |j                  t        t        j
                  «       | j                  j                  dk  rt        j                  d«       | j                  j                  |g d¢«       | j                  |«       | j                  j                  |g d¢«       | j                  |«       y)z(Export entity specific data as DXF tags.r(   zGexporting unsupported GEODATA version 1, this may corrupt the DXF file!)r0   r3   r5   r:   r=   r?   rA   rC   rE   rG   rI   rK   rN   rP   rQ   rS   )rU   rX   rY   rZ   N)rj   Úexport_entityÚ
write_tag2r   Úacdb_geo_dataÚnamer„   r0   r€   r�   Úexport_dxf_attribsÚ#export_coordinate_system_definitionÚexport_mesh_data)rp   Ú	tagwriterrq   s     €rb   r¡   zGeoData.export_entityG  sŸ   ø€ ä‰Ñ˜iÔ(Ø×Ñœ_¬m×.@Ñ.@ÔAØ�8‰8×Ñ˜aÒÜ�N‰Nð ôð 	�‰×#Ñ#Øòô	
ð* 	×0Ñ0°Ô;Ø�‰×#Ñ#Øòô	
ð 	×Ñ˜iÕ(ra   c                óÆ  — t        | j                  «      t        | j                  «      k7  rt        d«      ‚t	        | j
                  j                  «      \  }}|j                  dt        | j                  «      «       t        | j                  | j                  «      D ])  \  }}|j                  ||«       |j                  ||«       Œ+ |j                  dt        | j                  «      «       | j                  D ]d  }t        |«      dk7  rt        dt        |«      › d�«      ‚|\  }}}	|j                  d|«       |j                  d|«       |j                  d	|	«       Œf y )
Nr™   é]   é`   r7   r—   r˜   r”   r•   r–   )r�   rl   rm   r   rf   r„   r0   r¢   ÚzipÚwrite_vertexrn   )
rp   r¨   rœ   r�   ÚsÚtrŸ   Úf1Úf2Úf3s
             rb   r§   zGeoData.export_mesh_dataq  s;  € Üˆt×#Ñ#Ó$¬¨D×,@Ñ,@Ó(AÒAÜ#ð"óð ô ' t§x¡x×'7Ñ'7Ó8‰ˆˆVà×Ñ˜R¤ T×%9Ñ%9Ó!:Ô;Ü˜×,Ñ,¨d×.BÑ.BÖC‰DˆAˆqØ×"Ñ" 3¨Ô*Ø×"Ñ" 6¨1Õ-ð Dð 	×Ñ˜R¤ T§Z¡Z£Ô1Ø—J”JˆDÜ�4‹y˜AŠ~Ü'ðÜ  ›Y˜K qð*óð ð ‰JˆB��BØ× Ñ   RÔ(Ø× Ñ   RÔ(Ø× Ñ   RÕ(ñ ra   c                ó:  — | j                   j                  dd«      }t        |d¬«      }t        |«      dk(  r|j	                  d«       t        |«      dkD  r0|j                  d|j                  d«      «       t        |«      dkD  rŒ0|j                  d	|d   «       y )
NrŠ   r‰   éÿ   )Úsizer   rV   r!   rˆ   r‡   )ro   rŽ   r    r�   rŒ   r¢   Úpop)rp   r¨   ÚtextÚchunkss       rb   r¦   z+GeoData.export_coordinate_system_definitionŠ  s‚   € Ø×0Ñ0×8Ñ8¸¸tÓDˆÜ# D¨sÔ3ˆÜˆv‹;˜!ÒØ�M‰M˜"ÔÜ�&‹k˜AŠoØ× Ñ   f§j¡j°£mÔ4ô �&‹k˜A‹oà×Ñ˜S &¨¡)Õ,ra   c                ó¦   — t        j                  | j                  j                  «      t        j                  | j                  j                  «      fS ©N)r)   Údecoder„   rA   rE   )rp   s    rb   Údecoded_unitszGeoData.decoded_units“  s:   € Ü�|‰|˜DŸH™H×5Ñ5Ó6¼¿¹Ø�H‰H×#Ñ#ó9
ð 
ð 	
ra   c                ó`  — | j                   }	 t        |«      }t        j                  |«      }d}|j                  d«      D ]U  }	 |j                  d«      j                  }|j                  d«      dk(  sŒ4|dk(  sŒ:	 t        |j                  d	«      «      } n d}|j                  d«      D ]]  }	 |j                  d«      j                  }|dk(  sŒ%	 |j                  d«      j                  }	|	dv rd}n|	dv rd}nt        d|	› �«      ‚ n |€t        d«      ‚|€t        d«      ‚||fS # t        j                  $ r t        d«      ‚w xY w# t        $ r d}Y Œùw xY w# t        $ r t        d
|j                  d	«      › �«      ‚w xY w# t        $ r d}Y ŒÉw xY w# t        $ r t        d«      ‚w xY w)a   Returns the EPSG index and axis-ordering, axis-ordering is ``True``
        if fist axis is labeled "E" or "W" and ``False`` if first axis is
        labeled "N" or "S".

        If axis-ordering is ``False`` the CRS is not compatible with the
        ``__geo_interface__`` or GeoJSON (see chapter 3.1.1).

        Raises:
            InvalidGeoDataException: for invalid or unknown XML data

        The EPSG number is stored in a tag like:

        .. code::

            <Alias id="27700" type="CoordinateSystem">
              <ObjectId>OSGB1936.NationalGrid</ObjectId>
              <Namespace>EPSG Code</Namespace>
            </Alias>

        The axis-ordering is stored in a tag like:

        .. code::

            <Axis uom="METER">
              <CoordinateSystemAxis>
                <AxisOrder>1</AxisOrder>
                <AxisName>Easting</AxisName>
                <AxisAbbreviation>E</AxisAbbreviation>
                <AxisDirection>east</AxisDirection>
              </CoordinateSystemAxis>
              <CoordinateSystemAxis>
                <AxisOrder>2</AxisOrder>
                <AxisName>Northing</AxisName>
                <AxisAbbreviation>N</AxisAbbreviation>
                <AxisDirection>north</AxisDirection>
              </CoordinateSystemAxis>
            </Axis>

        z3failed to parse coordinate_system_definition as xmlNÚAliasÚ	NamespacerV   ÚtypeÚCoordinateSystemz	EPSG CodeÚidzinvalid epsg number: z.//CoordinateSystemAxisÚ	AxisOrderÚ1ÚAxisAbbreviationzfirst axis not defined)ÚEÚWT)ÚNÚSFzunknown first axis: z no EPSG code associated with CRSz!could not determine axis ordering)ro   Ú_remove_xml_namespacesr   Ú
fromstringÚ
ParseErrorr   ÚfindallÚfindr·   ÚAttributeErrorÚgetÚintÚ
ValueError)
rp   Ú
definitionÚrootÚcrsÚaliasÚ	namespaceÚxy_orderingÚaxisÚ
axis_orderÚ
first_axiss
             rb   Úget_crszGeoData.get_crs˜  sö  € ðP ×6Ñ6ˆ
ð	ô 0°
Ó;ˆJÜ×)Ñ)¨*Ó5ˆDð ˆØ—\‘\ 'Ö*ˆEðØ!ŸJ™J {Ó3×8Ñ8�	ð �y‰y˜Ó Ð$6Ó6¸9ÈÓ;SðÜ˜eŸi™i¨›oÓ.�Cñ
 ð +ð ˆØ—L‘LÐ!:Ö;ˆDð Ø!ŸY™Y {Ó3×8Ñ8�
ð ˜SÓ ðLØ!%§¡Ð+=Ó!>×!CÑ!C�Jð  Ñ+Ø"&‘KØ :Ñ-Ø"'‘Kä1Ð4HÈÈÐ2UÓVÐVÙð% <ð( ˆ;Ü)Ð*LÓMÐMØÐ Ü)Ð*MÓNÐNà˜Ð#Ð#øô_ ×%Ñ%ò 	Ü)ØEóð ð	ûô "ò Ø’	ðûô "ò Ü1Ø/°·	±	¸$³Ð/@ÐAóð ðûô "ò  Ø’
ð ûô &ò LÜ1Ð2JÓKÐKðLúsG   Ž D* ÁEÁ<EÂ0FÃFÄ*E	ÅEÅEÅ'FÆFÆFÆF-F)Ú	no_checksc               óX  — | j                  «       \  }}|�sa| j                  j                  t        j                  k7  �s| j                  j
                  t        j                  k7  sët        j                  | j                  j                  d«      rÁ| j                  j                  dk7  s¨t        j                  | j                  j                  d«      r~| j                  sr| j                  j                  j                  d«      rM| j                  j                  dk7  s4| j                  j                  dk7  s| j                  j                   dk7  s|s't#        d| j                  j%                  «       › d�«      ‚| j                  j&                  }| j                  j(                  }| j                  j*                  }t        j,                  |j.                  |j0                  «      t        j2                  dz  z
   }t5        j6                  |j0                   |j.                   d«      t5        j8                  | j                  j:                  | j                  j<                  d«      z  t5        j>                  |«      z  t5        j6                  |j0                  |j.                  d«      z  }||fS )	aû  Returns the transformation matrix and the EPSG index to transform
        WCS coordinates into CRS coordinates. Because of the lack of proper
        documentation this method works only for tested configurations, set
        argument `no_checks` to ``True`` to use the method for untested geodata
        configurations, but the results may be incorrect.

        Supports only "Local Grid" transformation!

        Raises:
            InvalidGeoDataException: for untested geodata configurations

        ç      ð?r   )r   r   r!   rV   z Untested geodata configuration: zC.
You can try with no_checks=True but the results may be incorrect.r(   r!   ) rÜ   r„   r5   r,   Ú
LOCAL_GRIDrK   ÚNONEÚmathÚiscloserN   rP   rQ   rn   rG   rZ   rX   rY   r   Úall_existing_dxf_attribsr:   r=   rI   Úatan2ÚyÚxÚpir   Ú	translateÚscaler?   rC   Úz_rotate)	rp   rÝ   ÚepsgrØ   Úsourcer�   ÚnorthÚthetaÚtransformations	            rb   Úget_crs_transformationzGeoData.get_crs_transformation÷  s÷  € ð !ŸL™L›NÑˆˆkâà—‘×(Ñ(¬G×,>Ñ,>Ó>Ø—8‘8×3Ñ3´w·|±|ÒCÜ—|‘| D§H¡H×$>Ñ$>ÀÔDØ—8‘8×0Ñ0°AÒ5Ü—|‘| D§H¡H×$@Ñ$@À!ÔDØ—:’:Ø—x‘x×,Ñ,×4Ñ4°YÔ?Ø—8‘8×4Ñ4¸Ò:Ø—8‘8×0Ñ0°BÒ6Ø—8‘8×.Ñ.°"Ò4Ù"ä-Ø6Ø—x‘x×8Ñ8Ó:Ð;ð <0ð1óð ð —‘×&Ñ&ˆØ—‘×)Ñ)ˆØ—‘×(Ñ(ˆô —*‘*˜UŸW™W e§g¡gÓ.´·±¸1±Ñ<Ð=ˆä×Ñ §¡˜y¨6¯8©8¨)°QÓ7Ü�n‰nØ—‘×.Ñ.°·±×0LÑ0LÈaóñô ×Ñ Ó&ñ	'ô
 × Ñ  §¡¨6¯8©8°QÓ7ñ8ð 	ð ˜tÐ#Ð#ra   )r   r!   )rI   rÕ   c               ó8  — | j                   }|€t        d«      ‚|j                  }t        dk(  rt        d«      ‚t        j                  |   }|€t        d|› �«      ‚d|z  }t        | j
                  _        d| j
                  _        d| j
                  _        d| j
                  _	        t        j                  | j
                  _        t        j                  | j
                  _        d| j
                  _        || j
                  _        || j
                  _        || j
                  _        || j
                  _        t)        |«      | j
                  _        t)        |«      | j
                  _        t/        |«      | j
                  _        t3        |«      | _        y)aµ  Setup local grid coordinate system. This method is designed to setup
        CRS similar to `EPSG:3395 World Mercator`, the basic features of the
        CRS should fulfill these assumptions:

            - base unit of reference coordinates is 1 meter
            - right-handed coordinate system: +Y=north/+X=east/+Z=up

        The CRS string is not validated nor interpreted!

        .. hint::

            The reference point must be a 2D cartesian map coordinate and not
            a globe (lon/lat) coordinate like stored in GeoJSON or GPS data.

        Args:
            design_point: WCS coordinates of the CRS reference point
            reference_point: CRS reference point in 2D cartesian coordinates
            north_direction: north direction a 2D vertex, default is (0, 1)
            crs: Coordinate Reference System definition XML string, default is
                the definition string for `EPSG:3395 World Mercator`

        NzValid DXF document required.r   zCDXF document requires units to be set, current state is "unitless".zUnsupported document units: rß   rV   )Údocr   r)   ÚMETER_FACTORr   r„   rG   rZ   rX   rY   r,   rá   rK   rà   r5   rP   rA   r?   rE   rC   r   r:   r=   r   rI   Ústrro   )	rp   r:   r=   rI   rÕ   ró   Ú	wcs_unitsÚmeter_factorÚunit_factors	            rb   Úsetup_local_gridzGeoData.setup_local_grid.  sD  € ð< �h‰hˆØˆ;ÜÐ >Ó?Ð?Ø—I‘Iˆ	Ü�AŠ:ÜØXóð ô ×)Ñ)¨)Ñ4ˆØÐÜÐ">¸y¸kÐ JÓKÐKØ˜LÑ(ˆä &ˆ�‰ÔØ,.ˆ�‰Ô)Ø(*ˆ�‰Ô%Ø&(ˆ�‰Ô#Ü+2¯<©<ˆ�‰Ô(Ü#*×#5Ñ#5ˆ�‰Ô Ø()ˆ�‰Ô%Ø$-ˆ�‰Ô!ð *5ˆ�‰Ô&Ø"+ˆ�‰ÔØ'2ˆ�‰Ô$ô !% \Ó 2ˆ�‰ÔÜ#'¨Ó#8ˆ�‰Ô Ü#'¨Ó#8ˆ�‰Ô Ü,/°«HˆÕ)ra   )ÚreturnÚNonerº   )rƒ   zOptional[SubclassProcessor]rú   r*   )r…   r   rú   úIterable[DXFTag])r(   )r…   rü   r0   rÑ   )r¨   r+   rú   rû   )r¨   r+   )rú   z#tuple[Optional[str], Optional[str]])rú   ztuple[int, bool])rÝ   Úboolrú   ztuple[Matrix44, int])
r:   r   r=   r   rI   r   rÕ   rõ   rú   rû   )"r\   r]   r^   Ú__doc__rs   r
   r"   r£   Ú
DXFATTRIBSr   ÚMIN_DXF_VERSION_FOR_EXPORTÚUNKNOWNrà   ÚPROJECTED_GRIDÚ
GEOGRAPHICrá   Ú
USER_SCALEÚ
GRID_SCALEÚPRISMOIDEALrk   r&   ru   rz   r~   r   r¡   r§   r¦   r¼   rÜ   rñ   Ú	EPSG_3395rù   Ú__classcell__)rq   s   @rb   r,   r,   é   só   ø„ áà€GÙ˜z¨=Ó9€JØ!(Ðð €GØ€JØ€NØ€Jð €DØ€JØ€JØ€Kõ/ð ".ó Lð 8<ðØ4ðà	õó2	?ôõ8()óT)ó2-ó
ó
]$ð@ $)ñ5$Ø ð5$à	ó5$ðx !'Øñ=5ð ð=5ð ð	=5ð
 ð=5ð ð=5ð 
÷=5ra   c                ó0   — t        j                  dd| «      S )Nzxmlns="[^"]*"rV   )ÚreÚsub)Ú
xml_strings    rb   rÊ   rÊ   n  s   € Ü�6‰6�/ 2 zÓ2Ð2ra   )r0   rÑ   rú   ztuple[int, int])r  rõ   rú   rõ   )KÚ
__future__r   Útypingr   r   r   r   Ú	xml.etreer   râ   r
  ÚloggingÚezdxf.lldxfr	   Úezdxf.lldxf.attributesr
   r   r   r   r   r   Úezdxf.lldxf.constr   r   r   r   r   r   Úezdxf.lldxf.packedtagsr   Úezdxf.lldxf.tagsr   r   Ú
ezdxf.mathr   r   r   r   r   r   r   Úezdxf.tools.textr    Ú	dxfentityr"   r#   Údxfobjr$   Úfactoryr%   ru   r&   r'   rV   r)   Úezdxf.entitiesr*   Úezdxf.lldxf.tagwriterr+   Ú__all__Ú	getLoggerr€   Úis_in_integer_rangeÚpoint3dÚis_not_zeroÚis_not_null_vectorÚpoint2dÚis_integer_boolr£   r}   r  r-   rf   r,   rÊ   r`   ra   rb   Ú<module>r%     s  ðõ #ß >Ó >Ý !Û Û 	Û å !÷÷ ÷÷ õ /ß )ß J× JÑ JÝ /ß 4Ý Ý $ß 0Ý áÝ+Ý7à�nÐ
%€Ø	ˆ×	Ñ	˜7Ó	#€ÙØðað 	‘7˜2 qÔ)ðað
 	™w s°CÔ8ðað 	™7ØØØ3�i×3Ñ3°A°qÓ9Ø ô	
ðað" 	™ ¨%¯-©-ÀÔIð#að( 	™7 2¨U¯]©]ÀGÔLð)að. 	 ¡ØØØ×+Ñ+Ø ô	"
ð/að@ 	™G B°Ô2ðAaðF 	™w r°1Ô5ðGaðN 	™' "¨aÔ0ðOaðP 	™ØØ—-‘-ØØ×2Ñ2Ø ô
ðQaðb 	™7ØØ—-‘-ØØ×2Ñ2Ø ô
ðcaðz 	"¡7ØØØ3�i×3Ñ3°A°qÓ9Ø ô	$
ð{aðF 	™WØØØ×+Ñ+Ø ô	
ðGaðT 	¡ØØØ×/Ñ/Ø ô	!
ðUað` 	™w s°AÔ6ðaaðb 	'©°¸QÔ(?ðcaðf 	‘w˜s¨B¸Ô>ðgañh !(¨°RÀ$Ô GÙ% c°2ÀÔEÙ$+¨C¸ÀdÔ$Kòmaód€ñJ /¨}Ó=Ð ðM€	ô`�;ô ó1ð ôA5ˆió A5ó ðA5ôH3ra   