
    =Og                        	 d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ 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n# e$ r dZY nw xY wd'dZd Z G d	 d
          Z G d de          Z G d dej        e          Z G d de          Z G d de          Z G d dej                  Z G d d          Z  G d de          Z! G d dee           Z" G d dee           Z#e$dk    rd dl%Z% G d d          Z& ed           5 Z'e'(                    e)           e'(                    d! d"           e'*                     e&            d#           e'+                                  e,d$            e,d%           	 e'-                                 n&# e.$ r  e,d&            ej/        d            Y nw xY wddd           dS # 1 swxY w Y   dS dS )(    )Faultdumpsloadsgzip_encodegzip_decode)BaseHTTPRequestHandler)partial)	signatureNTc                     	 |r|                     d          }n|g}|D ]9}|                    d          rt          d|z            t          | |          } :| S )N._z(attempt to access private attribute "%s")split
startswithAttributeErrorgetattr)objattrallow_dotted_namesattrsis        &/usr/lib64/python3.11/xmlrpc/server.pyresolve_dotted_attributer   |   s|      

3 ! !<< 	! :Q>   #a..CCJ    c                 <     	  fdt                     D             S )Nc                 x    g | ]6}|                     d           t          t          |                    4|7S )r   )r   callabler   ).0memberr   s     r   
<listcomp>z'list_public_methods.<locals>.<listcomp>   sU     4 4 4v((--4WS&11224F 4 4 4r   )dir)r   s   `r   list_public_methodsr!      s8    34 4 4 4S 4 4 4 4r   c                   ^    e Zd Z	 	 	 ddZddZddZd Zd ZddZd	 Z	d
 Z
d Zd Zd ZdS )SimpleXMLRPCDispatcherFNc                 P    i | _         d | _        || _        |pd| _        || _        d S Nutf-8)funcsinstance
allow_noneencodinguse_builtin_typesselfr)   r*   r+   s       r   __init__zSimpleXMLRPCDispatcher.__init__   s1    
$ +G!2r   c                 $    	 || _         || _        d S N)r(   r   )r-   r(   r   s      r   register_instancez(SimpleXMLRPCDispatcher.register_instance   s    	@ !"4r   c                 ^    	 |t          | j        |          S ||j        }|| j        |<   |S )N)name)r	   register_function__name__r'   )r-   functionr3   s      r   r4   z(SimpleXMLRPCDispatcher.register_function   sC    	 41====<$D#
4r   c                 b    	 | j                             | j        | j        | j        d           d S )N)zsystem.listMethodszsystem.methodSignaturezsystem.methodHelp)r'   updatesystem_listMethodssystem_methodSignaturesystem_methodHelpr-   s    r    register_introspection_functionsz7SimpleXMLRPCDispatcher.register_introspection_functions   sO    	 	
$2I151L,0,BD D 	E 	E 	E 	E 	Er   c                 J    	 | j                             d| j        i           d S )Nzsystem.multicall)r'   r8   system_multicallr<   s    r   register_multicall_functionsz3SimpleXMLRPCDispatcher.register_multicall_functions   s.    	<
 	
