
    g                     Z    S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJr   " S S\5      r	g)    N)BytesIO)Element
SubElement)GPParserc                   8    \ rS rSrSrSr/ rS rS rS r	S r
Srg)	GPAuditCsvParser   zutf-8Nc                 N   / U l         [        R                  " [        R                  " U R
                  5      " [        U5      5      5      n[        U5      U l        U HE  n0 n[        U5       H  u  pVXdU R                  U   '   M     U R                   R                  U5        MG     g )N)linescsvreadercodecs	getreaderencodingr   nextheader	enumerateappend)selfcontentsr   rowlineixs          7/usr/lib/python3/dist-packages/samba/gp_parse/gp_csv.pyparseGPAuditCsvParser.parse!   s~    
F,,T]];GH<MNO6lCD!#'(T[[^$ ' JJd#     c                 F   [        US5       n[        S5      n[        US5      nU R                   H  n[        US5      nXVl        M     U R
                   H  n[        US5      nU R                   Vs/ s H	  oU   U4PM     sn He  u  pY[        US5      nXVl        U	S:X  a  US:w  a  SUR                  S'   U	S	:X  d  M:  US:w  d  MB  US
   S:X  d  US
   S:X  d  MV  SUR                  S'   Mg     M     U R                  X25        S S S 5        g s  snf ! , (       d  f       g = f)NwbCsvFileRowValuezPolicy Target TRUEuser_idzSetting ValueSubcategoryRegistryGlobalSaclFileGlobalSaclacl)openr   r   r   textr   attribwrite_pretty_xml)
r   filenamefrootchildevaluer   r   titles
             r   	write_xmlGPAuditCsvParser.write_xml.   s   (D!Q9%DtU+E[["5'2
 ! 

"4/7;{{ C{!q'1{ CHA&ug6E!"J /AG28Y/0Q"Wm,0DDm,0@@.4U+ !D # !!$*+ "! !D "!s0   A&D3D9D DD(DD
D c                    Sn/ U l         UR                  S5       GHc  nU(       a  Sn/ U l        UR                  S5       Hq  n[        UR                  [
        5      (       d*  UR                  R                  U R                  5      Ul        U R                  R                  UR                  5        Ms     M  0 n[        UR                  S5      5       H  u  pdUR                  b  UR                  OSXPR                  U   '   [        U R                  U   [
        5      (       a  MS  XPR                  U      R                  U R                  5      XPR                  U   '   M     U R                   R                  U5        GMf     g )NTr"   Fr#   r$   )
r   findallr   
isinstancer,   strdecodeoutput_encodingr   r   )r   r1   r   rvr   r   s          r   load_xmlGPAuditCsvParser.load_xmlJ   s   
e$A 7+A%affc22!"t/C/C!DKK&&qvv. ,
 %aii&89DA56VV5G166RDQ(%dkk!nc::/3KKN/C/J/J4K_K_/`[[^, :
 

!!$' %r   c           	      p   SSK Jn  U" USU R                  S9 n[        R                  " U[        R
                  S9nUR                  U R                  5        U R                   H1  nUR                  U R                   Vs/ s H  oeU   PM	     sn5        M3     S S S 5        g s  snf ! , (       d  f       g = f)Nr   )r+   w)r   )quoting)	ior+   r   r   writerQUOTE_MINIMALwriterowr   r   )r   r/   r+   r0   rF   r   r   s          r   write_binaryGPAuditCsvParser.write_binary_   s    (C$--8AZZ3+<+<=FOODKK(

$++ >+Qa+ >? #	 98
 !? 98s   A'B' B"B'"B''
B5)r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r6   r@   rI   __static_attributes__ r   r   r   r      s&    HFE
$+8(*@r   r   )
r   r   rE   r   xml.etree.ElementTreer   r   samba.gp_parser   r   rP   r   r   <module>rS      s)   (  
 	  5 #J@x J@r   