???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
k°x]c           @   sp  d  d l  m Z d  d l Z d  d l m Z 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 e e  k r« e j e _ e j e _ n  i e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j 6e e j  6Z! d   Z" d   Z# d   Z$ d	   Z% d
   Z& d   Z' d   Z( d{ d| d} g Z) d~ d d d g Z* d d f d d f d d f d d f d d f d  d f d" d f d$ d f d& d f d( d f d* d f d, d f d. d f d0 d f d2 d f g Z+ d d d d d g Z, d< d f d= d f d> d f g Z- i e) d? 6e* d@ 6e+ dA 6e, dB 6e- dC 6Z. i i dD d 6dE d 6dF d# 6dG 6Z/ i i dH d 6dI d 6dJ d+ 6dK dL 6dM dN 6dO 6i dP d 6dQ d 6dR d 6dS d! 6dM d+ 6dT 6i
 dU d 6dV d 6dW d 6dX d 6dY d! 6dZ d# 6d[ d% 6d\ d' 6d] d) 6d^ d+ 6d_ 6i d` d 6da d# 6db dN 6dc dd 6de 6Z0 df   e1 e/ j2    D Z3 dg   e1 e0 j2    D Z4 i e/ e3 f dh 6e0 e4 f di 6Z5 dj   Z6 dk   Z7 dl Z8 dm   Z9 dn   Z: do   Z; dp   Z< dq   Z= dr   Z> i e= ds 6Z? i e> ds 6Z@ dt   ZA du   ZB dv   ZC eD eD dw  ZE eD eD dx  ZF dy   ZG dz   ZH d S(   i’’’’(   t   FieldDescriptorN(   t   IPv4Addresst
   ip_address(   t   IPv6Addresst   encodebytesc         C   s   |  j    j t j j S(   N(   t
   GetOptionst
   Extensionst   opts_pb2t   criut   hex(   t   field(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_hex0   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   ipadd(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_ip4   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   flags(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_flags8   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   dev(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_dev<   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   odev(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_odev@   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   dict(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _marked_as_dictD   s    c         C   s   |  j    j t j j S(   N(   R   R   R   R   t   conv(   R
   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _custom_convH   s    t	   PROT_READi   t
   PROT_WRITEi   t	   PROT_EXECi   t
   MAP_SHAREDt   MAP_PRIVATEt   MAP_ANONi    t   MAP_GROWSDOWNi   t   VMA_AREA_NONEi    t   VMA_AREA_REGULARt   VMA_AREA_STACKt   VMA_AREA_VSYSCALLt   VMA_AREA_VDSOi   t   VMA_AREA_HEAPi   t   VMA_FILE_PRIVATEi   t   VMA_FILE_SHAREDi   t   VMA_ANON_SHAREDi   t   VMA_ANON_PRIVATEi	   t   VMA_AREA_SYSVIPCi
   t   VMA_AREA_SOCKETi   t   VMA_AREA_VVARi   t   VMA_AREA_AIORINGi   t
   VMA_UNSUPPi   t   O_WRONLYt   O_RDWRt   O_APPENDi   t   O_DIRECTi @  t   O_LARGEFILEi   t	   PE_PARENTt   PE_LAZYt
   PE_PRESENTs	   mmap.prots
   mmap.flagss   mmap.statuss   rfile.flagss
   pmap.flagst   Alivet   Zombiet   Stoppedt
   task_statet   UNIXt   INETt   INET6t   NETLINKi   t   PACKETi   t   familyt   STREAMt   DGRAMt   RAWt	   SEQPACKETt   typet   ESTABLISHEDt   SYN_SENTt   SYN_RECVt	   FIN_WAIT1t	   FIN_WAIT2t	   TIME_WAITt   CLOSEt
   CLOSE_WAITt   LAST_ACKt   LISTENt   statet   IPt   TCPt   UDPt   UDPLITEi   t   protoc         C   s5   i  |  ]+ \ } } d    t  | j    D |  q S(   c         S   s   i  |  ] \ } } | |  q S(    (    (   t   .0t   k2t   v2(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pys
   <dictcomp>­   s   	(   t   listt   items(   RU   t   kt   v(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pys
   <dictcomp>­   s   	c         C   s5   i  |  ]+ \ } } d    t  | j    D |  q S(   c         S   s   i  |  ] \ } } | |  q S(    (    (   RU   RV   RW   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pys
   <dictcomp>²   s   	(   RX   RY   (   RU   RZ   R[   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pys
   <dictcomp>²   s   	t   gent   skc         C   s   g  g  | D] } |  | d @r
 | ^ q
 D] } | d ^ q( } |  t  g  | D] } | d ^ qK  M}  |  r | j d |   n  d j |  S(   Ni   i    s   0x%xs    | (   t   sumt   appendt   join(   t   valuet	   flags_mapt   xt   bs(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt	   map_flags½   s
    >(c         C   sv   |  d k r d St  |  } t g  g  |  j d  D] } | j   ^ q2 D]' } t t | j | |   d  ^ qH  S(   Nt    i    t   |(   R   R^   t   splitt   stript   intt   strt   get(   Ra   Rb   t   bdRc   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   unmap_flagsÅ   s    i   c         C   sN   t  |   r, d t j |  t j |  f Sd | t ?| d t >d @f Sd  S(   Ns   %d:%di   (   R   t   ost   majort   minort   kern_minorbits(   R
   Ra   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt
   decode_devÓ   s     
c         C   sd   g  | j  d  D] } t |  ^ q } t |   rL t j | d | d  S| d t >| d BSd  S(   Nt   :i    i   (   Rh   Rj   R   Ro   t   makedevRr   (   R
   Ra   Rc   R   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt
   encode_devŪ   s    (c         C   s   t  j |   S(   N(   t   base64R   (   Ra   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   encode_base64ć   s    c         C   s   t  j |   S(   N(   Rw   t   decodebytes(   Ra   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   decode_base64ē   s    c         C   s   t  j |   S(   N(   t   quoprit   encodestring(   Ra   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   encode_unixė   s    c         C   s   t  j |   S(   N(   R{   t   decodestring(   Ra   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   decode_unixļ   s    t	   unix_namec         C   s"   t  |   } | r t | St Sd  S(   N(   R   t   encodeRx   (   R
   t   c(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   get_bytes_enc÷   s    c         C   s"   t  |   } | r t | St Sd  S(   N(   R   t   decodeRz   (   R
   R   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   get_bytes_dec’   s    c         C   s.   d t  k r t } n t t f } t |  |  S(   Nt
   basestring(   t   __builtins__R   Rk   t   bytest
   isinstance(   Ra   t   string_types(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt	   is_string  s    	c         C   s  | s t  |   } n  |  j t j k r7 t | | |  S|  j t j k rY t |   |  S|  j t j k r |  j j	 j
 | d   j S|  j t k rft |  j } | r\| t k r\| rĄ d | St |   rŁ t |  |  St |   } | r"y t | } Wn t k
 rd | SXt | |  Sn  t |   } | r\t | d |  j j
 | | |   Sn  | |  St d |  j |  j f   d  S(   Ns   0x%xi    s!   Field(%s) has unsupported type %d(   R   RD   t   FDt   TYPE_MESSAGEt   pb2dictt
   TYPE_BYTESR   t	   TYPE_ENUMt	   enum_typet   values_by_numberRl   t   Nonet   namet   _basic_castRj   R   Rs   R   t
   flags_mapst	   ExceptionRe   R   t	   dict_maps(   R
   Ra   t   prettyt   is_hext   castR   Rb   t   dct(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _pb2dict_cast  s8    	(
c   	      C   s^  | r t  j   n i  } x?|  j   D]1\ } } | j t j k r4g  } | rt |  rt |  d k r t j	 | d  } t
 |  } nb d t j	 | d  d >t j	 | d  d >t j	 | d  d >t j	 | d  } t |  } | j | j  qIxB | D]" } | j t | | | |   qWn t | | | |  } | | | j <q% W| S(	   s^   
    Convert protobuf msg to dictionary.
    Takes a protobuf message and returns a dict.
    i   i    i    i   i   i`   i@   i    (   t   collectionst   OrderedDictt
   ListFieldst   labelR   t   LABEL_REPEATEDR   t   lent   sockett   ntohlR   R   R_   t
   compressedR   R   (	   t   pbR   R   t   dR
   Ra   t   d_valR[   t   addr(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyR   8  s"    B#c         C   sm  |  j  t j k r" t |   |  S|  j  t j k rM |  j j j | d   j	 S|  j  t
 k rMt
 |  j  } | t k r@t |  r@t |   r t |  |  St |   } | rŽ y t | } Wn t k
 rĶ qŽ Xt | |  Sn  t |   } | r3t | d |  j j | d   } | d  k r/| | d  } n  | S| | d  S| |  Sn t d |  j |  j  f   d  S(   Ni   i    s!   Field(%s) has unsupported type %d(   RD   R   R   R   R   R   t   values_by_nameRl   R   t   numberR   Rj   R   R   Rv   R   R   R   Rn   R   R   R   (   R
   Ra   R   R   Rb   R   t   ret(    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   _dict2pb_castW  s4    !c         C   s"  x| j  j D]} | j |  k r( q n  |  | j } | j t j k r·t | | j d
  } t | d  ret	 |  ret
 | d  } | j d k r¶ | j t j t |    q | j d k rLt |  } | j t j | d ?d @  | j t j | d ?d @  | j t j | d ?d @  | j t j | d ?d @  q t d	 | j   q n  x² | D]D } | j t j k rt | | j    ql| j t | |   qlWq | j t j k ržt | | j  j   t | t | | j d
   q t | | j t | |   q W| S(   sd   
    Convert dictionary to protobuf msg.
    Takes dict and protobuf message to be merged into.
    i    i   i   i    i   I’’’’    i   i   s   Unknown IP address version %dNi`   i@   i    i    (   t
   DESCRIPTORt   fieldsR   R”   R   R¢   t   getattrR   R   R   R   t   versionR_   R¤   t   htonlRj   R   RD   R   t   dict2pbt   addR®   t   SetInParentt   setattr(   RØ   R§   R
   Ra   t   pb_valt   valt   ivalR[   (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyR“     s8    ! (   R   i   (   R   i   (   R   i   (   R   i   (   R   i   (   R   i    (   R   i   i    i   i   i   i   i    i@   i   i   i   i   i   i   i    I       (   R.   i   (   R/   i   (   R0   i   (   R1   i @  (   R2   i   i   i   i   (I   t   google.protobuf.descriptorR    R   R   t	   ipaddressR   R   R   R¤   R   Ro   Rw   R{   t   dirR|   R   R~   Ry   Rj   t   TYPE_FIXED64t   TYPE_FIXED32t   TYPE_SFIXED64t   TYPE_SFIXED32t
   TYPE_INT64t   TYPE_UINT64t   TYPE_SINT64t
   TYPE_INT32t   TYPE_UINT32t   TYPE_SINT32t   boolt	   TYPE_BOOLRk   t   TYPE_STRINGR   R   R   R   R   R   R   R   t   mmap_prot_mapt   mmap_flags_mapt   mmap_status_mapt   rfile_flags_mapt   pmap_flags_mapR   t   gen_mapst   sk_mapsRX   RY   t	   gen_rmapst   sk_rmapsR   Re   Rn   Rr   Rs   Rv   Rx   Rz   R}   R   R   R   R   R   R   t   FalseR   R   R®   R“   (    (    (    s9   /usr/lib/python2.7/site-packages/pycriu/images/pb2dict.pyt   <module>   sü   










																										
												(	(