
    HfX                        d dl Z d dlZd dlmZ d dlmZ  e j                  dd       d dlmZ  e j                  dd       d dlmZ d dl	Z	d d	l
 d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZ ej,                  d
       dZdZdZedz   Zedz   Zedz   ZdadZ ej>                  d        G d dej                        Z  G d d      Z! G d d      Z" G d dejF                  jH                        Z% G d dejF                  jH                        Z& G d dejF                  jH                        Z' G d dejF                  jH                        Z(d Z)e*d k(  red dl+Z+d dlZd dl,Z, e,jZ                  ej\                  ej^                  !       d dl0Z0	  e0jb                  e0jd                  d"        e+jf                           ejh                          d d#l5m6Z6  e6d$%       d&Z7 e8e	jr                        d'kD  r<e	jr                  d'd D ]*  Z:e:d(k(  r e;d$        ejx                  e=       #e:d)k(  s)d$Z7, e7r e)         e	j|                  d         e=d*        ej~                  ej                  +      Z e(       ZA ej                           ej                           ej                          eAj                          yy#  Y xY w),    N)GObject)GLibGdkz3.0)r   Gtkr   )*z1.9.52z!org.fedoraproject.Config.Printingz"/org/fedoraproject/Config/Printingz.NewPrinterDialogz.PrinterPropertiesDialogz
.JobViewerzsystem-config-printerc                       e Zd Zej                  j
                  ddfej                  j
                  dej                  ffdZd Zd Z	d Z
d Zd Zd	 Zy)
FetchedPPDsN )readyerrorc                 l    t         j                   j                  |        || _        || _        d | _        y N)r   __init__	_cupsconn	_language_ppds)selfcupsconnlanguages      4/usr/share/system-config-printer/scp-dbus-service.pyr   zFetchedPPDs.__init__D   s)      $'!!
    c                     | j                   d uS r   r   r   s    r   is_readyzFetchedPPDs.is_readyJ   s    zz%%r   c                     | j                   S r   r   r   s    r   get_ppdszFetchedPPDs.get_ppdsM   s    zzr   c                     t        d       d | _        | j                  j                  | j                  | j
                         y )NzFetchPPDs: runningreply_handlererror_handler)
debugprintr   r   getPPDs2_cups_getppds_reply_cups_errorr   s    r   runzFetchedPPDs.runP   s;    ()
t/G/G/3/?/? 	  	Ar   c                 V    t        dt        |      z         | j                  d|       y )NzFetchPPDs: error: %sr   )r#   repremitr   connexcs      r   r&   zFetchedPPDs._cups_errorV   s"    *T3Z78		7C r   c                     t        d       t        j                  j                  || j                        | _        | j                  d       y )NzFetchPPDs: success)r   r   )r#   cupshelpersppdsPPDsr   r   r*   r   r,   results      r   r%   zFetchedPPDs._cups_getppds_replyZ   s8    () %%**FT^^*L
		7r   )__name__
__module____qualname__r   SignalFlagsRUN_LASTTYPE_PYOBJECT__gsignals__r   r   r   r'   r&   r%   r   r   r   r
   r
   =   s`    %%..b9%%..((*,
L&A!r   r
   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
GetBestDriversRequestc                    || _         || _        || _        || _        || _        || _        || _        g | _        g | _        d| _	        t        d| z         t        j                          t        t        d       t        | j                  | j                        a| j                  j                  t        j!                  d| j"                               | j                  j                  t        j!                  d| j$                               t        j'                          y t        j)                         r!t        d       | j#                  t               y t        d       | j                  j                  t        j!                  d| j"                               | j                  j                  t        j!                  d| j$                               y )NF+%sz*GetBestDrivers request: need to fetch PPDsr   r   z,GetBestDrivers request: PPDs already fetchedz(GetBestDrivers request: waiting for PPDs)	device_iddevice_make_and_model
device_urir   r   r!   r"   _signalsinstalled_filesdownload_triedr#   g_killtimeradd_holdg_ppdsr
   appendconnect_ppds_ready_ppds_errorr'   r   )r   r?   r@   rA   r   r   r!   r"   s           r   r   zGetBestDriversRequest.__init__`   sT   "%:"$  **!#EDL!>DE $--?FMM  &..'4;K;K"LMMM  &..'4;K;K"LMJJM!JK  &)FG$$fnng6:6F6F'H I$$fnng6:6F6F'H Ir   c                      t        d| z         y Nz-%sr#   r   s    r   __del__zGetBestDriversRequest.__del__       EDL!r   c                 P    | j                   D ]  }t        j                  |        y r   )rB   rG   
