403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /lib64/python3.9/site-packages/mercurial/pure/__pycache__/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /lib64/python3.9/site-packages/mercurial/pure/__pycache__/parsers.cpython-39.opt-1.pyc
a

�+�b�}�@s�ddlmZddlZddlZddlZddlmZmZddlm	Z	ddl
mZmZm
Z
mZddl
mZddl
mZejZejZejZejZejZd	Zd
Zd
ZdZ dZ!dZ"d
Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/e	j0ddd�Gdd�de1��Z2dd �Z3Gd!d"�d"e1�Z4Gd#d$�d$e4�Z5Gd%d&�d&e5�Z6Gd'd(�d(e4�Z7ej8fd)d*�Z9d+d,�Z:Gd-d.�d.e5�Z;Gd/d0�d0e;�Z<d1d2�Z=d3d4�Z>d5d6�Z?dS)7�)�absolute_importN�)�nullrev�sha1nodeconstants)�attr)�error�pycompat�revlogutils�util)�nodemap)�	constants����������� �@��iiiii i@i�TF)�slots�initc@s�eZdZdZe��Ze��Ze��Ze��Z	e��Z
e��Ze��Ze��Z
e��Ze��ZdCdd�Zedd��Zed	d
��Zdd�Zd
d�Zdd�Zdd�Zdd�Zedd��Zedd��Zedd��Zdd�Zedd��Zedd ��Zed!d"��Z e j!d#d$��Z"ed%d&��Z#ed'd(��Z$e$j!d)d*��Z%ed+d,��Z&ed-d.��Z'ed/d0��Z(ed1d2��Z)ed3d4��Z*ed5d6��Z+ed7d8��Z,d9d:�Z-d;d<�Z.d=d>�Z/d?d@�Z0dAdB�Z1dS)D�DirstateItema�represent a dirstate entry

    It hold multiple attributes

    # about file tracking
    - wc_tracked: is the file tracked by the working copy
    - p1_tracked: is the file tracked in working copy first parent
    - p2_info: the file has been involved in some merge operation. Either
               because it was actually merged, or because the p2 version was
               ahead, or because some rename moved it there. In either case
               `hg status` will want it displayed as modified.

    # about the file state expected from p1 manifest:
    - mode: the file mode in p1
    - size: the file size in p1

    These value can be set to None, which mean we don't have a meaningful value
    to compare with. Either because we don't really care about them as there
    `status` is known without having to look at the disk or because we don't
    know these right now and a full comparison will be needed to find out if
    the file is clean.

    # about the file state on disk last time we saw it:
    - mtime: the last known clean mtime for the file.

    This value can be set to None if no cachable state exist. Either because we
    do not care (see previous section) or because we could not cache something
    yet.
    FTNc		Cs�||_||_||_||_||_d|_d|_d|_d|_d|_	|durNd}d}n|ddur^d}|rv|d|_|d|_|r�|d\|_|_|_	dS)NFrrr)
�_wc_tracked�_p1_tracked�_p2_info�_fallback_exec�_fallback_symlink�_mode�_size�_mtime_s�	_mtime_ns�_mtime_second_ambiguous)	�self�
wc_tracked�
p1_tracked�p2_info�has_meaningful_data�has_meaningful_mtime�parentfiledata�
fallback_exec�fallback_symlink�r-�</usr/lib64/python3.9/site-packages/mercurial/pure/parsers.py�__init__ms2

��zDirstateItem.__init__cCs�t|t@�}t|t@�}d}|t
@r.d}d}d}|t@rB|t@}d}	|t@rV|t@}	|r�|t@rhd}nd}|t	@r�|t
jO}n
|t
jO}|t
@}
|t|t@�t|t@�t|t@�|||||||
ff||	d�S)z,Build a new DirstateItem object from V2 dataNFi�i�)r%r&r'r(r)r*r+r,)�bool�DIRSTATE_V2_HAS_MODE_AND_SIZE�DIRSTATE_V2_HAS_MTIME�&DIRSTATE_V2_EXPECTED_STATE_IS_MODIFIED�DIRSTATE_V2_HAS_FALLBACK_EXEC�DIRSTATE_V2_FALLBACK_EXEC� DIRSTATE_V2_HAS_FALLBACK_SYMLINK�DIRSTATE_V2_FALLBACK_SYMLINK�DIRSTATE_V2_MODE_EXEC_PERM�DIRSTATE_V2_MODE_IS_SYMLINK�stat�S_IFLNK�S_IFREG�"DIRSTATE_V2_MTIME_SECOND_AMBIGUOUS�DIRSTATE_V2_WDIR_TRACKED�DIRSTATE_V2_P1_TRACKED�DIRSTATE_V2_P2_INFO)�cls�flags�sizeZmtime_sZmtime_nsZ
has_mode_sizer)�moder+r,�second_ambiguousr-r-r.�from_v2_data�s<




