
    hk1                        S SK r S SKrS SKrS SKrS SKrS SKJrJrJr  S SK	J
r  S SKrS\" \ 5      ;  a"  \ R                  \ l        \ R                   \ l        \R$                  \\R(                  \\R*                  \\R,                  \\R.                  \\R0                  \\R2                  \\R4                  \\R6                  \\R8                  \\R:                  \\R>                  \ 0r!S r"S r#S r$S r%S	 r&S
 r'S r(/ SQr)/ SQr*/ SQr+/ SQr,/ SQr-/ SQr.\)\*\+\,\.\-S.r/SSSSS.0r0SSSSSS.SSS S!SS".S#S$S%S&S'S(S)S*S+S,S-.
S.S/S0S1S2.S3.r1\2" \0Rg                  5       5       V VVVs0 s H1  u  pU \2" URg                  5       5       VVs0 s H  u  p#X2_M	     snn_M3     snnnn r4\2" \1Rg                  5       5       V VVVs0 s H1  u  pU \2" URg                  5       5       VVs0 s H  u  p#X2_M	     snn_M3     snnnn r5\0\44\1\54S4.r6S5 r7S6 r8S7r9S8 r:S9 r;S: r<S; r=S< r>S= r?S>\>0r@S>\?0rAS? rBS@ rCSA rDSFSB jrESFSC jrFSD rGSE rHgs  snnf s  snnnn f s  snnf s  snnnn f )G    N)IPv4AddressIPv6Address
ip_address)FieldDescriptorencodebytesc                 l    U R                  5       R                  [        R                     R                  $ N)
GetOptions
Extensionsopts_pb2criuhexfields    7/usr/lib/python3/dist-packages/pycriu/images/pb2dict.py_marked_as_hexr   1   &    ((7;;;    c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   ipaddr   s    r   _marked_as_ipr   5   &    ((7===r   c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   flagsr   s    r   _marked_as_flagsr   9   r   r   c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   devr   s    r   _marked_as_devr   =   r   r   c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   odevr   s    r   _marked_as_odevr!   A   &    ((7<<<r   c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   dictr   s    r   _marked_as_dictr%   E   r"   r   c                 l    U R                  5       R                  [        R                     R                  $ r	   )r
   r   r   r   convr   s    r   _custom_convr(   I   r"   r   ))	PROT_READ   )
PROT_WRITE   )	PROT_EXEC   ))
MAP_SHAREDr*   )MAP_PRIVATEr,   )MAP_ANON    )MAP_GROWSDOWN   ))VMA_AREA_NONEr   )VMA_AREA_REGULARr*   )VMA_AREA_STACKr,   )VMA_AREA_VSYSCALLr.   )VMA_AREA_VDSO   )VMA_AREA_HEAPr2   )VMA_FILE_PRIVATE@   )VMA_FILE_SHARED   )VMA_ANON_SHAREDr4   )VMA_ANON_PRIVATE   )VMA_AREA_SYSVIPC   )VMA_AREA_SOCKET   )VMA_AREA_VVAR   )VMA_AREA_AIORING    )VMA_AREA_MEMFD @  )VMA_AREA_SHSTK   )
VMA_UNSUPPl        ))O_WRONLYr*   )O_RDWRr,   )O_CREATr=   )O_EXCLr?   )O_NOCTTYr4   )O_TRUNCrB   )O_APPENDrD   )
O_NONBLOCKrF   )O_DSYNCrH   )FASYNCrJ   )O_DIRECTrL   )O_LARGEFILErN   )O_DIRECTORYi   )
O_NOFOLLOWi   )	O_NOATIMEi   )	O_CLOEXECi   ))F_SEAL_SEALr*   )F_SEAL_SHRINKr,   )F_SEAL_GROWr.   )F_SEAL_WRITEr:   )F_SEAL_FUTURE_WRITE   ))	PE_PARENTr*   )PE_LAZYr,   )
PE_PRESENTr.   )z	mmap.protz
mmap.flagszmmap.statuszrfile.flagsz
pmap.flagszseals.flags
task_stateAliveZombieStopped)r*         UNIXINETINET6NETLINKPACKET)r*   r,   
   re      STREAMDGRAMRAW	SEQPACKET)r*   r,   rm      rt   ESTABLISHEDSYN_SENTSYN_RECV	FIN_WAIT1	FIN_WAIT2	TIME_WAITCLOSE