-0EFGGGGGr   c           	         	 	 t          || j                  \  }}| |||          }n|                     ||          }|f}t          |d| j        | j                  }n# t          $ r&}t          || j        | j                  }Y d }~nVd }~wt          $ rF}t          t          dt          |          d|          | j        | j                  }Y d }~nd }~ww xY w|	                    | j        d          S )N)r+      )methodresponser)   r*   )r)   r*   :r*   r)   xmlcharrefreplace)
r   r+   	_dispatchr   r)   r*   r   BaseExceptiontypeencode)	r-   datadispatch_methodpathparamsmethodresponsefaultexcs	            r   _marshaled_dispatchz*SimpleXMLRPCDispatcher._marshaled_dispatch   s<   			"44;QRRRNFF **?66::>>&&99 {HXa(,$-Q Q QHH 	5 	5 	5Ut&*m5 5 5HHHHHH 	 	 	aDIIIIss3444?  HHHHHH	 t}.ABBBs$   AA" "
C ,BC <CC c                 l   	 t          | j                                                  }| j        xt	          | j        d          r*|t          | j                                                  z  }n9t	          | j        d          s$|t          t          | j                            z  }t          |          S )N_listMethodsrG   )setr'   keysr(   hasattrrU   r!   sorted)r-   methodss     r   r9   z)SimpleXMLRPCDispatcher.system_listMethods  s    	B djoo''((=$ t}n55 C3t}99;;<<< T]K88 C324=AABBBgr   c                     	 dS )Nzsignatures not supported )r-   method_names     r   r:   z-SimpleXMLRPCDispatcher.system_methodSignature)  s    	@ *)r   c                 V   	 d }|| j         v r| j         |         }nx| j        qt          | j        d          r| j                            |          S t          | j        d          s-	 t	          | j        || j                  }n# t          $ r Y nw xY w|dS t          j        |          S )N_methodHelprG    )	r'   r(   rX   r_   r   r   r   pydocgetdoc)r-   r]   rO   s      r   r;   z(SimpleXMLRPCDispatcher.system_methodHelp6  s    	O $*$$Z,FF]&t}m44 }00=== T]K88 5 $ + $ 7" "FF
 &   D
 >2<'''s   'B 
BBc                 v   	 g }|D ]}|d         }|d         }	 |                     |                     ||          g           ># t          $ r,}|                     |j        |j        d           Y d }~od }~wt
          $ r4}|                     dt          |          d|d           Y d }~d }~ww xY w|S )N
methodNamerN   )	faultCodefaultStringrB   rD   )appendrG   r   re   rf   rH   rI   )r-   	call_listresultscallr]   rN   rQ   rR   s           r   r?   z'SimpleXMLRPCDispatcher.system_multicallU  s1   	  	 	D|,K(^F {F C CDEEEE   #(?%*%68 8        !   #$04S				33%?A A       
 s#   *A
B6"A55B6*B11B6c                 l   	 	 | j         |         }| || S t          d|z            # t          $ r Y nw xY w| j        dt	          | j        d          r| j                            ||          S 	 t          | j        || j                  }| || S n# t          $ r Y nw xY wt          d|z            )Nzmethod "%s" is not supportedrG   )	r'   	ExceptionKeyErrorr(   rX   rG   r   r   r   )r-   rO   rN   funcs       r   rG   z SimpleXMLRPCDispatcher._dispatcht  s   	(	E:f%D tV}$:VCDDD  	 	 	D	 =$t}k22 ?}..vv>>>
)/M+  #4=( $ "    6?@@@s   ) 
661B 
B! B!FNF)FNN)r5   
__module____qualname__r.   r1   r4   r=   r@   rS   r9   r:   r;   r?   rG   r\   r   r   r#   r#      s         37#(3 3 3 3"5 "5 "5 "5H    	E 	E 	EH H H!C !C !C !CF  $* * *( ( (>  >1A 1A 1A 1A 1Ar   r#   c                       e Zd Z	 dZdZdZdZ ej        dej	        ej
        z            Zd Zd Zd Zd	 Zd
 ZddZdS )SimpleXMLRPCRequestHandler)/z/RPC2
/pydoc.cssix  Tz
                            \s* ([^\s;]+) \s*            #content-coding
                            (;\s* q \s*=\s* ([0-9\.]+))? #q
                            c                 (   i }| j                             dd          }|                    d          D ]^}| j                            |          }|r@|                    d          }|rt          |          nd}|||                    d          <   _|S )NzAccept-Encodingr`   ,   g      ?rB   )headersgetr   	aepatternmatchgroupfloat)r-   raeer~   vs         r   accept_encodingsz+SimpleXMLRPCRequestHandler.accept_encodings  s    \/44# 	& 	&AN((++E &KKNN !*E!HHHs$%%++a..!r   c                 0    | j         r| j        | j         v S dS )NT)	rpc_pathsrM   r<   s    r   is_rpc_path_validz,SimpleXMLRPCRequestHandler.is_rpc_path_valid  s"    > 	9.. 4r   c                    	 |                                  s|                                  d S 	 d}t          | j        d                   }g }|r\t	          ||          }| j                            |          }|sn/|                    |           |t          |d                   z  }|\d	                    |          }| 
                    |          }|d S | j                            |t          | dd           | j                  }|                     d           |                     dd           | j        yt          |          | j        k    ra|                                                     d	d
          }|r7	 t)          |          }|                     dd	           n# t*          $ r Y nw xY w|                     dt-          t          |                               |                                  | j                            |           d S # t4          $ r}	|                     d           t7          | j        d          r|| j        j        rp|                     dt-          |	                     t;          j                    }
t-          |
                    dd          d          }
|                     d|
           |                     dd           |                                  Y d }	~	d S d }	~	ww xY w)Ni   zcontent-lengthrw   r   rG      Content-typeztext/xmlgzipr   zContent-EncodingContent-lengthi  _send_traceback_headerzX-exceptionASCIIbackslashreplacezX-traceback0) r   
report_404intr{   minrfilereadrg   lenjoindecode_request_contentserverrS   r   rM   send_responsesend_headerencode_thresholdr   r|   r   NotImplementedErrorstrend_headerswfilewriterl   rX   r   	traceback
format_excrJ   )r-   max_chunk_sizesize_remainingL
chunk_sizechunkrK   rP   qr   traces              r   do_POSTz"SimpleXMLRPCRequestHandler.do_POST  s   	 %%'' 	OOF9	'
 *N .>!?@@NA  - @@


33 #ae**, ! - 88A;;D..t44D| {66'$T::DI H$ s###^Z888$0x==4#888--//33FA>>A !!'28'<'<H ,,-?HHHH2 ! ! ! D!-s3x==/A/ABBBJX&&&&&9  	 	 	s### t{$<== 7K67  A777!,..ELL2DEEwOO  666-s333	s1   B(H 0H <%F" "
F/.F/
K7CK22K7c                    | j                             dd                                          }|dk    r|S |dk    rZ	 t          |          S # t          $ r |                     dd|z             Y n>t          $ r |                     dd           Y nw xY w|                     dd|z             |                     dd	           |                                  d S )
Nzcontent-encodingidentityr   i  zencoding %r not supported  zerror decoding gzip contentr   r   )	r{   r|   lowerr   r   r   
ValueErrorr   r   )r-   rK   r*   s      r   r   z1SimpleXMLRPCRequestHandler.decode_request_content  s   <##$6
CCIIKKz!!KvG"4(((& P P P""3(Ch(NOOOOO G G G""3(EFFFFFG s$?($JKKK)3///s   A #B1BBc                    |                      d           d}|                     dd           |                     dt          t          |                               |                                  | j                            |           d S )Ni  s   No such pager   z
text/plainr   )r   r   r   r   r   r   r   r-   rP   s     r   r   z%SimpleXMLRPCRequestHandler.report_404*  s    3"666)3s8}}+=+=>>>
"""""r   -c                 P    	 | j         j        rt          j        | ||           d S d S r0   )r   logRequestsr   log_request)r-   codesizes      r   r   z&SimpleXMLRPCRequestHandler.log_request3  s:    2;" 	A".tT4@@@@@	A 	Ar   N)r   r   )r5   rq   rr   r   r   wbufsizedisable_nagle_algorithmrecompileVERBOSE
IGNORECASEr}   r   r   r   r   r   r   r\   r   r   rt   rt     s         -I  H" 
   "$bm!;= =I
	 	 	  E' E' E'N  "# # #A A A A A Ar   rt   c                   ,    e Zd Z	 dZdZedddddfdZdS )SimpleXMLRPCServerTFNc                     || _         t                              | |||           t          j                            | |||           d S r0   )r   r#   r.   socketserver	TCPServerr-   addrrequestHandlerr   r)   r*   bind_and_activater+   s           r   r.   zSimpleXMLRPCServer.__init__L  sK     '''j(DUVVV''dNDUVVVVVr   )r5   rq   rr   allow_reuse_addressr   rt   r.   r\   r   r   r   r   9  sR          #,F!ed#'5W W W W W Wr   r   c                   8    e Zd Z	 edddddfdZd Zd ZddZdS )	MultiPathXMLRPCServerTFNc           
      v    t                               | |||||||           i | _        || _        |pd| _        d S r%   )r   r.   dispatchersr)   r*   r   s           r   r.   zMultiPathXMLRPCServer.__init__]  sQ     	##D$Z$,.?AR	T 	T 	T$ +Gr   c                     || j         |<   |S r0   r   )r-   rM   
