Ë
    £èhÌ@  ã                  óÂ  — d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlZd dlmZ d dlmZmZmZmZ  ej.                  d«      Z G d	„ d
e«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zi dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“d)d*“d+d“d,d“d-d“d.d“d/d“d0d “d"d$d&d1œ¥Z h d2£Z!d3Z"d4Z#d5Z$dId6„Z%dId7„Z&dJd8„Z'dKd9„Z(	 dLd:d;œ	 	 	 	 	 	 	 dMd<„Z)	 dLd:d:d=œ	 	 	 	 	 	 	 	 	 	 	 dNd>„Z*	 dOd%d?d:d@œ	 	 	 dPdA„Z+dQdB„Z,	 	 	 dR	 	 	 	 	 	 	 	 	 	 	 	 	 dSdC„Z-dTdD„Z.edE„ «       Z/	 	 	 	 	 	 	 	 dUdF„Z0dVdG„Z1dWdH„Z2y)Xé    )Úannotations)ÚOptionalN)Úcontextmanager)ÚPath)ÚDrawing)Úis_dxf_fileÚdxf_infoÚis_binary_dxf_fileÚdwg_versionÚezdxfc                  ó   — e Zd Zy)Ú
ODAFCErrorN©Ú__name__Ú
__module__Ú__qualname__© ó    ú2lib/python3.12/site-packages/ezdxf/addons/odafc.pyr   r      ó   „ Ør   r   c                  ó   — e Zd Zy)ÚUnknownODAFCErrorNr   r   r   r   r   r       r   r   r   c                  ó   — e Zd Zy)ÚODAFCNotInstalledErrorNr   r   r   r   r   r   $   r   r   r   c                  ó   — e Zd Zy)ÚUnsupportedFileFormatNr   r   r   r   r   r   (   r   r   r   c                  ó   — e Zd Zy)ÚUnsupportedPlatformNr   r   r   r   r   r   ,   r   r   r   c                  ó   — e Zd Zy)ÚUnsupportedVersionNr   r   r   r   r    r    0   r   r   r    ÚR12ÚACAD12ÚR13ÚACAD13ÚR14ÚACAD14ÚR2000ÚACAD2000ÚR2004ÚACAD2004ÚR2007ÚACAD2007ÚR2010ÚACAD2010ÚR2013ÚACAD2013ÚR2018ÚACAD2018ÚAC1004ÚACAD9ÚAC1006ÚACAD10ÚAC1009ÚAC1012ÚAC1014ÚAC1015ÚAC1018ÚAC1021)ÚAC1024ÚAC1027ÚAC1032>   r4   r6   r"   r$   r&   r(   r*   r,   r.   r0   r2   ÚWindowsÚLinuxÚDarwinc                 ó`   — t         j                  j                  dd«      j                  d«      S )Núodafc-addonÚwin_exec_pathÚ"©r   ÚoptionsÚgetÚstripr   r   r   Úget_win_exec_pathrK   ^   s$   € Ü�=‰=×Ñ˜]¨OÓ<×BÑBÀ3ÓGÐGr   c                 ó`   — t         j                  j                  dd«      j                  d«      S )NrD   Úunix_exec_pathrF   rG   r   r   r   Úget_unix_exec_pathrN   b   s%   € Ü�=‰=×Ñ˜]Ð,<Ó=×CÑCÀCÓHÐHr   c                 ó
  — t        j                  «       t        t        fv r=t	        «       } | rt        | «      j                  «       ryt        j                  d«      duS t        j                  j                  t        «       «      S )z6Returns ``True`` if the ODAFileConverter is installed.TÚODAFileConverterN)ÚplatformÚsystemÚLINUXÚDARWINrN   r   Úis_fileÚshutilÚwhichÚosÚpathÚexistsrK   )rM   s    r   Úis_installedr[   f   s_   € ä‡�ÓœU¤F˜OÑ+Ü+Ó-ˆÙœd >Ó2×:Ñ:Ô<ØÜ�|‰|Ð.Ó/°tÐ;Ð;ä�7‰7�>‰>Ô+Ó-Ó.Ð.r   c                óf   — t         j                  | j                  «       | j                  «       «      S ©N)ÚVERSION_MAPrI   Úupper)Úversions    r   Úmap_versionra   q   s   € Ü�?‰?˜7Ÿ=™=›?¨G¯M©M«OÓ<Ð<r   F)Úauditc          	     ó²  — t        | «      j                  «       }|j                  «       st        d|› d�«      ‚t	        |t
        «      rt        |«      }nt        | «      }t        j                  d¬«      5 }t        |j                  t        |j                  «      |d||¬«      }t        |«       t        |«      |j                  d«      j                  z  }|j                  «       rHt!        j"                  t        |«      «      }t        |j                  d«      «      |_        |cddd«       S 	 ddd«       t'        d	«      ‚# 1 sw Y   t'        d	«      ‚xY w)
aý  Uses an installed `ODA File Converter`_ to convert a DWG/DXB/DXF file
    into a temporary DXF file and load this file by `ezdxf`.

    Args:
        filename: file to load by ODA File Converter
        version: load file as specific DXF version, by default the same version
            as the source file or if not detectable the latest by `ezdxf`
            supported version.
        audit: audit source file before loading

    Raises:
        FileNotFoundError: source file not found
        odafc.UnknownODAFCError: conversion failed for unknown reasons
        odafc.UnsupportedVersion: invalid DWG version specified
        odafc.UnsupportedFileFormat: unsupported file extension
        odafc.ODAFCNotInstalledError: ODA File Converter not installed

    zNo such file: 'Ú'Úodafc_©ÚprefixÚDXF©Úoutput_formatr`   rb   ú.dxfNz%Failed to convert file: Unknown Error)r   ÚabsoluterU   ÚFileNotFoundErrorÚ