�zDirstateItem.from_v2_datacCs�|dkr|dddd�S|dkr(|dd�S|dkrh|tkrBd}d}n|tkrTd}d}nd}d}|||d�S|d	kr�|tkr�|ddd
�S|tkr�|ddd�S|tkr�|ddd||dfd
�S|dd|||ddffd�Sntd|��dS)z�Build a new DirstateItem object from V1 data

        Since the dirstate-v1 format is frozen, the signature of this function
        is not expected to change, unlike the __init__ one.
        �mT)r%r&r'�a)r%�rF)r&r'�n)r%r')r%r&)�*rF)r%r&r)r*r)r%r&r*sunknown state: %sN)�	NONNORMAL�FROM_P2�AMBIGUOUS_TIME�RuntimeError)rA�staterDrC�mtimer&r'r-r-r.�from_v1_data�s@
��zDirstateItem.from_v1_datacCsd|_d|_dS)z�Mark a file as "possibly dirty"

        This means the next status call will have to actually check its content
        to make sure it is correct.
        N)r!r"�r$r-r-r.�set_possibly_dirty�szDirstateItem.set_possibly_dirtycCs,d|_d|_||_||_|\|_|_|_dS)aqmark a file as "clean" cancelling potential "possibly dirty call"

        Note: this function is a descendant of `dirstate.normal` and is
        currently expected to be call on "normal" entry only. There are not
        reason for this to not change in the future as long as the ccode is
        updated to preserve the proper state of the non-normal files.
        TN)rrrr r!r"r#)r$rDrCrQr-r-r.�	set_clean�s
zDirstateItem.set_cleancCsd|_d|_d|_dS)zumark a file as tracked in the working copy

        This will ultimately be called by command like `hg add`.
        TN)rr!r"rSr-r-r.�set_trackedszDirstateItem.set_trackedcCs"d|_d|_d|_d|_d|_dS)zzmark a file as untracked in the working copy

        This will ultimately be called by command like `hg remove`.
        FN)rrr r!r"rSr-r-r.�
set_untrackeds
zDirstateItem.set_untrackedcCs(|jr$d|_d|_d|_d|_d|_dS)z�remove all "merge-only" from a DirstateItem

        This is to be call by the dirstatemap code when the second parent is dropped
        FN)rrr r!r"rSr-r-r.�drop_merge_dataszDirstateItem.drop_merge_datacCs|��S�N)�v1_moderSr-r-r.rD%szDirstateItem.modecCs|��SrY)�v1_sizerSr-r-r.rC)szDirstateItem.sizecCs|��SrY)�v1_mtimerSr-r-r.rQ-szDirstateItem.mtimecCsZ|j}|durdS|j}|\}}}||kr.dS|dks>|dkrN|jrHdSdSn||kSdS)NFrT)r!r"r#)r$Zother_mtimeZself_secZself_nsZ	other_secZother_nsrEr-r-r.�mtime_likely_equal_to1s
z"DirstateItem.mtime_likely_equal_tocCs|js
dS|��S)a\
        States are:
          n  normal
          m  needs merging
          r  marked for removal
          a  marked for addition

        XXX This "state" is a bit obscure and mostly a direct expression of the
        dirstatev1 format. It would make sense to ultimately deprecate it in
        favor of the more "semantic" attributes.
        �?)�any_tracked�v1_staterSr-r-r.rPGs
zDirstateItem.statecCs
|jduS)a�True if "fallback" information are available for the "exec" bit

        Fallback information can be stored in the dirstate to keep track of
        filesystem attribute tracked by Mercurial when the underlying file
        system or operating system does not support that property, (e.g.
        Windows).

        Not all version of the dirstate on-disk storage support preserving this
        information.
        N�rrSr-r-r.�has_fallback_execXszDirstateItem.has_fallback_execcCs|jS)a "fallback" information for the executable bit

        True if the file should be considered executable when we cannot get
        this information from the files system. False if it should be
        considered non-executable.

        See has_fallback_exec for details.rarSr-r-r.r+fs	zDirstateItem.fallback_execcCs|durd|_n