dispatchers      r   add_dispatcherz$MultiPathXMLRPCServer.add_dispatcherg  s    !+r   c                     | j         |         S r0   r   )r-   rM   s     r   get_dispatcherz$MultiPathXMLRPCServer.get_dispatcherk  s    %%r   c           	      *   	 | j         |                             |||          }nn# t          $ ra}t          t	          dt          |          d|          | j        | j                  }|                    | j        d          }Y d }~nd }~ww xY w|S )NrB   rD   rE   rF   )	r   rS   rH   r   r   rI   r*   r)   rJ   )r-   rK   rL   rM   rP   rR   s         r   rS   z)MultiPathXMLRPCServer._marshaled_dispatchn  s    
	K'-AA_d, ,HH 	K 	K 	K aDIIIIss3444?D D DH  t}6IJJHHHHHH	K s   "% 
BABBrp   )r5   rq   rr   rt   r.   r   r   rS   r\   r   r   r   r   U  sq         -G!ed#'5, , , ,  & & &     r   r   c                   ,    e Zd Z	 ddZd Zd ZddZdS )	CGIXMLRPCRequestHandlerFNc                 @    t                               | |||           d S r0   )r#   r.   r,   s       r   r.   z CGIXMLRPCRequestHandler.__init__  s#    ''j(DUVVVVVr   c                 t   	 |                      |          }t          d           t          dt          |          z             t                       t          j                                         t          j        j                            |           t          j        j                                         d S )NzContent-Type: text/xmlContent-Length: %d)rS   printr   sysstdoutflushbufferr   )r-   request_textrP   s      r   handle_xmlrpcz%CGIXMLRPCRequestHandler.handle_xmlrpc  s    -++L99&'''"S]]2333

)))
!!!!!r   c                    	 d}t           j        |         \  }}t          j        j        |||dz  }|                    d          }t          d||fz             t          dt          j        j        z             t          dt          |          z             t                       t          j
                                         t          j
        j                            |           t          j
        j                                         d S )Nr   )r   messageexplainr&   zStatus: %d %szContent-Type: %sr   )r   	responseshttpr   DEFAULT_ERROR_MESSAGErJ   r   DEFAULT_ERROR_CONTENT_TYPEr   r   r   r   r   r   )r-   r   r   r   rP   s        r   