disconnect)r   ss     r   _disconnect_signalsz)GetBestDriversRequest._disconnect_signals   s#     	"Aq!	"r   c                 F    | j                          | j                  |       y r   )rT   r"   )r   fetchedppdsr-   s      r   rK   z!GetBestDriversRequest._ppds_error   s      #C r   c                    |j                         sy | j                          |j                         }	 | j                  r t	        j
                  | j                        }nPi }t        j                  j                  | j                        \  }}||d<   ||d<   d|d<   g |d<   d|d|d| _        |j                  |d   |d   |d   |d   | j                  | j                        }|j                  |j                         | j                  ||	      }|d
   }||   }		 |	dk7  r| j                  s
d| _        t        j                          | _        | j"                  j$                  j'                  d       | j"                  j)                  d| j*                        | j"                  j)                  d| j,                        g| _        |D 
cg c]	  }
|
||
   f c}
| _        | j"                  j3                  d| j                        s2	 t4        j7                          t9        d      }| j;                  |       y y t4        j7                          | j=                  |D 
cg c]	  }
|
||
   f c}
       y c c}
w # t9        d      }| j;                  |       w xY w#  Y cxY wc c}
w # t>        $ r8}	 t4        j7                          n#  Y nxY w| j;                  |       Y d }~y d }~ww xY w)NMFGMDL DESCMDzMFG:z;MDL:;)devidfitr   exactTFdialog-canceleddriver-download-checkeddownload_driver)r^   zFailed to launch dialog) r   rT   r   r?   r/   parseDeviceIDr0   ppdMakeModelSplitr@   getPPDNamesFromDeviceIDrA   orderPPDNamesByPreferencekeysrC   rD   
newprinterNewPrinterGUIdialogNewPrinterWindow	set_modalrI   on_dialog_canceledon_driver_download_checkedhandlesreply_if_failinitrE   remove_holdRuntimeErrorr"   r!   	Exception)r   rV   r0   id_dictmfgmdlr_   ppdnamelistppdnamestatusxes               r   rJ   z!GetBestDriversRequest._ppds_ready   s   ##&  ###&=	#~~%33T^^D#((::D<V<VW!$!$!#!#58#!>..07070704040J0JLC 88#((+:>:N:N@G>A 9 CK "!nG\FW$T-@-@*.D'",":":"<DKKK00::EB$(KK$7$79J9=9P9P%R$(KK$7$79R9=9X9X%Z$[ L @K)K!1c!f+)KD&;;++->37>> , C3'336 ,.G HA ..2 ##&k B!SV BC! *L !-.G HA ..2  !C 	#''*""	#sy   C)J% B-J 
I3/J I8 J :#J% J +J% 3J 8JJ J
J% %	K&/KK!KK!!K&c                     | j                   D ]  }| j                  j                  |        | j                  j                          | `y r   )rp   rk   rR   destroyr   handles     r   _destroy_dialogz%GetBestDriversRequest._destroy_dialog   s>    ll 	,FKK""F+	, 	Kr   c                    t        |      dkD  rt        d       | j                  j                  t        j                  d| j                               | j                  j                  t        j                  d| j                               t        j                          y t        j                          | j                          | j                  | j                         y )Nr   z;GetBestDrivers request: Re-fetch PPDs after driver downloadr   r   )lenr#   rB   rH   rG   rI   rJ   rK   r'   rE   rs   r   r!   rq   r   objrC   s      r   ro   z0GetBestDriversRequest.on_driver_download_checked   s     1$UVMM  &..'4;K;K"LMMM  &..'4;K;K"LMJJM"D../r   c                     t         j                          | j                          | j                  | j                         y r   )rE   rs   r   r!   rq   r   r   s     r   rn   z(GetBestDriversRequest.on_dialog_canceled   s.    "D../r   N)r4   r5   r6   r   rO   rT   rK   rJ   r   ro   rn   r   r   r   r<   r<   _   s.    IB""!E#N
00r   r<   c                        e Zd Zd Zd ZddZy)GroupPhysicalDevicesRequestc                 X   || _         || _        || _        t        d| z         	 t        j                          i }i | _        | j                   j                         D ]A  \  }}t        j                  |fi |}|| j                  |<   |j                  d      s=|||<   C t        |      dkD  r2t        j                  |      }|j                  | j                         y | j                          y # t         $ r/}	t        j#                          | j                  |	       Y d }	~	y d }	~	ww xY w)Nr>   zdnssd://r   )r!   )devicesr!   r"   r#   rE   rF   
deviceobjsitemsr/   Device
startswithr   dnssdresolveDNSSDHostNamesResolverresolve_groupru   rs   )
r   r   r!   r"   need_resolvingrA   device_dict	deviceobjresolverr}   s
             r   r   z$GroupPhysicalDevicesRequest.__init__   s   **EDL!	#  #N DO+/<<+=+=+@ ;'
K'..
JkJ	.7
+((*51:N:.	; N#a''>>O   < 	###&""	#s%   A3C1 AC1  C1 1	D):%D$$D)c                      t        d| z         y rM   rN   r   s    r   rO   z#GroupPhysicalDevicesRequest.__del__  rP   r   Nc                    	 g | _         | j                  j                         D ]V  \  }}t        j                  |      }d}	 | j                   j	                  |      }| j                   |   j                  |       X g }| j                   D ]9  }|j                  |j                         D 	cg c]  }	|	j                   c}	       ; t        j                          | j                  |       y # t        $ r | j                   j                  |       Y w xY wc c}	w # t        $ r/}
t        j                          | j                  |
       Y d }
~
y d }
~
ww xY w)NF)physdevsr   r   PhysicalDeviceindex
add_device
ValueErrorrH   get_devicesurirE   rs   r!   ru   r"   )r   resolved_devicesrA   r   newphysicaldevicematchediuris_by_physphysdevr|   r}   s              r   r   z"GroupPhysicalDevicesRequest._group  s,   	#DM)-)>)>)A =%
I$2$A$A9$M!=++->?AMM!$//;= L== N##W5H5H5K%Laee%LMN ##&- " =MM((*;<=
 &M  	###&""	#sG   >D 9C,:0D *D
=.D ,$DD DD 	E$%EEr   )r4   r5   r6   r   rO   r   r   r   r   r   r      s    #2"#r   r   c                   :   e Zd Zd Zd Zej                  j                  edd      d        Z	ej                  j                  edd      d        Z
ej                  j                  edd      d	        Zd
 Zd ZddZej                  j                  ed      d        Zej                  j                  ed      d        Zej                  j                  ed      d        Zej                  j                  ed      d        Zd Zd Zd Zd Zd Zy)ConfigPrintingNewPrinterDialogc                    t         j                  j                  t        |      }t         j                  j                  j                  | ||       t        j                         | _        | j                  j                  j                  d       | j                  j                  d| j                        | j                  j                  d| j                        | j                  j                  d| j                        | j                  j                  d| j                        g| _        t#        j$                         | _        || _        t+        d| z         y )NbusFra   zprinter-addedzprinter-modifiedrb   r>   )dbusserviceBusName
CONFIG_BUSObjectr   ri   rj   rk   rl   rm   rI   rn   on_printer_addedon_printer_modifiedro   rp   ppdcachePPDCache	_ppdcacher   r#   )r   r   pathr   bus_names        r   r   z'ConfigPrintingNewPrinterDialog.__init__!  s	   <<'''=$$dHd; ..0$$..6++->-1-D-DF++_-1-B-BD++-?-1-E-EG++-F-1-L-LNO "**-!EDL!r   c                 T    | j                   j                          t        d| z         y rM   )rk   r   r#   r   s    r   rO   z&ConfigPrintingNewPrinterDialog.__del__2  s    EDL!r   ussrZ   dbus_interfacein_signatureout_signaturec                 j    t         j                          | j                  j                  d|||       y )Nprinter_with_uri)rA   r^   xidrE   rF   rk   rr   )r   r   rA   r?   s       r   NewPrinterFromDevicez3ConfigPrintingNewPrinterDialog.NewPrinterFromDevice6  s1     	, )s 	 	4r   usc                 h    t         j                          | j                  j                  d||       y )Nrc   )r^   r   r   )r   r   r?   s      r   DownloadDriverForDeviceIDz8ConfigPrintingNewPrinterDialog.DownloadDriverForDeviceID=  s*     	+9#Fr   c                     t         j                          || _        || _        || _        | j
                  j                  || j                         y r   )rE   rF   r   namer?   r   	fetch_ppd_change_ppd_got_ppd)r   r   r   r?   s       r   	ChangePPDz(ConfigPrintingNewPrinterDialog.ChangePPDC  s?     		"  $(@(@Ar   c                 t    || _         | j                  j                  | j                  | j                         y )Nr    )ppdr   getPrinters_change_ppd_with_dev_do_change_ppd)r   r   r   r-   s       r   r   z2ConfigPrintingNewPrinterDialog._change_ppd_got_ppdL  s2    ""$2K2K262E2E 	# 	Gr   c                     |j                  | j                  i       j                  dd       | _        | j                  |       y )Nz
device-uri)getr   rA   r   r2   s      r   r   z3ConfigPrintingNewPrinterDialog._change_ppd_with_devR  s3     **dii488,MT"r   Nc                     | j                   j                  d| j                  | j                  | j                  | j
                  | j                         y )Nr   )rA   r   r   r^   r   )rk   rr   rA   r   r   r?   r   r+   s      r   r   z-ConfigPrintingNewPrinterDialog._do_change_ppdV  s;    %DOO$))"hhdnn$(( 	 	Lr   r   	signaturec                      y r   r   r   s    r   DialogCanceledz-ConfigPrintingNewPrinterDialog.DialogCanceledZ       	r   rS   c                      y r   r   )r   r   s     r   PrinterAddedz+ConfigPrintingNewPrinterDialog.PrinterAdded_  r   r   sbc                      y r   r   )r   r   ppd_has_changeds      r   PrinterModifiedz.ConfigPrintingNewPrinterDialog.PrinterModifiedd  r   r   za(s)c                      y r   r   )r   rC   s     r   DriverDownloadCheckedz4ConfigPrintingNewPrinterDialog.DriverDownloadCheckedi  r   r   c                     t        d| z         t        j                          | j                          | j	                          | j                          y )Nz%s: dialog canceled)r#   rE   rs   r   remove_handlesremove_from_connectionr   s     r   rn   z1ConfigPrintingNewPrinterDialog.on_dialog_canceledn  s@    )D01"##&r   c                     t        d| z         t        j                          | j                  |       | j	                          | j                          y )Nz%s: printer added)r#   rE   rs   r   r   r   )r   r   r   s      r   r   z/ConfigPrintingNewPrinterDialog.on_printer_addedu  sB    '$./"4 ##&r   c                     t        d| z         t        j                          | j                  ||       | j	                          | j                          y )Nz%s: printer modified)r#   rE   rs   r   r   r   )r   r   r   r   s       r   r   z2ConfigPrintingNewPrinterDialog.on_printer_modified|  sD    *T12"dO4##&r   c                     t        d| z         t        j                          | j                  |       | j	                          | j                          y )Nz%s: driver download checked)r#   rE   rs   r   r   r   r   s      r   ro   z9ConfigPrintingNewPrinterDialog.on_driver_download_checked  sB    1D89"""O4##&r   c                 \    | j                   D ]  }| j                  j                  |        y r   )rp   rk   rR   r   s     r   r   z-ConfigPrintingNewPrinterDialog.remove_handles  s'    ll 	,FKK""F+	,r   r   )r4   r5   r6   r   rO   r   r   methodCONFIG_NEWPRINTERDIALOG_IFACEr   r   r   r   r   r   signalr   r   r   r   rn   r   r   ro   r   r   r   r   r   r      s   """ 
\\(E&+2  ?4?4
 
\\(E&*"  >G>G 
\\(E&+2  ?B?BG#L 
\\(E#%  '' 
\\(E#&  (( 
\\(E#'  )) 
\\(E#)  ++'''',r   r   c                       e Zd Zd Zej
                  j                  edd      d        Zej
                  j                  ed      d        Z
d Zy)	%ConfigPrintingPrinterPropertiesDialogc                 $   t         j                  j                  t        |      }t         j                  j                  j                  | ||       t        j                         | _        | j                  j                  j                  d       | j                  j                  d| j                        }|| _        | j                  j                  |       | j                  j                  j                  d       t        j                          y )Nr   r   object_pathFzdialog-closed)r   r   r   r   r   r   printerpropertiesPrinterPropertiesDialogrk   rm   rI   on_dialog_closedclosed_handleshowrE   rF   )r   r   r   r   r   r   r   s          r   r   z.ConfigPrintingPrinterPropertiesDialog.__init__  s    <<'''=$$dX4$P'??B$$e,$$ot7L7LM#$$$e,r   rZ   r   c                 L    t        d       | j                  j                         S )NzPrinting test page)r#   rk   printTestPager   s    r   PrintTestPagez3ConfigPrintingPrinterPropertiesDialog.PrintTestPage  s      	(){{((++r   r   c                      y r   r   r   s    r   Finishedz.ConfigPrintingPrinterPropertiesDialog.Finished  r   r   c                     |j                          t        j                          | j                          | j                  j                  | j                         | j                          y r   )r   rE   rs   r   rk   rR   r   r   )r   rk   s     r   r   z6ConfigPrintingPrinterPropertiesDialog.on_dialog_closed  sF    " 2 23##&r   N)r4   r5   r6   r   r   r   r   $CONFIG_PRINTERPROPERTIESDIALOG_IFACEr   r   r   r   r   r   r   r   r     sj    	  
\\(L&(  <,<, 
\\(L#%  '''r   r   c                       e Zd Zd Zd Zej                  j                  edd      d        Z	ej                  j                  ed      d        Zd Zy	)
ConfigPrintingJobAppletc                 6   t         j                  j                  t        |      }t         j                  j                  j                  | ||       t        j                          t        j                  t        j                         dd      | _        | j                  j                  d       t        j                          | j                  j                  d| j                        }|| _        d| _        t$        j'                          t)        d| z         y )Nr   r   T)r   appletmy_jobsFfinishedr>   )r   r   r   r   r   r   r   threads_enter	jobviewer	JobViewer	SystemBus	jobappletset_process_pendingthreads_leaverI   on_jobapplet_finishedfinished_handlehas_finishedrE   rF   r#   )r   r   r   r   r   s        r   r   z ConfigPrintingJobApplet.__init__  s    <<'''=$$dX4$P",,1B48$H**E2''T5O5OP%!EDL!r   c                      t        d| z         y rM   rN   r   s    r   rO   zConfigPrintingJobApplet.__del__  rP   r   rZ   r   c                 R    | j                   s| j                  j                          y y r   )r  r  cleanupr   s    r   QuitzConfigPrintingJobApplet.Quit  s"       NN""% !r   r   c                      y r   r   r   s    r   r   z ConfigPrintingJobApplet.Finished  s    r   c                     | j                          t        j                          d| _        | j                  j                  | j                         | j                          y )NT)r   rE   rs   r  r  rR   r
  r   )r   r  s     r   r	  z-ConfigPrintingJobApplet.on_jobapplet_finished  sD    " !!4#7#78##&r   N)r4   r5   r6   r   rO   r   r   r   CONFIG_JOBVIEWER_IFACEr  r   r   r	  r   r   r   r   r     sk    "" 
\\(>&(  <&<& 
\\(>"M N'r   r   c                      e Zd Zd Zd Zej                  j                  edd      d        Z	ej                  j                  edd      d        Z
ej                  j                  edd      d	        Zej                  j                  ed
dd      d        Zej                  j                  edd      d        Zej                  j                  eddd      d        Zy)ConfigPrintingc                 "   t        j                         | _        t         j                  j	                  t
        | j                        }t         j                  j                  j                  | |t               t        j                         | _        d| _        d | _        d | _        d | _        t!        j"                  t         j$                        d   | _        | j&                  s,t!        j"                  t         j(                        d   | _        y y )Nr   r   )r   
SessionBusr   r   r   r   r   r   CONFIG_PATH	asyncconn
Connectionr   _pathn
_jobapplet_jobappletpathr   locale	getlocaleLC_MESSAGESr   LC_CTYPE)r   r   s     r   r   zConfigPrinting.__init__  s    ??%<<'''B$$dHkB"--0"
))6+=+=>qA~~#--v?BDN r   c                 8    | j                   j                          y r   )r   r   r   s    r   r   zConfigPrinting.destroy  s    !r   rZ   rS   r   c                     | xj                   dz  c_         t        d| j                   }t        | j                  || j                         t
        j                          |S )N   z/NewPrinterDialog/)r  r  r   r   r   rE   aliver   r   s     r   NewPrinterDialogzConfigPrinting.NewPrinterDialog  sH     	q+6D&$(,	8r   r   c                     | xj                   dz  c_         t        d| j                   }t        | j                  |||       t        j                          |S )Nr#  z/PrinterPropertiesDialog/)r  r  r   r   rE   r$  )r   r   r   r   s       r   r   z&ConfigPrinting.PrinterPropertiesDialog  sC     	q2=t{{K-txxsDIr   c                     | j                   | j                   j                  rL| xj                  dz  c_        t        d| j                  }t	        | j
                  |      | _         || _        | j                  S )Nr#  z/JobApplet/)r  r  r  r  r   r   r  r%  s     r   	JobAppletzConfigPrinting.JobApplet  s\     //
!T__%A%AKK1K(3T[[AD5txxFDO"&D!!!r   sssza(ss)r    )r   r   r   async_callbacksc           	      N    t        |||| j                  | j                  ||       y r   )r<   r   r   )r   r?   r@   rA   r!   r"   s         r   GetBestDriverszConfigPrinting.GetBestDrivers  s%    
 	y*?#~~t~~,m	=r   asc                 V    t        j                  |      }t        j                  |      S r   )cupsPPDr/   missingExecutables)r   ppd_filenamer   s      r   MissingExecutablesz!ConfigPrinting.MissingExecutables  s#     hh%--s33r   z	a{sa{ss}}aasc                     t        |||       y r   )r   )r   r   r!   r"   s       r   GroupPhysicalDevicesz#ConfigPrinting.GroupPhysicalDevices  s     	$Wm]Kr   N)r4   r5   r6   r   r   r   r   r   CONFIG_IFACEr&  r   r)  r-  r4  r7  r   r   r   r  r    s3   C" 
\\&(  == 
\\&*#  ?? 
\\&(  ="=" 
\\&+7)K  M=M= 
\\&)  ?4?4 
\\&1)K  MLMLr   r  c                    	 t        t        j                        dkD  r[t        j                  d   } d}t        t        j                        dkD  r6t        j                  d   dk(  r t        j                  d   }nt        d       y ddlm} t        j                         }|j                  t        t              }t        j                  |t              }|j                         }t        |       |j                  t        |      }t        j                  |t              }t!        j"                         	d	fd		}d	fd
	}|j%                  d|d       |j%                  d|d       |j'                  d| |       	j)                          y )N   rZ         z--devidzDevice URI requiredr   r   c                 B    t        d| z         j                          y )Nz%s: Dialog canceledprintquit)r   loops    r   on_canceledz!_client_demo.<locals>.on_canceled)  s    $t+,		r   c                 H    t        |d| d       j                          y )Nz: Printer 'z' addedr>  )r   r   rA  s     r   on_addedz_client_demo.<locals>.on_added-  s    467		r   r   r   )path_keywordr   r   )r   sysargvr?  gi.repositoryr   r   r  
get_objectr   r  	Interfacer8  r&  r#   r   r   MainLoopconnect_to_signalr   r'   )
rA   r?   r   r   r   ifacer   rB  rD  rA  s
            @r   _client_demorN    s0   
CHH~XXa[
	NQHHQK9$I$%!
//
C
..*k
2CNNC.E!!$D
..*d
+CNNC!>?ED 
-{*0  2	^X*0  2 
:y9HHKr   __main__)domain	localedirrZ   )DBusGMainLoopT)set_as_defaultFr#  z--debugz--clientzService running...)killfunc)Fgidbus.servicer   rH  r   r   require_versionr   r   rF  debugr  configr0  r/   r   r  	killtimerri   r   r   r   requirer   r  r8  r   r   r  rG   rE   set_prgnamer
   r<   r   r   r   r   r   r   r  rN  r4   	ppdippstrgettextinstallPACKAGErQ  r  	setlocaleLC_ALLrr   threads_init	dbus.glibrR  client_demor   rG  optset_debuggingset_debugprint_fnr#   exit	KillTimer	main_quitcpr  mainr  r   r   r   r   <module>rn     s  . 
  !    5%      5%    
             h .
00*-@@ %14N%N $#l2 	   ( ) '//  DJ0 J0X3# 3#jl,T\\%8%8 l,\'DLL,?,? '<!'dll11 !'FBLT\\(( BLH$L zGOO6>>V5E5EF&--, INNC'$'K
CHH~88AB< 	#Cit$---z:
""	# !$%%)%%>K		BCCHHKCJJMI s    K K