CLOSE_WAITLAST_ACKLISTEN)
r*   r,   rm   r.   rz   rn      r:   	   rt   IPTCPUDPUDPLITE)r   rn   ru      )familytypestateproto)genskc                 "   U Vs/ s H  o US   -  (       d  M  UPM     sn Vs/ s H  o"S   PM	     nnU [        U Vs/ s H  o"S   PM	     sn5      ) -  n U (       a  UR                  SU -  5        SR                  U5      $ s  snf s  snf s  snf )Nr*   r   0x%xz | )sumappendjoin)value	flags_mapxbss       r   	map_flagsr      s    $->Iq1I>	?>1A$>B	?	c+AQ4+,,,E
		&5.!::b>	 ?	?+s   BBBB
c                    U S:X  a  g[        U5      n[        U R                  S5       Vs/ s H  o3R                  5       PM     sn Vs/ s H'  n[	        [        UR                  X35      5      S5      PM)     sn5      $ s  snf s  snf )N r   |)r$   r   splitstripintstrget)r   r   bdr   s       r   unmap_flagsr      sw    {	iB%*[[%56%5'')%566A 	Cqq!6  6s   A>	.B   c                     [        U 5      (       a/  S[        R                  " U5      [        R                  " U5      4-  $ SU[        -	  US[        -  S-
  -  4-  $ )Nz%d:%dr*   )r!   osmajorminorkern_minorbits)r   r   s     r   
decode_devr      sX    u"((5/288E?;;;%>1A$71#<=? ? 	?r   c                     UR                  S5       Vs/ s H  n[        U5      PM     nn[        U 5      (       a  [        R                  " US   US   5      $ US   [
        -  US   -  $ s  snf )N:r   r*   )r   r   r!   r   makedevr   )r   r   r   r   s       r   
