
    hg                       % S SK Jr  S SKJrJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJrJrJrJrJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJ r   S SK!J"r"J#r#J$r$  S SK%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,  \(       a$  S SK-J.r.  S SK/J0r0  S SK
J1r1  S SK2J3r3  S SK4J5r5  S SKJ6r6  / SQr71 Skr8\" S\" SS\Rr                  S9\" SSS\Rt                  S9\" SS S\Rv                  \S!9\" S"S S\Rx                  \S!9\" S#S$\S\Rz                  \R|                  S%9\" S&S'\S\R~                  \S%9\" S(S \SS)9\" S*\SS+9\" S,\SS+9\" S-\S\R                  S.9\" S/\SS+9\" S0\SS+9\" S1\SS+9\" S2\SSS39\" S4\SS+9S5.5      rAS6\BS7'   \" \A5      rCSBS8 jrD " S9 S:\)5      rE\R                   " S; S<\E5      5       rGSCS= jrHSDS> jrISES? jrJSFS@ jrKgA)G    )annotations)TYPE_CHECKINGOptionalIterableAny)Self	TypeGuard)factory)options)	validator)DXFAttrDXFAttributesDefSubclassRETURN_DEFAULTgroup_code_mapping)colors)const)DXF12DXF2000DXF2004DXF2007DXF2013SUBCLASS_MARKERTRANSPARENCY_BYBLOCK)OCSMatrix44UVec)load_proxy_graphicexport_proxy_graphic   )	DXFEntity
base_classSubclassProcessorDXFTagStorage)Auditor)Drawing)DXFNamespace)
BaseLayout)AbstractTagWriter)xref)	
DXFGraphicacdb_entityacdb_entity_group_codesSeqEnd
add_entityreplace_entityelevation_to_z_axisis_graphic_entityget_font_name>   colorlayerltscalelinetype
color_name
lineweight
true_colortransparency
AcDbEntity   0)defaultr      BYLAYERT)r?   optionalr   >      )r?   rB   r   fixerC   ir  )r?   
dxfversionrB   r   rE   0   g      ?<   )r?   rH   rB   i  )rH   rB   i  i  )rH   rB   r   i  i[  i\  i|  )rH   r?   rB   i  )r5   r7   r4   
paperspacer9   r6   	invisibler:   r8   r;   shadow_modematerial_handlevisualstyle_handleplotstyle_enumplotstyle_handler   r,   c                   U R                  S5      (       at  U R                  nU R                  S5        US:X  a  g U HI  nU R                  U5      nUc  M  UR                  S:X  d  M+  U R                  X4R                  US95        MK     g g )N	elevationr   )z)hasattrrS   discardgetrT   setreplace)dxfnamesrS   namevs        G/var/www/html/env/lib/python3.13/site-packages/ezdxf/entities/dxfgfx.pyr1   r1      sv     {{;MM	K >DA
 }ii)i45       c                    ^  \ rS rSr% SrSrSS0rS\S'   \" \	\
5      r S.   S/U 4S jjjrS0S	 jr\S1S
 j5       r\R                   S2S j5       r\R"                  S0S j5       r\S3S j5       r\R                   S4S j5       r\S5S j5       r\S5S j5       rS6S jrS7S jrS8S9S jjrS:S jrS;S jrS;S jrS<S jrS0S jr S.     S=S jjrS>S jrS?U 4S jjrS@S jr SAS jr!\S5S j5       r"SBS jr#SCS  jr$SDS! jr%SES" jr&SFS# jr'SFS$ jr(SFS% jr)S5S& jr*  SG     SHS' jjr+SIS( jr,S.SJU 4S) jjjr-SKS* jr.SLU 4S+ jjr/SMU 4S, jjr0S-r1U =r2$ )Nr+      zCommon base class for all graphic entities, a subclass of