handle_getz"CGIXMLRPCRequestHandler.handle_get  s    	 1;DA;4    ??7++ow/000 4;#IIJJJ"S]]2333

)))
!!!!!r   c                 |   	 |:t           j                            dd           dk    r|                                  d S 	 t	          t           j                            dd                     }n# t
          t          f$ r d}Y nw xY w|t          j        	                    |          }| 
                    |           d S )NREQUEST_METHODGETCONTENT_LENGTHrw   )osenvironr|   r   r   r   	TypeErrorr   stdinr   r   )r-   r   lengths      r   handle_requestz&CGIXMLRPCRequestHandler.handle_request  s    	 JNN+T22e;;OORZ^^,<dCCDD	*   #"y~~f55|,,,,,s   -A- -BBro   r0   )r5   rq   rr   r.   r   r   r   r\   r   r   r   r   |  sa        =W W W W
" 
" 
"" " "2- - - - - -r   r   c                   >    e Zd Z	 di i i fdZdi i i dfdZd Zd ZdS )ServerHTMLDocNc                    	 |p| j         }g }d}t          j        d          }	 |                    ||          }	|	sn|	                                \  }
}|                     ||||
                              |	                                \  }}}}}}|r< ||                              dd          }|                    d|d|d           n|r8d	t          |          z  }|                    d|d ||          d           n|r8d
t          |          z  }|                    d|d ||          d           n|||dz            dk    r,|                    | 	                    ||||                     nD|r|                    d|z             n)|                    | 	                    ||                     |}|                     |||d                               d
                    |          S )Nr   zS\b((http|https|ftp)://\S+[\w/]|RFC[- ]?(\d+)|PEP[- ]?(\d+)|(self\.)?((?:\w|\.)+))\brB   "z&quot;z	<a href="z">z</a>z(https://www.rfc-editor.org/rfc/rfc%d.txtz!https://peps.python.org/pep-%04d/(zself.<strong>%s</strong>r`   )escaper   r   searchspanrg   groupsreplacer   namelinkr   )r-   textr   r'   classesrZ   ri   herepatternr~   startendallschemerfcpepselfdotr3   urls                      r   markupzServerHTMLDoc.markup  s:   	F&4; * < = =	NN4..E%JE3NN66$tEz"23344438<<>>0Cc7D =fSkk))#x88SSSABBBB =@3s88KVVC[[[[IJJJJ =9CHHDVVC[[[[IJJJJc#a%iC''t}}T7E7KKLLLL =9D@AAAAt}}T7;;<<<D-	. 	vvd455k**+++wwwr   c                    	 |r|j         pddz   |z   }d}	d|                     |          d|                     |          d}
t          |          rt          t	          |                    }nd}t          |t                    r|d         p|}|d         pd}nt          j        |          }|
|z   |	o| 	                    d	|	z            z   }| 
                    || j        |||          }|od