t|�|_dS)acontrol "fallback" executable bit

        Set to:
        - True if the file should be considered executable,
        - False if the file should be considered non-executable,
        - None if we do not have valid fallback data.

        See has_fallback_exec for details.N)rr0�r$�valuer-r-r.�set_fallback_execqs
zDirstateItem.set_fallback_execcCs
|jduS)a�True if "fallback" information are available for symlink status

        Fallback information can be stored in the dirstate to keep track of
        filesystem attribute tracked by Mercurial when the underlying file
        system or operating system does not support that property, (e.g.
        Windows).

        Not all version of the dirstate on-disk storage support preserving this
        information.N�rrSr-r-r.�has_fallback_symlink�sz!DirstateItem.has_fallback_symlinkcCs|jS)a "fallback" information for symlink status

        True if the file should be considered executable when we cannot get
        this information from the files system. False if it should be
        considered non-executable.

        See has_fallback_exec for details.rfrSr-r-r.r,�s	zDirstateItem.fallback_symlinkcCs|durd|_n
t|�|_dS)acontrol "fallback" symlink status

        Set to:
        - True if the file should be considered a symlink,
        - False if the file should be considered not a symlink,
        - None if we do not have valid fallback data.

        See has_fallback_symlink for details.N)rr0rcr-r-r.�set_fallback_symlink�s
z!DirstateItem.set_fallback_symlinkcCs|jS)z/True is the file is tracked in the working copy)rrSr-r-r.�tracked�szDirstateItem.trackedcCs|jp|jp|jS)z4True is the file is tracked anywhere (wc or parents)�rrrrSr-r-r.r_�szDirstateItem.any_trackedcCs|jo|jp|jS)zTrue if the file has been addedrjrSr-r-r.�added�szDirstateItem.addedcCs"|js
dS|jsdS|jrdSdS)z8True if the file has a chance to be in the "clean" stateFTrjrSr-r-r.�maybe_clean�szDirstateItem.maybe_cleancCs|jS)z8True if the file is tracked in the first parent manifest)rrSr-r-r.r&�szDirstateItem.p1_trackedcCs|jo
|jS)zvTrue if the file needed to merge or apply any input from p2

        See the class documentation for details.
        )rrrSr-r-r.r'�szDirstateItem.p2_infocCs|jo|jp|jS)z!True if the file has been removedrjrSr-r-r.�removed�szDirstateItem.removedcCs�d}|jr|tO}|jr |tO}|jr.|tO}|jdurr|jdurr|tO}|j	t
j@r^|tO}t
�
|j	�rr|tO}|jdur�|tO}|jr�|tO}|jdur�|tO}|jr�|tO}|jdur�|tO}|jr�|tO}||jp�d|jp�d|jp�dfS)z7Returns (flags, mode, size, mtime) for v2 serializationrN)rr>rr?rr@rr r1rDr:�S_IXUSRr8�S_ISLNKr9r!r2r#r=rr4r5rr6r7r")r$rBr-r-r.�v2_data�s4


zDirstateItem.v2_datacCs<|jstd��n(|jrdS|jr*|jr*dS|jr4dSdSdS)z.return a "state" suitable for v1 serialization�untracked itemrIrGrHrJN)r_rOrmrrrkrSr-r-r.r`�s
zDirstateItem.v1_statecCs|jdur|jSdS)z-return a "mode" suitable for v1 serializationNr)rrSr-r-r.rZszDirstateItem.v1_modecCs\|jstd��nH|jr&|jr&|jr&tS|jr0tS|jr:dS|jrDtS|jdurRtS|jSdS)z-return a "size" suitable for v1 serializationrqrN)	r_rOrmrrrLrMrkr rSr-r-r.r[	s

zDirstateItem.v1_sizecCsP|jstd��n<|jrdS|jdur(tS|jr2tS|js<tS|jrFtS|jSdS)z.return a "mtime" suitable for v1 serializationrqrN)r_rOrmr!rNrrr#rSr-r-r.r\s

zDirstateItem.v1_mtime)FFFTTNNN)2�__name__�
__module__�__qualname__�__doc__rZibrrrrr r!r"rrr#r/�classmethodrFrRrTrUrVrWrX�propertyrDrCrQr]rPrbr+�setterrergr,rhrir_rkrlr&r'rmrpr`rZr[r\r-r-r-r.rBs��
&
+
*	





















#rcCst|d@�S)Ni��)�int)�qr-r-r.�gettype0sr{c
@s�eZdZdZejZe�d�Z	e�d�Z
dddddddejddej
ej
ejf
Zejdd��Zejdd��Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Z d#S)$�BaseIndexObjectrs>Q�>ircCs|jjSrY)�index_formatrCrSr-r-r.�
entry_sizeNszBaseIndexObject.entry_sizecCs<t�tjti�}tdt|��D]}||d}|||<q|S)Nr�)�nodemaputilZNodeMapr�nullidr�range�len)r$r�r�nr-r-r.�_nodemapRs