encode_devr      sf     ;;s+
,+a3q6+C
,uzz#a&#a&))1v'#a&00	 -s   A*c                 J    [         R                  " U 5      R                  5       $ r	   )base64r   decoder   s    r   encode_base64r      s    e$++--r   c                 T    [         R                  " [        R                  U 5      5      $ r	   )r   decodebytesr   encoder   s    r   decode_base64r      s    cjj/00r   c                 .    [         R                  " U 5      $ r	   )quopriencodestringr   s    r   encode_unixr         u%%r   c                 .    [         R                  " U 5      $ r	   )r   decodestringr   s    r   decode_unixr     r   r   	unix_namec                 D    [        U 5      nU(       a	  [        U   $ [        $ r	   )r(   r   r   r   cs     r   get_bytes_encr         UAayr   c                 D    [        U 5      nU(       a	  [        U   $ [        $ r	   )r(   r   r   r   s     r   get_bytes_decr     r   r   c                 R    S[         ;   a  [        nO[        [        4n[	        X5      $ )N
basestring)__builtins__r   r   bytes
isinstance)r   string_typess     r   	is_stringr     s#    |#!U|e**r   c                    U(       d  [        U 5      nU R                  [        R                  :X  a  [	        XU5      $ U R                  [        R
                  :X  a  [        U 5      " U5      $ U R                  [        R                  :X  a0  U R                  R                  R                  US 5      R                  $ U R                  [        ;   a  [        U R                     nU(       a  U[        L a  U(       a  SU-  $ [        U 5      (       a  [        X5      $ [!        U 5      nU(       a   ["        U   n[%        X5      $ [)        U 5      nU(       a.  [*        U   S   U R                     R                  X" U5      5      $ U" U5      $ ['        SU R                  U R                  4-  5      e! [&         a    SU-  s $ f = f)Nr   r   !Field(%s) has unsupported type %d)r   r   FDTYPE_MESSAGEpb2dict
TYPE_BYTESr   	TYPE_ENUM	enum_typevalues_by_numberr   name_basic_castr   r   r   r   
flags_mapsr   	Exceptionr%   	dict_maps)r   r   prettyis_hexcastr   r   dcts           r   _pb2dict_castr   '  sp   &zzR__$uf--	r}}	$U#E**	r||	#//33E4@EEE	{	"5::&dck ~%e$$!%//$U+E7 *5 1I %U66!%(C ~a(488ULLE{;UZZ01 2 	2 ! *!E>)*s   +	F+ +F=<F=c           
      l   U(       a  [         R                  " 5       O0 nU R                  5        GHZ  u  pEUR                  [        R
                  :X  Ga  / nU(       a  [        U5      (       a  [        U5      S:X  a%  [        R                  " US   5      n[        U5      nO~S[        R                  " US   5      S-  -   [        R                  " US   5      S-  -   [        R                  " US   5      S-  -   [        R                  " US   5      -   n[        U5      nUR                  UR                  5        O1U H  nUR                  [        XGX5      5        M      O[        XEX5      n UR                  5       X4R                   '   GM]     U$ ! ["        [$        4 a    XcUR                   '    GM  f = f)zR
Convert protobuf msg to dictionary.
Takes a protobuf message and returns a dict.
r*   r   `   r=   r,   r2   rm   )collectionsOrderedDict
ListFieldslabelr   LABEL_REPEATEDr   lensocketntohlr   r   r   
compressedr   r   r   UnicodeDecodeErrorAttributeError)	pbr   r   dr   r   d_valvaddrs	            r   r   r   O  s_   
 &,!A;;"+++E-..u:?U1X.A&q>DV\\%(3?@#\\%(3?A#\\%(3?A $\\%(35A 'q>DT__-ALLu!HI  "%?E	"!LLNAjjM- (2 H #N3 	"!ejjM	"s   -FF32F3c                    U R                   [        R                  :X  a  [        U 5      " U5      $ U R                   [        R                  :X  a0  U R
                  R                  R                  US 5      R                  $ U R                   [        ;   a  [        U R                      nU[        L a  [        U5      (       a  [        U 5      (       a  [        X5      $ [        U 5      nU(       a   [        U   n[!        X5      $ [%        U 5      nU(       a7  [&        U   S   U R(                     R                  US 5      nUc	  U" US5      nU$ U" US5      $ U" U5      $ [#        SU R(                  U R                   4-  5      e! ["         a     Nf = f)Nr*   r   r   )r   r   r   r   r   r   values_by_namer   numberr   r   r   r   r   r   r   r   r   r%   r   r   )r   r   r   r   r   r   rets          r   _dict2pb_castr   q  sX    zzR]]"U#E**	r||	#--11%>EEE	{	"5::&3;9U++e$$!%//$U+E9 *5 1I 'u88!%(CnQ'

377tD;ua.C
 q>!;;UZZ01 2 	2% ! s   ,	E> >
F
Fc           	      \   UR                   R                   GH  nUR                  U ;  a  M  XR                     nUR                  [        R
                  :X  Ga  [        XR                  S5      n[        US   5      (       GaA  [        U5      (       Ga0  [        US   5      nUR                  S:X  a/  UR                  [        R                  " [        U5      5      5        OUR                  S:X  a  [        U5      nUR                  [        R                  " US-	  S-  5      5        UR                  [        R                  " US-	  S-  5      5        UR                  [        R                  " US-	  S-  5      5        UR                  [        R                  " US-	  S-  5      5        O[        S	UR                  -  5      eGM  U HV  nUR                   [        R"                  :X  a  [%        XtR'                  5       5        M<  UR                  [)        X'5      5        MX     GM  UR                   [        R"                  :X  aF  [        XR                  5      R+                  5         [%        U[        XR                  S5      5        GMq  [-        XR                  [)        X#5      5        GM     U$ )
zX
Convert dictionary to protobuf msg.
Takes dict and protobuf message to be merged into.
Nr   r.   rn   r   l    r=   r2   zUnknown IP address version %d)
DESCRIPTORfieldsr   r   r   r   getattrr   r   r   versionr   r   htonlr   r   r   r   dict2pbaddr   SetInParentsetattr)r   r   r   r   pb_valvalivalr   s           r   r  r    s   
 %%::Q**;;"+++RT2Fq""}U';'; q*;;!#MM&,,s3x"89[[A%s8DMM&,,0@J/N"OPMM&,,0@J/N"OPMM&,,0@J/N"OPMM&,,0@J/N"OP#$C$'KK%0 1 1::0Azz|,MM-"9:	  zzR__, JJ'335wr::t<=JJe(CDG &H Ir   )FF)Ir   r   r   r   r   	ipaddressr   r   r   google.protobuf.descriptorr   r   r   dirr   r   r   r   TYPE_FIXED64r   TYPE_FIXED32TYPE_SFIXED64TYPE_SFIXED32
TYPE_INT64TYPE_UINT64TYPE_SINT64
TYPE_INT32TYPE_UINT32TYPE_SINT32	TYPE_BOOLboolTYPE_STRINGr   r   r   r   r   r   r!   r%   r(   mmap_prot_mapmmap_flags_mapmmap_status_maprfile_flags_mapseals_flags_mappmap_flags_mapr   gen_mapssk_mapslistitems	gen_rmapssk_rmapsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  )kr   k2v2s   0000r   <module>r'     s     	   : : < F#,,F,,F( OOSOOSccMM3NNCNNCMM3NNCNNCLL$NNC <>><===(&  "" "
     	7!L X^^%& ' 1779o'%FB 	%' '&	 W]]_% & 1779o'%FB 	%' '% i H
	 ?1.1&& {	#
{	#+%2PD%2P)k''s0   %"I
II
>"I
 I.I
I
I