:class:`~ezdxf.entities.dxfentity.DXFEntity`. These entities resides in
entity spaces like modelspace, paperspace or block.
DXFGFXr5   r>   zdict[str, Any]DEFAULT_ATTRIBSc                ^  > [         TU ]  U5      nUc  U$ UR                  nUR                  5         [        R
                  (       aO  UR                  (       a  UR                  [        :  a  SnOSn[        UR                  U(       a  SOS   US9U l
        UR                  U[        S5        U$ )ztAdds subclass processing for 'AcDbEntity', requires previous base
class processing by parent class.

(internal API)
\      r   r    )length_code)superload_dxf_attribsr12 append_base_class_to_acdb_entityr   load_proxy_graphicsrH   r   r   
subclassesproxy_graphicfast_load_dxfattribsr-   )self	processorrZ   rj   code	__class__s        r^   ri   DXFGraphic.load_dxf_attribs   s     g&y1Jmm224 &&##	(<(<w(F!3$$#Q15 "D 	&&s,CQG
r_   c                    U R                   (       a]  U R                  R                  U R                   R                  ;  a.  [        R
                  " SU R                  R                   S35      egg)zPPost-processing and integrity validation after entity creation.

(internal API)
z
Linetype "z" not defined.N)docrZ   r7   	linetypesr   DXFInvalidLineTyperp   s    r^   post_new_hookDXFGraphic.post_new_hook   s[    
 88xx  (:(::.. !2!2 3>B  ; r_   c                    U R                   R                  S5      (       a/  [        R                  " U R                   R	                  S5      5      $ g)zKReturns RGB true color as (r, g, b) tuple or None if true_color is not set.r:   N)rZ   rU   clrint2rgbrW   ry   s    r^   rgbDXFGraphic.rgb   s8     88L));;txx||L9::r_   c                d    U R                   R                  S[        R                  " U5      5        g)zuSet RGB true color as (r, g , b) tuple e.g. (12, 34, 56).

Raises:
    TypeError: input value `rgb` has invalid type
r:   N)rZ   rX   r}   rgb2int)rp   r   s     r^   r   r      s     	\3;;s#34r_   c                :    U R                   R                  S5        g)zDelete RGB true color value.r:   N)rZ   rV   ry   s    r^   r   r      s     	&r_   c                    U R                   R                  S5      (       a[  U R                   R                  S5      n[        R                  " U5      (       a%  U[
        -  (       a  g[        R                  " U5      $ g)zGet transparency as float value between 0 and 1, 0 is opaque and 1
is 100% transparent (invisible). Transparency by block returns always 0.
r;   g        )rZ   rU   rW   r   is_transparencyr   r}   transparency2float)rp   values     r^   r;   DXFGraphic.transparency   s\    
 88N++HHLL0E((////--e44r_   c                d    U R                   R                  S[        R                  " U5      5        g)zdSet transparency as float value between 0 and 1, 0 is opaque and 1
is 100% transparent (invisible).
r;   N)rZ   rX   r}   float2transparency)rp   r;   s     r^   r;   r     s!    
 	^S%;%;L%IJr_   c                B    U R                   R                  S5      (       + $ )z<Returns ``True`` if entity inherits transparency from layer.r;   )rZ   rU   ry   s    r^   is_transparency_by_layer#DXFGraphic.is_transparency_by_layer  s     88##N333r_   c                H    U R                   R                  SS5      [        :H  $ )z<Returns ``True`` if entity inherits transparency from block.r;   r   )rZ   rW   r   ry   s    r^   is_transparency_by_block#DXFGraphic.is_transparency_by_block  s     xx||NA.2FFFr_   c                    [        5       n[         HB  nU R                  R                  U5      (       d  M%  U R                  R	                  U5      X'   MD     U$ )zReturns the important common properties layer, color, linetype,
lineweight, ltscale, true_color and color_name as `dxfattribs` dict.
)dictGRAPHIC_PROPERTIESrZ   rU   rW   )rp   attribskeys      r^   graphic_propertiesDXFGraphic.graphic_properties  sE     &%Cxx$$#xx||C0 & r_   c                    U R                   R                  S5      (       a%  U R                   R                  SSS9n[        U5      $ [        5       $ )zReturns object coordinate system (:ref:`ocs`) for 2D entities like
:class:`Text` or :class:`Circle`, returns a pass-through OCS for
entities without OCS support.
	extrusion)r   r   r    )r?   )rZ   is_supportedrW   r   )rp   r   s     r^   ocsDXFGraphic.ocs"  s@     88  --[)DIy>!5Lr_   c                    XR                   l        U(       a  X R                   l        gU R                   R                  S5        g)z7Set owner attribute and paperspace flag. (internal API)rK   N)rZ   ownerrK   rV   )rp   r   rK   s      r^   	set_ownerDXFGraphic.set_owner.  s*    ",HHHH\*r_   c                    g)zStore linked or attached entities. Same API for both types of