zBaseIndexObject._nodemapcCs
||jvS)z*return True if the node exist in the index�r��r$�noder-r-r.�has_nodeZszBaseIndexObject.has_nodecCs
|j|S)zQreturn a revision for a node

        If the node is unknown, raise a RevlogErrorr�r�r-r-r.�rev^szBaseIndexObject.revcCs|j�|�S)zIreturn a revision for a node

        If the node is unknown, return None)r��getr�r-r-r.�get_revdszBaseIndexObject.get_revcCs8dt|�vr4t|t|��D]}||d}|j|=qdS�Nr�r�)�varsr�r�r�)r$�startr�r�r-r-r.�_stripnodesjszBaseIndexObject._stripnodescCs|j�dd�dS)Nr�)�__dict__�poprSr-r-r.�clearcachespszBaseIndexObject.clearcachescCs|jt|j�SrY)�_lgtr��_extrarSr-r-r.�__len__sszBaseIndexObject.__len__cCs>dt|�vrt|�|j|d<|�t|�|�}|j�|�dSr�)r�r�r��_pack_entryr��append)r$�tup�datar-r-r.r�vszBaseIndexObject.appendcCs|jj|dd��S)Nr�r~�pack�r$r��entryr-r-r.r�|szBaseIndexObject._pack_entrycCs2t|t�std��|dks&|t|�kr.t|��dS)Nsexpecting int indexesr)�
isinstancery�	TypeErrorr��
IndexError�r$�ir-r-r.�_check_index�s
zBaseIndexObject._check_indexcCs�|dkr|jS|�|�||jkr4|j||j}n|�|�}|j|||j�}|�||�}|jr�|dkr�t�	dt
|d��}|f|dd�}|S)Nrrr)�	null_itemr�r�r��_calculate_index�_datar�
_unpack_entryr	Zoffset_typer{)r$r�r��indexr��offsetr-r-r.�__getitem__�s


zBaseIndexObject.__getitem__cCs(|j�|�}|ddtjtjtjf}|S�Nr)r~�unpack�revlog_constants�COMP_MODE_INLINE�RANK_UNKNOWN)r$r�r�r�r-r-r.r��s�zBaseIndexObject._unpack_entrycCstj}|�|�S)�!pack header information as binary)r��INDEX_HEADERr�)r$�headerZv_fmtr-r-r.�pack_header�szBaseIndexObject.pack_headercCs8||}tjj|dd��}|dkr4|tjjd�}|S)�4return the raw binary string representing a revisionNrr)r��INDEX_ENTRY_V1r�r�rC)r$r�r��pr-r-r.�entry_binary�s
zBaseIndexObject.entry_binaryN)!rrrsrtZrust_ext_compatr�r�r~�struct�calcsize�big_int_size�int_sizerr�r�r�r�r
Z
propertycacherr�r�r�r�r�r�r�r�r�r�r�r�r�r�r-r-r-r.r|4sF

�

r|c@s$eZdZdd�Zdd�Zdd�ZdS)�IndexObjectcCs ||_t|�|j|_g|_dSrY)r�r�rr�r�)r$r�r-r-r.r/�szIndexObject.__init__cCs
||jSrY)rr�r-r-r.r��szIndexObject._calculate_indexcCs�t|t�r|jdkr|jdur&td��|j}|�|�|�|�||jkrn|j	d||j
�|_	||_g|_n|jd||j�|_dS�Nrs.deleting slices only supports a:-1 with step 1)r��slice�stop�step�
ValueErrorr�r�r�r�r�rr�r�r-r-r.�__delitem__�s


