B YI~d^�� @sfddlZddlZddlZddlmZddlmZddlZddlZ ddl m Z ddl Z ddl mZy ddlZWnek r�dZYnXdd�Zdejdd �Zd Zd Zd Zd ZdZdZdZd ZdZdZd ZdZdZ dZ!Gdd�de"�Z#Gdd�de#�Z$Gdd�de#�Z%Gdd�de#�Z&e'Z(Z)eddd�Z*e*�+d�d k�rFd!d"�Z,n"e*�+d#�d k�r`d$d"�Z,nd%d"�Z,[*d&d'�Z-Gd(d)�d)�Z.d*d+�Z/d,d-�Z0Gd.d/�d/�Z1d0d1�Z2e.e1fZ3Gd2d3�d3�Z4Gd4d5�d5�Z5Gd6d7�d7�Z6Gd8d9�d9�Z7Gd:d;�d;�Z8GddZdCdD�Z?dEdF�Z@d[dHdI�ZAGdJdK�dKe�rTejBneC�ZDGdLdM�dM�ZEGdNdO�dO�ZFGdPdQ�dQeF�ZGGdRdS�dS�ZHeHZIeJdTk�rbeHdU�ZKyeLeKjM�N��Wn.e#k �r�ZOzeLdVeO�WddZO[OXYnXe9eK�ZPeP�Q�eP�Rd dW�eP�Sdd �yxeP�D]ZTeLeT��qWWn.e#k �r`ZOzeLdVeO�WddZO[OXYnXdS)\�N)�datetime)�Decimal)�expat)�BytesIOcCs$|�dd�}|�dd�}|�dd�S)N�&z&�z>)�replace)�s�r �2/opt/alt/python37/lib64/python3.7/xmlrpc/client.py�escape�s  r z%d.%d�i���i�iD���i����i ���ip���i���iC���iB���i����i����i����c@seZdZdd�ZdS)�ErrorcCst|�S)N)�repr)�selfr r r �__str__�sz Error.__str__N)�__name__� __module__� __qualname__rr r r r r�src@seZdZdd�Zdd�ZdS)� ProtocolErrorcCs&t�|�||_||_||_||_dS)N)r�__init__�url�errcode�errmsg�headers)rrrrrr r r r�s  zProtocolError.__init__cCsd|jj|j|j|jfS)Nz<%s for %s: %s %s>)� __class__rrrr)rr r r �__repr__�szProtocolError.__repr__N)rrrrrr r r r r�src@s eZdZdS)� ResponseErrorN)rrrr r r r r�src@seZdZdd�Zdd�ZdS)�FaultcKst�|�||_||_dS)N)rr� faultCode� faultString)rr r!Zextrar r r r�s zFault.__init__cCsd|jj|j|jfS)Nz <%s %s: %r>)rrr r!)rr r r r�szFault.__repr__N)rrrrrr r r r r�sr�z%YZ0001cCs |�d�S)Nz%Y%m%dT%H:%M:%S)�strftime)�valuer r r �_iso8601_format sr%z%4YcCs |�d�S)Nz%4Y%m%dT%H:%M:%S)r#)r$r r r r%scCs|�d��d�S)Nz%Y%m%dT%H:%M:%S�)r#�zfill)r$r r r r%scCsLt|t�rt|�St|ttjf�s<|dkr2t��}t�|�}d|dd�S)Nrz%04d%02d%02dT%02d:%02d:%02d�)� isinstancerr%�tuple�timeZ struct_timeZ localtime)r$r r r � _strftimes  r,c@sneZdZddd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�ZdS)�DateTimercCs t|t�r||_n t|�|_dS)N)r)�strr$r,)rr$r r r r)s zDateTime.__init__cCs�t|t�r|j}|j}nzt|t�r2|j}t|�}n`t|t�rH|j}|}nJt|d�rd|��}|��}n.t|d�rv|jj p|t |�}t d|jj |f��||fS)N� timetuplerzCan't compare %s and %s) r)r-r$rr%r.�hasattrr/rr�type� TypeError)r�otherr �oZotyper r r �make_comparable/s$       zDateTime.make_comparablecCs|�|�\}}||kS)N)r5)rr3r r4r r r �__lt__DszDateTime.__lt__cCs|�|�\}}||kS)N)r5)rr3r r4r r r �__le__HszDateTime.__le__cCs|�|�\}}||kS)N)r5)rr3r r4r r r �__gt__LszDateTime.__gt__cCs|�|�\}}||kS)N)r5)rr3r r4r r r �__ge__PszDateTime.__ge__cCs|�|�\}}||kS)N)r5)rr3r r4r r r �__eq__TszDateTime.__eq__cCst�|jd�S)Nz%Y%m%dT%H:%M:%S)r+�strptimer$)rr r r r/XszDateTime.timetuplecCs|jS)N)r$)rr r r r`szDateTime.__str__cCsd|jj|jt|�fS)Nz<%s %r at %#x>)rrr$�id)rr r r rcszDateTime.__repr__cCst|���|_dS)N)r.�stripr$)r�datar r r �decodefszDateTime.decodecCs$|�d�|�|j�|�d�dS)Nzz )�writer$)r�outr r r �encodeis  zDateTime.encodeN)r)rrrrr5r6r7r8r9r:r/rrr?rBr r r r r-#s r-cCst�}|�|�|S)N)r-r?)r>r$r r r � _datetimens rCcCs t�|d�S)Nz%Y%m%dT%H:%M:%S)rr;)r>r r r �_datetime_typetsrDc@s6eZdZd dd�Zdd�Zdd�Zdd �Zd d �ZdS) �BinaryNcCs>|dkrd}n&t|ttf�s,td|jj��t|�}||_dS)N�z#expected bytes or bytearray, not %s)r)�bytes� bytearrayr2rrr>)rr>r r r r�s zBinary.__init__cCs t|jd�S)Nzlatin-1)r.r>)rr r r r�szBinary.__str__cCst|t�r|j}|j|kS)N)r)rEr>)rr3r r r r:�s z Binary.__eq__cCst�|�|_dS)N)�base64� decodebytesr>)rr>r r r r?�sz Binary.decodecCs4|�d�t�|j�}|�|�d��|�d�dS)Nz �asciiz )r@rI� encodebytesr>r?)rrA�encodedr r r rB�s  z Binary.encode)N)rrrrrr:r?rBr r r r rE}s  rEcCst�}|�|�|S)N)rEr?)r>r$r r r �_binary�s rNc@s$eZdZdd�Zdd�Zdd�ZdS)� ExpatParsercCsDt�dd�|_}||_|j|_|j|_|j|_ d}|� |d�dS)N) rZ ParserCreate�_parser�_target�startZStartElementHandler�endZEndElementHandlerr>ZCharacterDataHandler�xml)r�target�parser�encodingr r r r�szExpatParser.__init__cCs|j�|d�dS)Nr)rP�Parse)rr>r r r �feed�szExpatParser.feedcCs8y |j}Wntk rYnX|`|`|�dd�dS)NrFT)rP�AttributeErrorrQrX)rrVr r r �close�s  zExpatParser.closeN)rrrrrYr[r r r r rO�s rOc@s�eZdZddd�ZiZdd�Zdd�Zd d �Zeeed�<d d �Z e ee <d d�Z e ee <e Z dd�Zeee<efdd�Zeee<dd�Zeee<eee<dd�Zeee<eee<efdd�Zeee<dd�Zeee<dd�Zeee<eee<eed<dS)� MarshallerNFcCsi|_d|_||_||_dS)N)�memor>rW� allow_none)rrWr^r r r r�szMarshaller.__init__cCs�g}|j}|j}t|t�r@|d�||j|jd�|�|d�n8|d�x&|D]}|d�|||�|d�qNW|d�d�|�}|S) Nz )r r!z z z z z �)�append�_Marshaller__dumpr)rr r!�join)r�valuesrAr@�dump�v�resultr r r �dumps�s"      zMarshaller.dumpscCs�y|jt|�}Wnjtk r|t|d�s)r^r2)rr$r@r r r �dump_nilszMarshaller.dump_nilcCs$|d�||rdpd�|d�dS)Nz�1�0z r )rr$r@r r r � dump_boolszMarshaller.dump_boolcCs<|tks|tkrtd��|d�|tt|���|d�dS)Nzint exceeds XML-RPC limitsz z )�MAXINT�MININT� OverflowErrorr.�int)rr$r@r r r � dump_longs zMarshaller.dump_longcCs |d�|t|��|d�dS)Nzz )r)rr$r@r r r � dump_double%s zMarshaller.dump_doublecCs |d�|||��|d�dS)Nzz r )rr$r@r r r r � dump_unicode+s zMarshaller.dump_unicodecCs,|d�t�|�}||�d��|d�dS)Nz rKz )rIrLr?)rr$r@rMr r r � dump_bytes1s zMarshaller.dump_bytescCs^t|�}||jkrtd��d|j|<|j}|d�x|D]}|||�q8W|d�|j|=dS)Nz"cannot marshal recursive sequencesz z )r<r]r2ra)rr$r@�irdrer r r � dump_array9s   zMarshaller.dump_arraycCs�t|�}||jkrtd��d|j|<|j}|d�xP|��D]D\}}|d�t|t�s^td��|d||��|||�|d�q z zdictionary key must be stringz%s z z )r<r]r2ra�itemsr)r.)rr$r@r r{rd�krer r r � dump_structGs     zMarshaller.dump_structcCs |d�|t|��|d�dS)Nzz )r,)rr$r@r r r � dump_datetimeYs zMarshaller.dump_datetimecCs2|jtkr ||_|�|�|`n|�|j|�dS)N)r�WRAPPERSr@rBrrh)rr$r@r r r � dump_instance_s   zMarshaller.dump_instanceri)NF) rrrrrjrgraror1rr�boolrwrvZdump_intrx�floatr ryr.rzrGrHr|r*�listr�dictr�rr�r-rEr r r r r\�s:      r\c@sjeZdZdDdd�Zdd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z iZ dd�Z e e d<dd�Z e e d<dd�Zee d<ee d<ee d<ee d<ee d<ee d<d d!�Zee d"<ee d#<d$d%�Zee d&<d'd(�Zee d)<ee d*<d+d,�Zee d-<d.d/�Zee d0<d1d2�Zee d3<d4d5�Zee d6<d7d8�Zee d9<d:d;�Zee d<<d=d>�Zee d?<d@dA�Zee dB<dCS)E� UnmarshallerFcCsHd|_g|_g|_g|_d|_d|_d|_|jj|_|p:||_||_ dS)NFzutf-8) �_type�_stack�_marks�_data�_value� _methodname� _encodingr`� _use_datetime� _use_bytes)r� use_datetime�use_builtin_typesr r r rs  zUnmarshaller.__init__cCs:|jdks|jrt��|jdkr0tf|jd��t|j�S)N�faultr)r�r�rrr�r*)rr r r r[�s  zUnmarshaller.closecCs|jS)N)r�)rr r r � getmethodname�szUnmarshaller.getmethodnamecCs ||_dS)N)r�)rrWZ standaloner r r rT�szUnmarshaller.xmlcCshd|kr|�d�d}|dks&|dkr8|j�t|j��g|_|jrZ||jkrZtd|��|dk|_dS)N�:������array�structzunknown tag %rr$) �splitr�r`�lenr�r�r�rjr)r�tagZattrsr r r rR�s zUnmarshaller.startcCs|j�|�dS)N)r�r`)r�textr r r r>�szUnmarshaller.datac Cspy|j|}WnNtk r\d|kr*dSy|j|�d�d}Wntk rVdSXYnX||d�|j��S)Nr�r�r_)rjrkr�rbr�)rr�rnr r r rS�s zUnmarshaller.endc Cshy|j|}WnNtk r\d|kr*dSy|j|�d�d}Wntk rVdSXYnX|||�S)Nr�r�)rjrkr�)rr�r>rnr r r � end_dispatch�s zUnmarshaller.end_dispatchcCs|�d�d|_dS)Nr)r`r�)rr>r r r �end_nil�s zUnmarshaller.end_nilZnilcCs:|dkr|�d�n|dkr(|�d�ntd��d|_dS)NrqFrpTzbad boolean valuer)r`r2r�)rr>r r r � end_boolean�s   zUnmarshaller.end_boolean�booleancCs|�t|��d|_dS)Nr)r`rvr�)rr>r r r �end_int�szUnmarshaller.end_intZi1Zi2Zi4Zi8rvZ bigintegercCs|�t|��d|_dS)Nr)r`r�r�)rr>r r r � end_double�szUnmarshaller.end_doubleZdoubler�cCs|�t|��d|_dS)Nr)r`rr�)rr>r r r �end_bigdecimal�szUnmarshaller.end_bigdecimalZ bigdecimalcCs&|jr|�|j�}|�|�d|_dS)Nr)r�r?r`r�)rr>r r r � end_string�s  zUnmarshaller.end_string�string�namecCs.|j��}|j|d�g|j|d�<d|_dS)Nr)r��popr�r�)rr>�markr r r � end_array�s zUnmarshaller.end_arrayr�cCsd|j��}i}|j|d�}x,tdt|�d�D]}||d|||<q.W|g|j|d�<d|_dS)Nrrr")r�r�r��ranger�r�)rr>r�r�r}r{r r r � end_structs zUnmarshaller.end_structr�cCs6t�}|�|�d��|jr"|j}|�|�d|_dS)NrKr)rEr?rBr�r>r`r�)rr>r$r r r � end_base64 s  zUnmarshaller.end_base64rIcCs,t�}|�|�|jrt|�}|�|�dS)N)r-r?r�rDr`)rr>r$r r r � end_dateTimes  zUnmarshaller.end_dateTimezdateTime.iso8601cCs|jr|�|�dS)N)r�r�)rr>r r r � end_valueszUnmarshaller.end_valuer$cCs d|_dS)N�params)r�)rr>r r r � end_params#szUnmarshaller.end_paramsr�cCs d|_dS)Nr�)r�)rr>r r r � end_fault'szUnmarshaller.end_faultr�cCs"|jr|�|j�}||_d|_dS)N� methodName)r�r?r�r�)rr>r r r �end_methodName+s zUnmarshaller.end_methodNamer�N)FF)rrrrr[r�rTrRr>rSr�rjr�r�r�r�r�r�r�r�r�r�r�r�r�r�r r r r r�ssX   r�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MultiCallMethodcCs||_||_dS)N)�_MultiCallMethod__call_list�_MultiCallMethod__name)rZ call_listr�r r r r8sz_MultiCallMethod.__init__cCst|jd|j|f�S)Nz%s.%s)r�r�r�)rr�r r r � __getattr__;sz_MultiCallMethod.__getattr__cGs|j�|j|f�dS)N)r�r`r�)r�argsr r r �__call__=sz_MultiCallMethod.__call__N)rrrrr�r�r r r r r�5sr�c@seZdZdd�Zdd�ZdS)�MultiCallIteratorcCs ||_dS)N)�results)rr�r r r rDszMultiCallIterator.__init__cCsR|j|}t|�ti�kr.t|d|d��n t|�tg�krF|dStd��dS)Nr r!rz#unexpected type in multicall result)r�r1r� ValueError)rr{�itemr r r � __getitem__Gs  zMultiCallIterator.__getitem__N)rrrrr�r r r r r�@sr�c@s0eZdZdd�Zdd�ZeZdd�Zdd�Zd S) � MultiCallcCs||_g|_dS)N)�_MultiCall__server�_MultiCall__call_list)r�serverr r r raszMultiCall.__init__cCsd|jjt|�fS)Nz <%s at %#x>)rrr<)rr r r reszMultiCall.__repr__cCs t|j|�S)N)r�r�)rr�r r r r�jszMultiCall.__getattr__cCs:g}x"|jD]\}}|�||d��q Wt|jj�|��S)N)r�r�)r�r`r�r��systemZ multicall)rZmarshalled_listr�r�r r r r�mszMultiCall.__call__N)rrrrrrr�r�r r r r r�Ps r�FcCsrtrHtrH|rt}tj}n|r&t}t}nt}t}tdd||t�}t|�}n"t||d�}trbt|�}nt |�}||fS)NTF)r�r�) � FastParser�FastUnmarshallerrDrIrJrNrCrr�rO)r�r�Z mkdatetimeZmkbytesrUrVr r r � getparsers    r�cCs�t|t�rd}n|rt|t�r|s&d}tr4t|�}n t||�}|�|�}|dkr^dt|�}nd}|rx|d|d|df}n|r�|d|d f}n|Sd �|�S) Nr"zutf-8z$ z z z z z z r_)r)rr*�FastMarshallerr\rgr.rb)r�� methodnameZmethodresponserWr^�mr>Z xmlheaderr r r rg�s2    rgcCs2t||d�\}}|�|�|��|��|��fS)N)r�r�)r�rYr[r�)r>r�r��p�ur r r �loads�s  r�c Cs<tst�t�}tjd|dd��}|�|�WdQRX|��S)N�wbr")�mode�fileobjZ compresslevel)�gzip�NotImplementedErrorr�GzipFiler@�getvalue)r>rn�gzfr r r � gzip_encodes r��@c Cs�tst�tjdt|�d��H}y$|dkr0|��}n|�|d�}Wntk r\td��YnXWdQRX|dkr�t|�|kr�td��|S)N�rb)r�r�rr"z invalid dataz#max gzipped payload length exceeded)r�r�r�r�read�OSErrorr�r�)r>Z max_decoder�Zdecodedr r r � gzip_decodes r�c@seZdZdd�Zdd�ZdS)�GzipDecodedResponsecCs.tst�t|���|_tjj|d|jd�dS)Nr�)r�r�)r�r�rr��ior�r)r�responser r r r=szGzipDecodedResponse.__init__cCs"ztj�|�Wd|j��XdS)N)r�r�r[r�)rr r r r[EszGzipDecodedResponse.closeN)rrrrr[r r r r r�9sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�_MethodcCs||_||_dS)N)� _Method__send� _Method__name)r�sendr�r r r rRsz_Method.__init__cCst|jd|j|f�S)Nz%s.%s)r�r�r�)rr�r r r r�Usz_Method.__getattr__cGs|�|j|�S)N)r�r�)rr�r r r r�Wsz_Method.__call__N)rrrrr�r�r r r r r�Osr�c@szeZdZdeZdZdZddd�Zddd�Zdd d �Z d d �Z d d�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�ZdS)� TransportzPython-xmlrpc/%sTNFcCs||_||_d|_g|_dS)N)NN)r��_use_builtin_types� _connection�_extra_headers)rr�r�r r r rnszTransport.__init__c Cs~xxdD]p}y|�||||�Stjjk r8|r4�Yqtk rt}z |sb|jtjtjtjfkrd�Wdd}~XYqXqWdS)N)rr") �single_request�http�clientZRemoteDisconnectedr��errnoZ ECONNRESETZ ECONNABORTEDZEPIPE)r�host�handler� request_body�verboser{�er r r �request~s  zTransport.requestcCs�y6|�||||�}|��}|jdkr4||_|�|�SWn2tk rL�Yntk rh|���YnX|�dd�r~|� �t |||j|j t |� ����dS)N��zcontent-lengthr_)� send_requestZ getresponse�statusr��parse_responser� Exceptionr[� getheaderr�r�reasonr�Z getheaders)rr�r�r�r�Z http_connZrespr r r r��s"  zTransport.single_requestcCst|j|jd�S)N)r�r�)r�r�r�)rr r r r��szTransport.getparsercCsri}t|t�r|\}}tj�|�\}}|rdtj�|�}t�|��d�}d� |� ��}dd|fg}ng}|||fS)Nzutf-8r_Z AuthorizationzBasic ) r)r*�urllib�parseZ splituserZunquote_to_bytesrIrLr?rbr�)rr��x509ZauthZ extra_headersr r r � get_host_info�s  zTransport.get_host_infocCsL|jr||jdkr|jdS|�|�\}|_}|tj�|�f|_|jdS)Nrr")r�r�r�r�r�ZHTTPConnection)rr��chostr�r r r �make_connection�s  zTransport.make_connectioncCs |j\}}|rd|_|��dS)N)NN)r�r[)rr�� connectionr r r r[�s zTransport.closecCs�|�|�}|jdd�}|r&|�d�|jrLtrL|jd|dd�|�d�n |�d|�|�d�|�d|jf�|�||�|� ||�|S)Nr"ZPOSTT)Zskip_accept_encoding)zAccept-Encodingr�)z Content-Typeztext/xmlz User-Agent) r�r�Zset_debuglevel�accept_gzip_encodingr�Z putrequestr`� user_agent� send_headers� send_content)rr�r�r��debugr�rr r r r��s        zTransport.send_requestcCs"x|D]\}}|�||�qWdS)N)� putheader)rr�r�key�valr r r r szTransport.send_headerscCsR|jdk r0|jt|�kr0tr0|�dd�t|�}|�dtt|���|�|�dS)NzContent-Encodingr�zContent-Length)�encode_thresholdr�r�rr�r.Z endheaders)rr�r�r r r rs  zTransport.send_contentcCs�t|d�r*|�dd�dkr$t|�}q.|}n|}|��\}}x2|�d�}|sLP|jr`tdt|��|�|�qr r r r�%s"    zTransport.parse_response)FF)F)F)rrr� __version__r�r�rrr�r�r�r�r�r[r�rrr�r r r r r�`s  ! r�cs,eZdZddd��fdd� Zdd�Z�ZS) � SafeTransportFN)�contextcst�j||d�||_dS)N)r�r�)�superrr )rr�r�r )rr r rFszSafeTransport.__init__cCst|jr||jdkr|jdSttjd�s2td��|�|�\}|_}|tjj|dfd|ji|p`i��f|_|jdS)Nrr"�HTTPSConnectionz1your version of http.client doesn't support HTTPSr ) r�r0r�r�r�r�r�r r )rr�r�r�r r r r�Ms   zSafeTransport.make_connection)FF)rrrrr�� __classcell__r r )rr r Csr c@sXeZdZddd�dd�Zdd�Zdd �Zd d �ZeZd d �Zdd�Z dd�Z dd�Z dS)� ServerProxyNF)r c Cs�tj�|�\} }| dkr td��tj�|�\|_|_|js@d|_|dkrz| dkr^t} d|i} nt} i} | f||d�| ��}||_ |p�d|_ ||_ ||_ dS)N)r��httpszunsupported XML-RPC protocolz/RPC2rr )r�r�zutf-8) r�r�Z splittyper�Z splithost�_ServerProxy__host�_ServerProxy__handlerr r��_ServerProxy__transport�_ServerProxy__encoding�_ServerProxy__verbose�_ServerProxy__allow_none) rZuri� transportrWr�r^r�r�r r1r�Z extra_kwargsr r r r�s&  zServerProxy.__init__cCs|j��dS)N)rr[)rr r r Z__close�szServerProxy.__closecCsPt|||j|jd��|jd�}|jj|j|j||jd�}t |�dkrL|d}|S)N)rWr^�xmlcharrefreplace)r�r"r) rgrrrBrr�rrrr�)rr�r�r�r�r r r Z __request�s   zServerProxy.__requestcCsd|jj|j|jfS)Nz <%s for %s%s>)rrrr)rr r r r�szServerProxy.__repr__cCs t|j|�S)N)r��_ServerProxy__request)rr�r r r r��szServerProxy.__getattr__cCs.|dkr|jS|dkr|jStd|f��dS)Nr[rzAttribute %r not found)�_ServerProxy__closerrZ)r�attrr r r r��s zServerProxy.__call__cCs|S)Nr )rr r r � __enter__�szServerProxy.__enter__cGs |��dS)N)r)rr�r r r �__exit__�szServerProxy.__exit__)NNFFFF) rrrrrrrrr�r�rrr r r r rls r�__main__zhttp://localhost:8000ZERROR� )FF)NNNF)FF)r�)UrI�sysr+r�decimalrZ http.clientr�Z urllib.parser�Z xml.parsersrr�r�rr�� ImportErrorr � version_infor rsrtZ PARSE_ERRORZ SERVER_ERRORZAPPLICATION_ERRORZ SYSTEM_ERRORZTRANSPORT_ERRORZNOT_WELLFORMED_ERRORZUNSUPPORTED_ENCODINGZINVALID_ENCODING_CHARZINVALID_XMLRPCZMETHOD_NOT_FOUNDZINVALID_METHOD_PARAMSZINTERNAL_ERRORr�rrrrr�r�ZBooleanZ_day0r#r%r,r-rCrDrErNr�rOr\r�r�r�r�r�r�r�r�rgr�r�r�r��objectr�r�r�r rZServerrr�rZ currentTimeZgetCurrentTimereZmultiZgetData�pow�addr�r r r r ��s�           K #!(C '  ' J  d)i