appended data, because entities with linked entities (POLYLINE, INSERT)
have no attached entities and vice versa.

(internal API)
N )rp   entitys     r^   link_entityDXFGraphic.link_entity6  s     	r_   c                &    U R                  U5        g)z7Export entity specific data as DXF tags. (internal API)N)export_acdb_entity)rp   	tagwriters     r^   export_entityDXFGraphic.export_entity?  s     		*r_   c                r   UR                   [        :  nU(       a$  UR                  [        [        R
                  5        U R                  R                  U/ SQ5        U R                  (       aJ  U(       aB  [        R                  (       a,  [        U R                  UUR                   [        :  a  SOSS9  gggg)z8Export subclass 'AcDbEntity' as DXF tags. (internal API))rK   r5   r7   rN   r4   r9   r6   rL   r:   r8   r;   rP   rQ   rM   rO   re   rf   )r   rg   N)rH   r   
write_tag2r   r,   r\   rZ   export_dxf_attribsrn   r   store_proxy_graphicsr   r   )rp   r   not_r12s      r^   r   DXFGraphic.export_acdb_entityE  s     &&.  +2B2BC##	
* 'g.J.J ""##,#7#7'#ARs /K'r_   c                   U R                   R                  b  U R                  c  g U R                  R                  R	                  U R                   R                  5      $ ! [
        R                   a     Of = f U R                  R                  R                  U R                   R                  5      $ ! [
        R                   a     gf = f)zVReturns the owner layout or returns ``None`` if entity is not
assigned to any layout.
N)
rZ   r   rv   layoutsget_layout_by_keyr   DXFKeyErrorblocksget_block_layout_by_handleDXFTableEntryErrorry   s    r^   
get_layoutDXFGraphic.get_layouti  s     88>>!TXX%5	88##55dhhnnEE   			88??==dhhnnMM'' 		s#   8A   A76A7;8B4 4C
Cc                    U R                   (       d  [        S5      eU R                  c  SU R                  l        gU R                  5       nU(       a  UR                  U 5        gg)z
Unlink entity from associated layout. Does nothing if entity is already
unlinked.

It is more efficient to call the
:meth:`~ezdxf.layouts.BaseLayout.unlink_entity` method of the associated
layout, especially if you have to unlink more than one entity.
z Can not unlink destroyed entity.N)is_alive	TypeErrorrv   rZ   r   r   unlink_entity)rp   layouts     r^   unlink_from_layoutDXFGraphic.unlink_from_layoutx  sQ     }}>??88!DHHN"  & r_   c                ~    Uc)  U R                  5       nUc  [        R                  " S5      eUR                  X5        g)a  
Move entity from model space or a paper space layout to another layout.
For block layout as source, the block layout has to be specified. Moving
between different DXF drawings is not supported.

Args:
    layout: any layout (model space, paper space, block)
    source: provide source layout, faster for DXF R12, if entity is
            in a block layout

Raises:
    DXFStructureError: for moving between different DXF drawings
Nz#Source layout for entity not found.)r   r   DXFValueErrormove_to_layout)rp   r   sources      r^   r   DXFGraphic.move_to_layout  s:      >__&F~))*OPPd+r_   c                    U R                   UR                   :w  a  [        R                  " S5      eU R                  5       nUR	                  U5        U$ )a  
Copy entity to another `layout`, returns new created entity as
:class:`DXFEntity` object. Copying between different DXF drawings is
not supported.

Args:
    layout: any layout (model space, paper space, block)

Raises:
    DXFStructureError: for copying between different DXF drawings
z8Copying between different DXF drawings is not supported.)rv   r   DXFStructureErrorcopyr/   )rp   r   
new_entitys      r^   copy_to_layoutDXFGraphic.copy_to_layout  sK     88vzz!))J  YY[
*%r_   c                  > U R                   UR                   L d   S5       eU R                  (       d  g[        TU ]  U5        UR	                  U 5        U R
                  nUR                  S5      (       a  UR                  U 5        UR                  S5      (       a  UR                  U 5        UR                  S5      (       a  UR                  U 5        UR                  S5      (       a  UR                  U 5        UR                  S5      (       a  UR                  U 5        UR                  S5      (       a  UR                  U 5        gg)	a  Audit and repair graphical DXF entities.

.. important::

    Do not delete entities while auditing process, because this
    would alter the entity database while iterating, instead use::

        auditor.trash(entity)

    to delete invalid entities after auditing automatically.
z#Auditor for different DXF document.Nr5   r7   r4   r9   r   r;   )rv   r   rh   auditcheck_owner_existrZ   rU   check_for_valid_layer_namecheck_entity_linetypecheck_entity_color_indexcheck_entity_lineweightcheck_extrusion_vectorcheck_transparency)rp   auditorrZ   rs   s      r^   r   DXFGraphic.audit  s    xx7;;&M(MM&}}g!!$'hh;;w..t4;;z""))$/;;w,,T2;;|$$++D1;;{##**40;;~&&&&t, 'r_   c                    [        5       e)zInplace transformation interface, returns `self` (floating interface).

Args:
     m: 4x4 transformation matrix (:class:`ezdxf.math.Matrix44`)
)NotImplementedErrorrp   ms     r^   	transformDXFGraphic.transform  s     "##r_   c                V    U R                   b  U R                   R                  U5        gg)zBShould be called if the main entity transformation was successful.N)xdatar   r   s     r^   post_transformDXFGraphic.post_transform  s#    ::!JJ  # "r_   c                    U R                   SL$ )z)Check if post transform call is required.N)r   ry   s    r^   is_post_transform_required%DXFGraphic.is_post_transform_required  s     zz%%r_   c                N    U R                  [        R                  " XU5      5      $ )zTranslate entity inplace about `dx` in x-axis, `dy` in y-axis and
`dz` in z-axis, returns `self` (floating interface).

Basic implementation uses the :meth:`transform` interface, subclasses
may have faster implementations.
)r   r   	translate)rp   dxdydzs       r^   r   DXFGraphic.translate  s      ~~h00<==r_   c                N    U R                  [        R                  " XU5      5      $ )zsScale entity inplace about `dx` in x-axis, `dy` in y-axis and `dz`
in z-axis, returns `self` (floating interface).
r   r   scale)rp   sxsyszs       r^   r   DXFGraphic.scale  s     ~~hnnRR899r_   c                L    U R                  [        R                  " U5      5      $ )zjScale entity inplace uniform about `s` in x-axis, y-axis and z-axis,
returns `self` (floating interface).
r   )rp   ss     r^   scale_uniformDXFGraphic.scale_uniform  s     ~~hnnQ/00r_   c                L    U R                  [        R                  " X5      5      $ )zRotate entity inplace about vector `axis`, returns `self`
(floating interface).

Args:
    axis: rotation axis as tuple or :class:`Vec3`
    angle: rotation angle in radians
)r   r   axis_rotate)rp   axisangles      r^   rotate_axisDXFGraphic.rotate_axis  s     ~~h224?@@r_   c                L    U R                  [        R                  " U5      5      $ )zuRotate entity inplace about x-axis, returns `self`
(floating interface).

Args:
    angle: rotation angle in radians
)r   r   x_rotaterp   r   s     r^   rotate_xDXFGraphic.rotate_x	       ~~h//677r_   c                L    U R                  [        R                  " U5      5      $ )zuRotate entity inplace about y-axis, returns `self`
(floating interface).

Args:
    angle: rotation angle in radians
)r   r   y_rotater   s     r^   rotate_yDXFGraphic.rotate_y  r   r_   c                L    U R                  [        R                  " U5      5      $ )zuRotate entity inplace about z-axis, returns `self`
(floating interface).

Args:
    angle: rotation angle in radians
)r   r   z_rotater   s     r^   rotate_zDXFGraphic.rotate_z  r   r_   c                X    [        U R                  5      =(       a    SU R                  ;   $ )z5Returns ``True`` if entity has an attached hyperlink.PE_URL)boolr   ry   s    r^   has_hyperlinkDXFGraphic.has_hyperlink$  s    DJJ<X%;<r_   c                   SS[        U5      4/nU(       aa  UR                  S5        UR                  S[        U5      45        U(       a  UR                  S[        U5      45        UR                  S5        U R                  S5        U R                  SU5        U R                  (       a?  SU R                  R
                  ;  a%  U R                  R
                  R                  S5        U $ )zSet hyperlink of an entity.)i  r
    )  {)r  }r
  )strappenddiscard_xdata	set_xdatarv   appidsnew)rp   linkdescriptionlocationr   s        r^   set_hyperlinkDXFGraphic.set_hyperlink(  s     "D#d)#45LL%LL$K 012dCM23LL%8$x'887HHOO)r_   c                T   SnSnSnU R                   (       a  SU R                   ;   ay  U R                  S5       Vs/ s H   oDR                  S:X  d  M  UR                  PM"     nn[	        U5      (       a  US   n[	        U5      S:  a  US   n[	        U5      S:  a  US   nXU4$ s  snf )z,Returns hyperlink, description and location. r
  r  r   r       )r   	get_xdatarr   r   len)rp   r  r  r  tagr   s         r^   get_hyperlinkDXFGraphic.get_hyperlink=  s    ::(djj0*...*BW*B3hhRVFVYSYY*BEW5zzQx5zA~#Ah5zA~ 8(** Xs   B%B%c                  > U R                   (       d  g[        TU ]	  U5        USL=(       a#    U R                  R                  UR
                  ;   nU(       d  SU R                  l        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        U R                  R                  S5        g)z?Remove all dependencies from current document.

(internal API)
NrA   rN   rO   rP   rQ   )r   rh   remove_dependenciesrZ   r7   rw   rV   )rp   otherhas_linetypers   s      r^   r'  DXFGraphic.remove_dependenciesL  s    
 }}#E* D(Sdhh.?.?5??.R )DHH*+-.)*+,r_   c                   U=(       d    0 nSU;  a  U R                   R                  US'   U R                  (       a"  [        R                  " XU R                  5      nO[        R
                  " X5      nU R                   R                  UR                   l        U R                   R                  UR                   l        U$ )zCreate and bind  new entity with same layout settings as `self`.