zIndexObject.__delitem__N)rrrsrtr/r�r�r-r-r-r.r��s
r�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�PersistentNodeMapIndexObjectaa Debug oriented class to test persistent nodemap

    We need a simple python object to test API and higher level behavior. See
    the Rust implementation for  more serious usage. This should be used only
    through the dedicated `devel.persistent-nodemap` config.
    cCs
t�|�S)z�Return bytes containing a full serialization of a nodemap

        The nodemap should be valid for the full set of revisions in the
        index.)r�Zpersistent_datarSr-r-r.�nodemap_data_all�sz-PersistentNodeMapIndexObject.nodemap_data_allcCsL|jdurdS|j}t�||j|j|jj�\}}d|_|_|_|||fS)z�Return bytes containing a incremental update to persistent nodemap

        This containst the data for an append-only update of the data provided
        in the last call to `update_nodemap_data`.
        N)�_nm_root�
_nm_docketr�Zupdate_persistent_data�_nm_max_idxZtip_rev)r$�docketZchangedr�r-r-r.�nodemap_data_incremental�s
�z5PersistentNodeMapIndexObject.nodemap_data_incrementalcCs>|dur:t�|�\|_|_|jr(||_nd|_|_|_dS)z�provide full block of persisted binary data for a nodemap

        The data are expected to come from disk. See `nodemap_data_all` for a
        produceur of such data.N)r�Z
parse_datar�r�r�)r$r�Znm_datar-r-r.�update_nodemap_data�s
z0PersistentNodeMapIndexObject.update_nodemap_dataN)rrrsrtrur�r�r�r-r-r-r.r��sr�c@s.eZdZddd�Zdd�Zdd�Zdd	�Zd
S)�InlinedIndexObjectrcCs(||_|�d�|_|�|j�g|_dSrY)r��_inline_scanr�r�)r$r��inliner-r-r.r/�szInlinedIndexObject.__init__cCs�d}|durdg||_d}|t|j�|jkr�||j}t�d|j|||j��\}|durj||j|<|d7}||j|7}q|t|j�kr�td��|S)Nrr}rscorrupted data)	�_offsetsr�r�rr�r�r�r�r�)r$ZlgtZoff�countr��sr-r-r.r��s"
�
zInlinedIndexObject._inline_scancCs�t|t�r|jdkr|jdur&td��|j}|�|�|�|�||jkrh|j	d|�|_	||_g|_
n|j
d||j�|_
dSr�)r�r�r�r�r�r�r�r�r�r�r�r�r-r-r.r�s


zInlinedIndexObject.__delitem__cCs
|j|SrY)r�r�r-r-r.r�sz#InlinedIndexObject._calculate_indexN)r)rrrsrtr/r�r�r�r-r-r-r.r��s

r�cCsL|tjkrt|�S|s6|tjkr&t}nt}||�dfSt}|||�d|ffSr�)r�ZCHANGELOGV2�parse_index_cl_v2ZREVLOGV2�IndexObject2r�r�)r�r��formatrAr-r-r.�parse_index2"s

r�cCst|�dfSrY)�IndexChangelogV2)r�r-r-r.r�/sr�c@s:eZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dS)r�c	Cs�|dkrt�|�|�||jkr.d}t|��nPt||�}||d<||d<||d<||d<t|�}|�||�}||j||j<dS)z�
        Replace an existing index entry's sidedata offset and length with new
        ones.
        This cannot be used outside of the context of sidedata rewriting,
        inside the transaction that creates the revision `rev`.
        rs2cannot rewrite entries outside of this transactionr�	�N)�KeyErrorr�r��list�tupler�r�)	r$r�Zsidedata_offsetZsidedata_lengthZoffset_flagsZcompression_mode�msgr��newr-r-r.�replace_sidedata_info6s