isinstanceÚstrra   Ú_detect_versionÚtempfileÚTemporaryDirectoryÚ_odafc_argumentsÚnameÚparentÚ_execute_odafcÚwith_suffixrZ   r   ÚreadfileÚfilenamer   )ry   r`   rb   ÚinfileÚtmp_dirÚargsÚout_fileÚdocs           r   rx   rx   u   s  € ô* �(‹^×$Ñ$Ó&€FØ�>‰>ÔÜ /°&°¸Ð ;Ó<Ð<Ü�'œ3ÔÜ˜gÓ&‰ä! (Ó+ˆä	×	$Ñ	$¨HÕ	5¸ÜØ�K‰KÜ�—‘ÓØØØØô
ˆô 	�tÔÜ˜“= 6×#5Ñ#5°fÓ#=×#BÑ#BÑBˆØ�?‰?ÔÜ—.‘.¤ X£Ó/ˆCÜ˜v×1Ñ1°&Ó9Ó:ˆCŒLØ÷ 
6Ñ	5ð ÷ 
6ô ÐCÓ
DÐD÷ 
6ô ÐCÓ
DÐDús   Á6B/EÅE)rb   Úreplacec          	     óŠ  — |€| j                   }t        |   }t        |«      j                  «       }t        |j                  «      }|j                  «       r!|r|j                  «        nt        d|› �«      ‚|j                  «       ršt        j                  d¬«      5 }t        |«      |j                  d«      j                  z  }	| j                  }
| j                  |	«       |
| _        t        |	j                  |t        |«      d||¬«      }t!        |«       ddd«       yt#        dt        |«      › d	�«      ‚# 1 sw Y   yxY w)
aã  Uses an installed `ODA File Converter`_ to export the DXF document `doc`
    as a DWG file.

    A temporary DXF file will be created and converted to DWG by the
    ODA File Converter. If `version` is not specified the DXF version of the
    source document is used.

    Args:
        doc: `ezdxf` DXF document as :class:`~ezdxf.drawing.Drawing` object
        filename: output DWG filename, the extension will be set to ".dwg"
        version: DWG version to export, by default the same version as
            the source document.
        audit: audit source file by ODA File Converter at exporting
        replace: replace existing DWG file if ``True``

    Raises:
        FileExistsError: target file already exists, and argument `replace` is
            ``False``
        FileNotFoundError: parent directory of target file does not exist
        odafc.UnknownODAFCError: exporting DWG failed for unknown reasons
        odafc.ODAFCNotInstalledError: ODA File Converter not installed

    NzFile already exists: re   rf   rk   ÚDWGri   zNo such file or directory: 'rd   )Ú
dxfversionr^   r   rl   ru   rZ   ÚunlinkÚFileExistsErrorrq   rr   rw   rt   ry   Úsaveasrs   ro   rv   rm   )r~   ry   r`   rb   r   Úexport_versionÚdwg_fileÚ
out_folderr{   Údxf_fileÚold_filenameÚ	argumentss               r   Ú
export_dwgrŒ   ¤   s  € ð> €Ø—.‘.ˆÜ  Ñ)€NÜ�H‹~×&Ñ&Ó(€HÜ�h—o‘oÓ&€JØ‡�ÔÙØ�O‰OÕä!Ð$9¸(¸Ð"DÓEÐEØ×ÑÔÜ×(Ñ(°Õ9¸WÜ˜G“} x×';Ñ';¸FÓ'C×'HÑ'HÑHˆHð Ÿ<™<ˆLØ�J‰J�xÔ Ø'ˆCŒLä(Ø—‘ØÜ�J“Ø#Ø&ØôˆIô ˜9Ô%÷! :Ð9ô$  Ð">¼sÀ:»Ð>OÈqÐ QÓRÐR÷% :Ð9ús   ÂA;D9Ä9ET)r`   rb   r   c          	     ó€  — t        |«      }|t        vrt        d|› d�«      ‚t        | «      j	                  «       j                  «       }|j                  «       st        d| › d�«      ‚|rt        |«      }nW|j                  j                  «       }|dk(  r|j                  d«      }n&|dk(  r|j                  d«      }nt        d|› d�«      ‚|j                  «       r|st        d|› d�«      ‚|j                  }|j                  «       r|j                  «       st        d|› d�«      ‚|j                  }|j                  «       d	d
 }	|	dvrt        d|› d�«      ‚t!        j"                  d¬«      5 }
t%        |j&                  t)        |j                  «      t)        |
«      |	||¬«      }t+        |«       t-        t        |
«      j/                  «       «      }|r	 t1        j2                  |d   |«       nt9        d|	› d�«       d
d
d
«       y
# t4        $ r t1        j6                  |d   |«       Y Œ-w xY w# 1 sw Y   y
xY w)aá  Convert `source` file to `dest` file.

    The file extension defines the target format
    e.g. :code:`convert("test.dxf", "Test.dwg")` converts the source file to a
    DWG file.
    If `dest` is an empty string the conversion depends on the source file
    format and is DXF to DWG or DWG to DXF.
    To convert DXF to DXF an explicit destination filename is required:
    :code:`convert("r12.dxf", "r2013.dxf", version="R2013")`

    Args:
        source: source file
        dest: destination file, an empty string uses the source filename with
            the extension of the target format e.g. "test.dxf" -> "test.dwg"
        version: output DXF/DWG version e.g. "ACAD2018", "R2018", "AC1032"
        audit: audit files
        replace: replace existing destination file

    Raises:
        FileNotFoundError: source file or destination folder does not exist
        FileExistsError: destination file already exists and argument `replace`
            is ``False``
        odafc.UnsupportedVersion: invalid DXF version specified
        odafc.UnsupportedFileFormat: unsupported file extension
        odafc.UnknownODAFCError: conversion failed for unknown reasons
        odafc.ODAFCNotInstalledError: ODA File Converter not installed

    zInvalid version: 'rd   zSource file not found: 'ú.dwgrk   úUnsupported file format: 'zTarget file already exists: 'z$Destination folder does not exist: 'é   N)rh   r�   re   rf   )Ú	in_folderrˆ   rj   r`   rb   r   zUnknown error: no z file was created)ra   ÚVALID_VERSIONSr    r   Ú