|z  }d|d|dS )Nr`   r   z	<a name="z
"><strong>z</strong></a>z(...)r   rB   z'<font face="helvetica, arial">%s</font>z<dd><tt>%s</tt></dd>z<dl><dt>z</dt>z</dl>
)r5   r   r   r   r
   
isinstancetuplera   rb   greyr
  	preformat)r-   objectr3   modr'   r   rZ   clanchornotetitleargspec	docstringdecldocs                  r   
docroutinezServerHTMLDoc.docroutine  s?   I$*c1D8 KKT!2!2!2!24 F 	)F++,,GGGfe$$ 	-Qi*7Gq	RIIV,,Iw$ #A49984?,A ,A B kkt~ugw@ @2,s2-1TT33377r   c                     	 i }|                                 D ]\  }}d|z   ||<   ||         ||<   |                     |          }d|z  }|                     |          }|                     || j        |          }	|	od|	z  }	|d|	z  z   }g }
t          |                                           }|D ]0\  }}|
                    |                     |||                     1||                     ddd	                    |
                    z   }|S )	Nz#-z)<big><big><strong>%s</strong></big></big>z<tt>%s</tt>z
<p>%s</p>
)r'   Methods	functionsr`   )
itemsr   headingr
  r  rY   rg   r  
bigsectionr   )r-   server_namepackage_documentationrZ   fdictkeyvalueheadresultr  contentsmethod_itemss               r   	docserverzServerHTMLDoc.docserver
  s-   ?!--// 	& 	&JCE#J :E%LLkk+..:[Hd##kk/GG)mc)-#--gmmoo..& 	F 	FJCOODOOE3eODDEEEE$//{BGGH$5$57 7 7 r   c                 *    	 d}d|z  }d|d|d|dS )Nrv   z1<link rel="stylesheet" type="text/css" href="%s">zI<!DOCTYPE>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Python: z	</title>
z</head><body>z</body></html>r\   )r-   r  r(  css_pathcss_links        r   pagezServerHTMLDoc.page$  s=    "? 	 ',eeXXXxxxA 	Ar   )r5   rq   rr   r
  r  r*  r.  r\   r   r   r   r     sz        A"&b"b '  '  '  ' R ,0R8 8 8 8:  4A A A A Ar   r   c                   .    e Zd Z	 d Zd Zd Zd Zd ZdS )XMLRPCDocGeneratorc                 0    d| _         d| _        d| _        d S )NzXML-RPC Server DocumentationzGThis server exports the following methods through the XML-RPC protocol.)r!  server_documentationserver_titler<   s    r   r.   zXMLRPCDocGenerator.__init__9  s'    9 	! ;r   c                     	 || _         d S r0   )r3  )r-   r3  s     r   set_server_titlez#XMLRPCDocGenerator.set_server_titleA  s    F(r   c                     	 || _         d S r0   )r!  )r-   r!  s     r   set_server_namez"XMLRPCDocGenerator.set_server_nameF  s    E&r   c                     	 || _         d S r0   )r2  )r-   r2  s     r   set_server_documentationz+XMLRPCDocGenerator.set_server_documentationK  s    A$8!!!r   c                    	 i }|                                  D ]}|| j        v r| j        |         }n| j        d d g}t          | j        d          r| j                            |          |d<   t          | j        d          r| j                            |          |d<   t          |          }|dk    r|}nAt          | j        d          s)	 t          | j        |          }n# t          $ r |}Y nw xY w|}	 |||<   t                      }|
                    | j        | j        |          }|                    t          j        | j                  |          S )N_get_method_argstringr   r_   rB   rp   rG   )r9   r'   r(   rX   r;  r_   r  r   r   r   r*  r!  r2  r.  htmlr   r3  )r-   rZ   r]   rO   method_info