z"IndexObject2.replace_sidedata_infocCsD|j�|�}|dd�}|dd@}|dd@d?}|||tjfS)N�
��r)r~r�r�r�)r$r�r�r��	data_comp�
sidedata_compr-r-r.r�Ts
zIndexObject2._unpack_entrycCsB|dd�}|dd@}|dd@d>}|||Bf7}|jj|�S)Nr�r�r�rr�)r$r�r�r�r�r�r-r-r.r�[s
zIndexObject2._pack_entrycCs||}|�||�S)r�)r�r�r-r-r.r�cszIndexObject2.entry_binarycCsd}||;}t�|��dS)r�z9version header should go in the docket, not the index: %dN)rZProgrammingError)r$r�r�r-r-r.r�hszIndexObject2.pack_headerN)rrrsrtr�ZINDEX_ENTRY_V2r~r�r�r�r�r�r-r-r-r.r�3sr�c@sHeZdZejZejdej�dejejd�Zddd�Z	dd�Z
dS)	r�N)rTcCsx|j�|�}|tj|tj|tj|||tj|tj|tj|tj	|tj
|tjd@|tjd?d@|tjf
S�Nr�r)
r~r�r�ZINDEX_ENTRY_V2_IDX_OFFSETZ$INDEX_ENTRY_V2_IDX_COMPRESSED_LENGTHZ&INDEX_ENTRY_V2_IDX_UNCOMPRESSED_LENGTHZINDEX_ENTRY_V2_IDX_PARENT_1ZINDEX_ENTRY_V2_IDX_PARENT_2ZINDEX_ENTRY_V2_IDX_NODEIDZ"INDEX_ENTRY_V2_IDX_SIDEDATA_OFFSETZ-INDEX_ENTRY_V2_IDX_SIDEDATA_COMPRESSED_LENGTHZ#INDEX_ENTRY_V2_IDX_COMPRESSION_MODEZINDEX_ENTRY_V2_IDX_RANK)r$r�r�r��itemsr-r-r.r�xs&���zIndexChangelogV2._unpack_entrycCs�|tj}|tj}|tj|tj|tj|tj|tj|tj|tj	|tj
|tjd@|tjd@d>B|tj
f
}|jj|�Sr�)r�ZENTRY_DELTA_BASEZENTRY_LINK_REVZENTRY_DATA_OFFSETZENTRY_DATA_COMPRESSED_LENGTHZENTRY_DATA_UNCOMPRESSED_LENGTHZENTRY_PARENT_1ZENTRY_PARENT_2Z
ENTRY_NODE_IDZENTRY_SIDEDATA_OFFSETZ ENTRY_SIDEDATA_COMPRESSED_LENGTHZENTRY_DATA_COMPRESSION_MODEZENTRY_SIDEDATA_COMPRESSION_MODE�
ENTRY_RANKr~r�)r$r�r��baseZlink_revr�r-r-r.r��s$

���zIndexChangelogV2._pack_entry)T)rrrsrtr�ZINDEX_ENTRY_CL_V2r~r�r�r�r�r�r-r-r-r.r�os���
r�cCst|�dfS)zBlike parse_index2, but alway return a PersistentNodeMapIndexObjectN)r�)r�r�r-r-r.�parse_index_devel_nodemap�sr�cCs�|dd�|dd�g}d}t�|�}d}t|�}||kr�||}td|||��}	||	d}|||�}
d|
vr�|
�d�\}
}|||
<tj|	dd��||
<q2|S)N��(�>cllllr�)r�r�r��_unpack�splitrrR)�dmap�copymap�st�parentsr�Ze_sizeZpos1�lZpos2�e�f�cr-r-r.�parse_dirstate�s
r�c	Cs�t�}|j}|d�|��t�|�D]V\}}||vrDd|||f}td|��|��|��|�	�t
|��}||�||�q$|��S)N�s%s%sr�)�stringio�write�joinrZ	iteritems�_packr`rZr[r\r��getvalue)r�r��pl�csr�r�r�r-r-r.�
pack_dirstate�s"�
r)@Z
__future__rr:r��zlibr�rrZ
thirdpartyr�rrr	r
rr�rr�Zbytesior�r�r�r�r��compressZ	_compress�
decompressZ_decompressrMrLrNr>r?r@r8r9r4r5r6r7r3r1r2r=ZDIRSTATE_V2_DIRECTORYZ DIRSTATE_V2_ALL_UNKNOWN_RECORDEDZ DIRSTATE_V2_ALL_IGNORED_RECORDEDr��objectrr{r|r�r�r�ZREVLOGV1r�r�r�r�r�r�rr-r-r-r.�<module>sbp{,+
<5

Youez - 2016 - github.com/yon3zu
LinuXploit