expanduserrl   rZ   rm   ÚsuffixÚlowerrw   r   r„   ru   Úis_dirr_   rq   rr   rs   rt   ro   rv   ÚlistÚiterdirrV   ÚmoveÚIOErrorÚcopyr   )ÚsourceÚdestr`   rb   r   Úsrc_pathÚ	dest_pathÚextÚ
parent_dirÚfmtr{   r‹   Úresults                r   Úconvertr¤   ã   s  € ôH ˜'Ó"€GØ”nÑ$Ü Ð#5°g°Y¸aÐ!@ÓAÐAÜ�F‹|×&Ñ&Ó(×1Ñ1Ó3€HØ�?‰?ÔÜÐ":¸6¸(À!Ð DÓEÐEÙÜ˜“J‰	à�o‰o×#Ñ#Ó%ˆØ�&Š=Ø ×,Ñ,¨VÓ4‰IØ�FŠ]Ø ×,Ñ,¨VÓ4‰Iä'Ð*DÀSÀEÈÐ(KÓLÐLØ×ÑÔ¡'ÜÐ =¸i¸[ÈÐJÓKÐKØ×!Ñ!€JØ×ÑÔ j×&7Ñ&7Ô&9äÐ"FÀzÀlÐRSÐ TÓUÐUØ
×
Ñ
€CØ
�)‰)‹+�a�bˆ/€CØ
�.Ñ Ü#Ð&@ÀÀÀQÐ$GÓHÐHä	×	$Ñ	$¨HÕ	5¸Ü$Ø�M‰MÜ˜(Ÿ/™/Ó*Ü˜7“|ØØØô
ˆ	ô 	�yÔ!Ü”d˜7“m×+Ñ+Ó-Ó.ˆÙð2Ü—‘˜F 1™I yÕ1ô Ð 2°3°%Ð7HÐIÔJ÷# 
6Ð	5øô ò 2Ü—‘˜F 1™I yÖ1ð2ú÷ 
6Ð	5ús1   Å2A'H4ÇHÇ3H4È"H1È.H4È0H1È1H4È4H=c                óÊ  — d}t         j                  j                  | «      d   j                  «       }|dk(  r`t	        | «      r	 t        |«      S t        | «      rjt        | d«      5 }t        |«      }t        |j                     }ddd«       t        |«      S |dk(  rt        | «      }|€t        d«      ‚t        d|› d	�«      ‚t        |«      S # 1 sw Y   t        |«      S xY w)
zêReturns the DXF/DWG version of file `path` as ODAFC compatible version
    string.

    Raises:
        odafc.UnsupportedVersion: unknown or unsupported DWG version
        odafc.UnsupportedFileFormat; unsupported file extension

    r2   r�   rk   ÚrtNrŽ   z#Unknown or unsupported DWG version.r�   rd   )rX   rY   Úsplitextr•   r
   r   Úopenr	   r^   r`   r   r    r   ra   )rY   r`   r    ÚfpÚinfos        r   rp   rp   6  sà   € ð €GÜ