Used by INSERT & POLYLINE to create appended DXF entities, don't use it
to create new standalone entities.

(internal API)
r5   )rZ   r5   rv   r
   create_db_entryr  r   rK   )rp   type_
dxfattribsr   s       r^   _new_compound_entityDXFGraphic._new_compound_entity`  s      %2

 *$"&((..Jw88,,UIF[[3F88>>

 $ 3 3

r_   c                   > [         TU ]  U5        U R                  nUR                  UR                  5        UR                  UR                  5        UR                  UR                  S5      5        g)z5Register required resources to the resource registry.rN   N)	rh   register_resourcesrZ   	add_layerr5   add_linetyper7   
add_handlerW   )rp   registryrZ   rs   s      r^   r2  DXFGraphic.register_resourcesw  sU    "8,hh399%cll+CGG$567r_   c                (  > [         TU ]  X5        UR                  U R                  R                  5      UR                  l        U R                  R
                  nU" S5      (       a4  UR                  U R                  R                  5      UR                  l        U" S5      (       a4  UR                  U R                  R                  5      UR                  l	        UR                  R                  S5        UR                  R                  S5        g)z3Translate resources from self to the copied entity.r7   rN   rO   rQ   N)rh   map_resources	get_layerrZ   r5   rU   get_linetyper7   
get_handlerN   rV   )rp   clonemappingattrib_existrs   s       r^   r9  DXFGraphic.map_resources  s    e-!++DHHNN;		xx''
##!(!5!5dhh6G6G!HEII)**(/(:(:488;S;S(TEII% 			./		,-r_   )rn   Nrq   zOptional[SubclassProcessor]returnr'   )rC  None)rC  ztuple[int, int, int] | None)r   zclr.RGB | tuple[int, int, int]rC  rD  )rC  float)r;   rE  rC  rD  )rC  r  )rC  r   )rC  r   )r   )r   Optional[str]rK   intrC  rD  )r   r!   rC  rD  )r   r)   rC  rD  )rC  Optional[BaseLayout])r   r(   r   rH  rC  rD  )r   r(   rC  r   )r   r%   rC  rD  )r   r   rC  r   )r   r   rC  rD  )r   rE  r   rE  r   rE  rC  r   )r   rE  r   rE  r   rE  rC  r   )r   rE  rC  r   )r   r   r   rE  rC  r   )r   rE  rC  r   )NN)r  r  r  rF  r  rF  )rC  ztuple[str, str, str])r(  zOptional[Drawing]rC  rD  )r-  r  rC  r   )r6  zxref.RegistryrC  rD  )r=  r   r>  zxref.ResourceMapperrC  rD  )3__name__
__module____qualname____firstlineno____doc__DXFTYPErc   __annotations__r   r"   r,   
DXFATTRIBSri   rz   propertyr   setterdeleterr;   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/  r2  r9  __static_attributes____classcell__rs   s   @r^   r+   r+      s   
 G'.nO^4z;7J 8<4	 <	   	ZZ5 5 	[[' ' 
 
 K K 4 4 G G
++"H', BF, ,*>,	,,*-@$$
 & &>:1A888= &*"&	 #  	*+- -(.8. .r_   r+   c                  <   ^  \ rS rSrSr S   SU 4S jjjrSrU =r$ )r.   i  SEQENDc                h   > [         [        U ]  U5      nU(       a  UR                  U[        5        U$ )z!Loading interface. (internal API))rh   r+   ri   simple_dxfattribs_loaderr-   )rp   rq   rZ   rs   s      r^   ri   SeqEnd.load_dxf_attribs  s/    
 J6yA..s4KL
r_   r   rA  rB  )rI  rJ  rK  rL  rN  ri   rT  rU  rV  s   @r^   r.   r.     s'    G 8<4	 r_   r.   c                    U R                   R                  b   eUc   eUR                  (       a   [        R                  " XR                  5        UR                  U 5        g)zEAdd `entity` entity to the entity database and to the given `layout`.N)rZ   handlerv   r
   bindr/   )r   r   s     r^   r/   r/     sI    ::$$$zzVZZ(
fr_   c                \   UR                   R                  b   eUc   eU R                   R                  UR                   l        X;   aT  UR                  U 5        UR                  (       a   [        R
                  " XR                  5        UR                  U5        gU R                  5         g)z}Add `target` entity to the entity database and to the given `layout`
and replace the `source` entity by the `target` entity.
N)rZ   r]  delete_entityrv   r
   r^  r/   destroy)r   targetr   s      r^   r0   r0     s     ::$$$

))FJJV$::LL,&!r_   c                ~    [        U [        5      (       a  g[        U [        5      (       a  U R                  (       a  gg)zReturns ``True`` if the `entity` has a graphical representations and
can reside in the model space, a paper space or a block layout,
otherwise the entity is a table or class entry or a DXF object from the
OBJECTS section.
TF)
isinstancer+   r$   r2   )r   s    r^   r2   r2     s/     &*%%&-((V-E-Er_   c                n   [         R                  nU R                  nUc  U$  U R                  R	                  S[         R
                  5      n UR                  R	                  U5      nUR                  R                  $ ! [         R                   a    Us $ f = f! [         R                   a    Us $ f = f)zReturns the font name of any DXF entity.

This function always returns a font name even if the entity doesn't support text
styles.  The default font name is "txt".
style)
r   DEFAULT_TEXT_FONTrv   rZ   rW   DEFAULT_TEXT_STYLEDXFAttributeErrorstylesfontr   )r   	font_namerv   
style_namerf  s        r^   r3   r3     s     ''I
**C
{ZZ^^GU-E-EF


z*yy~~	 "" 
 ## s#   *A? 0B ?BBB43B4N)rZ   r'   r[   zIterable[str])r   r+   r   r(   rC  rD  )r   r+   rb  r+   r   r(   rC  rD  )r   r!   rC  zTypeGuard[DXFGraphic])r   r!   rC  r  )L
__future__r   typingr   r   r   r   typing_extensionsr   r	   ezdxf.entitiesr
   ezdxfr   ezdxf.lldxfr   ezdxf.lldxf.attributesr   r   r   r   r   r   r}   r   ezdxf.lldxf.constr   r   r   r   r   r   r   
ezdxf.mathr   r   r   ezdxf.proxygraphicr   r   	dxfentityr!   r"   r#   r$   ezdxf.auditr%   ezdxf.documentr&   r'   ezdxf.layoutsr(   ezdxf.lldxf.tagwriterr)   r*   __all__r   is_valid_layer_nameis_valid_table_nameis_valid_aci_coloris_integer_boolis_valid_lineweightfix_lineweightis_positiver   r,   rO  r-   r1   r+   register_entityr.   r/   r0   r2   r3   r   r_   r^   <module>r     s(   # 9 9 - "  !       + * G N N#&+(7
	  ' C93P3PQ33	
 22 
 // 
 33**
 ++ 
 RwN cgEcgE  //	
 swF"37TJ%cgM "#'1tT $CGdKWPS[ Sh -[9 68\. \.~ 	Z   
r_   