documenterdocumentations          r   generate_html_documentationz.XMLRPCDocGenerator.generate_html_documentationP  s   	! 2244 	* 	*Kdj((K0*#Tl4=*ABB V%)]%H%H%U%UKN4=-88 L%)]%>%>{%K%KKN#K00,..(FF << 	)-!9$(M$/"& "& * - - -!,- )FF
 $*GK  "__
",, $ 0 $ 9 '  t{4+<==}MMMs   C$$C32C3N)r5   rq   rr   r.   r5  r7  r9  r@  r\   r   r   r0  r0  2  si        ; ; ;) ) )
' ' '
9 9 9
1N 1N 1N 1N 1Nr   r0  c                       e Zd Z	 d Zd ZdS )DocXMLRPCRequestHandlerc                 F   t           j                            t           j                            t                              }t           j                            |ddd          }t          |d          5 }|                                cd d d            S # 1 swxY w Y   d S )Nz..
pydoc_dataz
_pydoc.cssrb)mode)r   rM   dirnamerealpath__file__r   openr   )r-   r	  	path_herer,  fps        r   _get_cssz DocXMLRPCRequestHandler._get_css  s    GOOBG$4$4X$>$>??	7<<	4|LL(&&& 	"7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   5BBBc                 >   	 |                                  s|                                  d S | j                            d          rd}|                     | j                  }n.d}| j                                                            d          }|                     d           | 	                    dd|z             | 	                    dt          t          |                               |                                  | j                            |           d S )	Nz.cssztext/cssz	text/htmlr&   r   zContent-Typez%s; charset=UTF-8r   )r   r   rM   endswithrM  r   r@  rJ   r   r   r   r   r   r   r   )r-   content_typerP   s      r   do_GETzDocXMLRPCRequestHandler.do_GET  s   	 %%'' 	OOF9f%% 	Q%L}}TY//HH&L{>>@@GGPPH3)<|)KLLL)3s8}}+=+=>>>
"""""r   N)r5   rq   rr   rM  rQ  r\   r   r   rB  rB    s7          # # # # #r   rB  c                   $    e Zd Z	 edddddfdZdS )DocXMLRPCServerTFNc           
      |    t                               | |||||||           t                              |            d S r0   )r   r.   r0  r   s           r   r.   zDocXMLRPCServer.__init__  sK     	##D$$.:K$5	7 	7 	7 	##D)))))r   )r5   rq   rr   rB  r.   r\   r   r   rS  rS    s?         -D!ed#'5* * * * * *r   rS  c                       e Zd Z	 d Zd ZdS )DocCGIXMLRPCRequestHandlerc                    	 |                                                      d          }t          d           t          dt          |          z             t                       t          j                                         t          j        j                            |           t          j        j                                         d S )Nr&   zContent-Type: text/htmlr   )	r@  rJ   r   r   r   r   r   r   r   r   s     r   r   z%DocCGIXMLRPCRequestHandler.handle_get  s    	 3355<<WEE'((("S]]2333

)))
!!!!!r   c                 n    t                               |            t                              |            d S r0   )r   r.   r0  r<   s    r   r.   z#DocCGIXMLRPCRequestHandler.__init__  s0    ((...##D)))))r   N)r5   rq   rr   r   r.   r\   r   r   rV  rV    s7        " " " * * * * *r   rV  __main__c                   .    e Zd Zd Z G d d          ZdS )ExampleServicec                     dS )N42r\   r<   s    r   getDatazExampleService.getData  s    4r   c                   $    e Zd Zed             ZdS )ExampleService.currentTimec                  >    t           j                                         S r0   )datetimenowr\   r   r   getCurrentTimez)ExampleService.currentTime.getCurrentTime  s    (,,...r   N)r5   rq   rr   staticmethodrd  r\   r   r   currentTimer`    s-        / / \/ / /r   rf  N)r5   rq   rr   r^  rf  r\   r   r   r[  r[    sK        	 	 		/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r   r[  )	localhosti@  c                     | |z   S r0   r\   )xys     r   <lambda>rk    s
    QqS r   add)r   z&Serving XML-RPC on localhost port 8000zKIt is advisable to run this example server within a secure, closed network.z&
Keyboard interrupt received, exiting.)T)0xmlrpc.clientr   r   r   r   r   http.serverr   	functoolsr	   inspectr
   r<  r   r   r   r   r   ra   r   fcntlImportErrorr   r!   r#   rt   r   r   r   r   HTMLDocr   r0  rB  rS  rV  r5   rb  r[  r   r4   powr1   r@   r   serve_foreverKeyboardInterruptexitr\   r   r   <module>rx     s  eT H G G G G G G G G G G G G G . . . . . .                      



 				 				     LLLL   EEE   04 4 4IA IA IA IA IA IA IA IAVPA PA PA PA PA!7 PA PA PAdW W W W W//W W W8% % % % %. % % %N?- ?- ?- ?- ?-4 ?- ?- ?-JoA oA oA oA oAEM oA oA oAbON ON ON ON ON ON ON ONb&# &# &# &# &#8 &# &# &#P* * * * **** * * * * * * *$;$6* * *4 zOOO/ / / / / / / / 
	/	0	0 F  %%%  %888  !1!1d KKK++---6777[\\\	  """"  	 	 	E;<<<CHQKKKKK	                  sI   A AAA6GF! G! GGGGGG