�'‰'×
Ñ
˜4Ó
  Ñ
#×
)Ñ
)Ó
+€CØ
ˆf‚}Ü˜dÔ#Øô �wÓÐô ˜ÔÜ�d˜DÔ! RÜ “|�Ü% d§l¡lÑ3�÷ "ô �wÓÐð 
�ŠÜ˜dÓ#ˆØˆ?Ü$Ð%JÓKÐKä#Ð&@ÀÀÀQÐ$GÓHÐHä�wÓÐ÷ "ô �wÓÐús   Á&CÃC"c                ó$   — d}|rdnd}||||||| gS )a“  ODA File Converter command line format:

    ODAFileConverter "Input Folder" "Output Folder" version type recurse audit [filter]

        - version: output version: "ACAD9" - "ACAD2018"
        - type: output file type: "DWG", "DXF", "DXB"
        - recurse: recurse Input Folder: "0" or "1"
        - audit: audit each file: "0" or "1"
        - optional Input files filter: default "*.DWG,*.DXF"

    Ú0Ú1r   )ry   r‘   rˆ   rj   r`   rb   ÚrecurseÚ	audit_strs           r   rs   rs   R  s1   € ð& €GÙ‘ #€IàØØØØØØðð r   c                ó<  — t        «       }| t        k7  r6|r4t        |«      j                  «       r|S t        j                  d|› d�«       t        j                  d«      }|s.| t        k(  r%t        «       }t        |«      j                  «       sd}|st        d«      ‚|S )zuGet ODAFC application path.

    Raises:
        odafc.ODAFCNotInstalledError: ODA File Converter not installed

    z	command 'z%' not found, using 'ODAFileConverter'rP   Nz~Could not find ODAFileConverter in the path. Install application from https://www.opendesign.com/guestfiles/oda_file_converter)
rN   ÚWINDOWSr   rU   ÚloggerÚwarningrV   rW   rK   r   )rR   rM   rY   s      r   Ú_get_odafc_pathr´   r  sœ   € ô (Ó)€Nà”Ò™^Ü�Ó×'Ñ'Ô)Ø!Ð!ä�N‰NØ˜NÐ+Ð+PÐQôô �<‰<Ð*Ó+€DÙ�FœgÒ%Ü Ó"ˆÜ�D‹z×!Ñ!Ô#ØˆDáÜ$ð`ó
ð 	
ð €Kr   c               #  ó¾  K  — t        j                  d«      r‹dt        j                  «       › �} t	        j
                  d| dddgt        j                  t        j                  ¬«      }t        j                  d«       | –— 	 |j                  «        |j                  «        y
t        j                  d«       t        j                  d	   –— y
# t        $ r Y y
w xY w­w)zCSee xvbfwrapper library for a more feature complete xvfb interface.ÚXvfbÚ:z-screenr¬   Ú
800x600x24)ÚstdoutÚstderrgš™™™™™¹?z=Install xvfb to prevent the ODAFileConverter GUI from openingÚDISPLAYN)rV   rW   rX   ÚgetpidÚ
subprocessÚPopenÚDEVNULLÚtimeÚsleepÚ	terminateÚwaitÚOSErrorr²   r³   Úenviron)ÚdisplayÚprocs     r   Ú_linux_dummy_displayrÈ   •  s±   è ø€ ô ‡|�|�FÔØ”b—i‘i“k�]Ð#ˆÜ×ÑØ�W˜i¨¨lÐ;Ü×%Ñ%Ü×%Ñ%ô
ˆô
 	�
‰
�3ŒØŠð	Ø�N‰NÔØ�I‰I�Kô 	�‰ÐVÔXÜ�j‰j˜Ñ#Ó#øô	 ò 	Ùð	üs*   ‚A?CÂ C Â",CÃ	CÃCÃCÃCc                óˆ  — | t         k(  rUt        «       5 }t        j                  j	                  «       }||d<   t        j                  |g|z   dd|¬«      }ddd«       |S | t        k(  rt        j                  |g|z   dd¬«      }|S | t        k(  ršt        j                  «       }t
        j                  t
        j                  z  |_        t
        j                  |_        t        j                  |g|z   t
        j                   t
        j                   |¬«      }|j#                  «        |S t%        d| › �«      ‚# 1 sw Y   S xY w)aT  Execute ODAFC application without launching the GUI.

    Args:
        system: "Linux", "Windows" or "Darwin"
        command: application to execute
        arguments: ODAFC argument list

    Raises:
        odafc.UnsupportedPlatform: for unsupported platforms
        odafc.ODAFCNotInstalledError: ODA File Converter not installed

    r»   T)ÚtextÚcapture_outputÚenvN)rÊ   rË   )r¹   rº   ÚstartupinfozUnsupported platform: )rS   rÈ   rX   rÅ   r›   r½   ÚrunrT   r±   ÚSTARTUPINFOÚCREATE_NEW_CONSOLEÚSTARTF_USESHOWWINDOWÚdwFlagsÚSW_HIDEÚwShowWindowr¾   ÚPIPErÃ   r   )rR   Úcommandr‹   rÆ   rÌ   rÇ   rÍ   s          r   Ú_run_with_no_guir×   «  s#  € ð ”‚Ü!Ô# wÜ—*‘*—/‘/Ó#ˆCØ$ˆC�	‰NÜ—>‘>Ø�	˜IÑ%¨DÀÈ3ôˆD÷ $ð: €Kð- 
”6Ò	ä�~‰~˜w˜i¨)Ñ3¸$ÈtÔTˆð( €Kð% 
”7Ò	ä ×,Ñ,Ó.ˆä×)Ñ)¬J×,KÑ,KÑKð 	Ôô #-×"4Ñ"4ˆÔÜ×ÑØˆI˜	Ñ!Ü—?‘?Ü—?‘?Ø#ô	
ˆð 	�	‰	Œð
 €Kô "Ð$:¸6¸(Ð"CÓDÐD÷9 $ð: €Kús   ”AD7Ä7Ec                ób   — |j                  «       }| t        k(  r|dk7  xr |dk7  S |dk7  ry|dk7  S )NÚ zQuit (core dumped)r   T)rJ   rS   )rR   Ú
returncoderº   s      r   Ú_odafc_failedrÛ   Û  s=   € à�\‰\‹^€FØ”‚à˜‰|Ò> Ð*>Ñ >Ð>Ø	�qŠØà˜‰|Ðr   c                óþ  — t         j                  d| › �«       t        j                  «       }t	        |«      }t        ||| «      }|j                  }|t        k(  rS|j                  j                  «       j                  d«      }|j                  j                  «       j                  d«      }n|j                  }|j                  }t        |||«      r+d|› d|› d|› �}t         j                  |«       t        |«      ‚|S )a)  Execute ODAFC application.

    Args:
        arguments: ODAFC argument list

    Raises:
        odafc.ODAFCNotInstalledError: ODA File Converter not installed
        odafc.UnknownODAFCError: execution failed for unknown reasons
        odafc.UnsupportedPlatform: for unsupported platforms

    z)Running ODAFileConverter with arguments: zutf-8z)ODA File Converter failed: return code = z
.
stdout: z	
stderr: )r²   ÚdebugrQ   rR   r´   r×   rÚ   r±   r¹   ÚreadÚdecoderº   rÛ   r   )r‹   rR   Úoda_fcrÇ   rÚ   r¹   rº   Úmsgs           r   rv   rv   ç  så   € ô ‡L�LÐ<¸Y¸KÐHÔIÜ�_‰_Ó€FÜ˜VÓ$€FÜ˜F F¨IÓ6€DØ—‘€JØ”ÒØ—‘×!Ñ!Ó#×*Ñ*¨7Ó3ˆØ—‘×!Ñ!Ó#×*Ñ*¨7Ó3‰à—‘ˆØ—‘ˆä�V˜Z¨Ô0à7¸
°|ð DØ�h˜j¨¨ð2ð 	ô 	�‰�SÔÜ Ó$Ð$Ø€Mr   )Úreturnro   )râ   Úbool)r`   ro   râ   ro   r]   )ry   ústr | os.PathLiker`   úOptional[str]rb   rã   râ   r   )r~   r   ry   rä   r`   rå   rb   rã   r   rã   râ   ÚNone)rÙ   )rœ   rä   r�   rä   )rY   ro   râ   ro   )rh   r0   F)ry   ro   r‘   ro   rˆ   ro   rj   ro   r`   ro   rb   rã   râ   ú	list[str])rR   ro   râ   ro   )rR   ro   rÖ   ro   r‹   rç   râ   zsubprocess.Popen)rR   ro   rÚ   Úintrº   ro   râ   rã   )r‹   rç   râ   zOptional[bytes])3Ú
__future__r   Útypingr   ÚloggingrX   rQ   rV   r½   rq   rÀ   Ú
contextlibr   Úpathlibr   r   Úezdxf.documentr   Úezdxf.lldxf.validatorr   r	   r
   r   Ú	getLoggerr²   rš   r   r   r   r   r   r    r^   r’   r±   rS   rT   rK   rN   r[   ra   rx   rŒ   r¤   rp   rs   r´   rÈ   r×   rÛ   rv   r   r   r   Ú<module>rñ      s  ðõ #Ý Û Û 	Û Û Û Û Û Ý %Ý ã Ý "÷ó ð 
ˆ×	Ñ	˜7Ó	#€ô	�ô 	ô	˜
ô 	ô	˜Zô 	ô	˜Jô 	ô	˜*ô 	ô	˜ô 	ðØ	ˆ8ðà	ˆ8ðð 
ˆ8ðð ˆZð	ð
 ˆZðð ˆZðð ˆZðð ˆZðð ˆZðð ˆgðð ˆhðð ˆhðð ˆhðð ˆhðð ˆjðð  ˆjð!ð" ˆjð#ð$ ØØò)€ò.€ð €Ø€Ø	€óHóIó/ó=ð
 ;?ð,EØQVñ,EØð,EØ*7ð,EØJNð,Eàó,Eðd "ð<Sð
 Øñ<SØ	ð<Sàð<Sð ð<Sð
 ð<Sð ð<Sð 
ó<SðB !ðPKð Ø
ØñPKØðPKà
óPKóf ð@ ØØðØðàðð ðð ð	ð
 ðð ðð óó@ ðF ñ$ó ð$ð*-Øð-Øð-Ø*3ð-àó-ó`	ôr   