???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
Yf	Y              '   @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Td d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* g' Z d+ Z d, Z d+ Z d- Z	 d. Z
 d/ Z d0 Z d1 e j k r d2 Z d3 Z d4 d5   Z d6 d   Z d7 d   Z d8 d   Z d9 d   Z d: d   Z d; d   Z d< d	   Z e j j  e _  d= d
   Z d> d   Z d? d   Z d@ d   Z y d dA l m Z Wn e k
 rd Z Yn XdB d   Z dC d   Z  dD d   Z! dE d   Z" y d dF l m# Z# Wn e k
 r2dG d   Z$ Yn XdH d   Z$ e$ Z% e& e dI  oge j'   dJ dK k Z( d dL d&  Z) dM d*   Z* y9 e j'   d dK  dS k rd dO l m+ Z+ n e  Wn$ e, e f k
 rdP dQ   Z+ Yn Xy d dR l m- Z. Wn e k
 rYn Xd S)TzCommon pathname manipulations, WindowsNT/95 version.

Instead of importing this module directly, import os and refer to this
module as os.path.
    N)*normcaseisabsjoin
splitdrivesplitsplitextbasenamedirnamecommonprefixgetsizegetmtimegetatimegetctimeislinkexistslexistsisdirisfileismount
expanduser
expandvarsnormpathabspathsplitunccurdirpardirseppathsepdefpathaltsepextsepdevnullrealpathsupports_unicode_filenamesrelpathsamefilesameopenfilesamestat
commonpath.z..\;/z.;C:\binZcez\WindowsZnulc             C   s   t  |  t  r d Sd Sd  S)Ns   \/z\/)
isinstancebytes)path r1   +/opt/alt/python35/lib64/python3.5/ntpath.py_get_bothseps#   s    r3   c             C   s   y? t  |  t  r( |  j d d  j   S|  j d d  j   SWnI t t f k
 r t  |  t t f  s t d |  j j  d    Yn Xd S)zaNormalize case of pathname.

    Makes all characters lowercase and all slashes into backslashes.   /s   \r-   r+   z0normcase() argument must be str or bytes, not %rN)	r.   r/   replacelower	TypeErrorAttributeErrorstr	__class____name__)sr1   r1   r2   r   -   s    c             C   s6   t  |   d }  t |   d k o5 |  d t |   k S)zTest whether a path is absolute   r   )r   lenr3   )r<   r1   r1   r2   r   C   s    c       
      G   s  t  |  t  r$ d } d } d } n d } d } d } y5| sQ |  d  d  | t |   \ } } x | D] } t |  \ } }	 |	 r |	 d | k r | s | r | } |	 } qj n? | r | | k r | j   | j   k r | } |	 } qj | } | r| d
 | k r| | } | |	 } qj W| rb| d | k rb| rb| d d   | k rb| | | S| | SWn1 t t t f k
 rt j d	 |  |    Yn Xd  S)Ns   \s   \/   :r+   z\/:r   r=   r   rA   )	r.   r/   r   r6   r7   r8   BytesWarninggenericpath_check_arg_types)
r0   pathsr   sepscolonZresult_driveZresult_pathpZp_driveZp_pathr1   r1   r2   r   J   sD    	
c             C   st  t  |   d k r`t |  t  r6 d } d } d } n d } d } d } |  j | |  } | d d  | d k r,| d d	  | k r,| j | d  } | d k r |  d d  |  f S| j | | d
  } | | d
 k r |  d d  |  f S| d k rt  |   } |  d |  |  | d  f S| d
 d  | k r`|  d d  |  d d  f S|  d d  |  f S)a  Split a pathname into drive/UNC sharepoint and relative path specifiers.
    Returns a 2-tuple (drive_or_unc, path); either part may be empty.

    If you assign
        result = splitdrive(p)
    It is always true that:
        result[0] + result[1] == p

    If the path contained a drive letter, drive_or_unc will contain everything
    up to and including the colon.  e.g. splitdrive("c:/dir") returns ("c:", "/dir")

    If the path contained a UNC path, the drive_or_unc will contain the host name
    and share up to but not including the fourth directory separator character.
    e.g. splitdrive("//host/computer/dir") returns ("//host/computer", "/dir")

    Paths cannot contain both a drive letter and a UNC path.

       s   \r4   r?   r+   r-   r@   r      r=   NrA   rA   )r>   r.   r/   r5   find)rH   r   r    rG   ZnormpindexZindex2r1   r1   r2   r   x   s,    	0c             C   sa   d d l  } | j d t d  t |   \ } } t |  d k rW |  d d  |  f S| | f S)a  Deprecated since Python 3.1.  Please use splitdrive() instead;
    it now handles UNC paths.

    Split a pathname into UNC mount point and relative path specifiers.

    Return a 2-tuple (unc, rest); either part may be empty.
    If unc is not empty, it has the form '//host/mount' (or similar
    using backslashes).  unc+rest is always the input path.
    Paths containing drive letters never have a UNC part.
    r   Nz<ntpath.splitunc is deprecated, use ntpath.splitdrive insteadrI   )warningswarnDeprecationWarningr   r>   )rH   rM   driver0   r1   r1   r2   r      s    	
c             C   s   t  |   } t |   \ } }  t |   } x( | rT |  | d | k rT | d 8} q- W|  d |  |  | d  } } | j |  p | } | | | f S)z~Split a pathname.

    Return tuple (head, tail) where tail is everything after the final slash.
    Either part may be empty.r=   N)r3   r   r>   rstrip)rH   rF   diheadtailr1   r1   r2   r      s    !c             C   s?   t  |  t  r% t j |  d d d  St j |  d d d  Sd  S)Ns   \r4      .r+   r-   r*   )r.   r/   rC   	_splitext)rH   r1   r1   r2   r      s    c             C   s   t  |   d S)z)Returns the final component of a pathnamer=   )r   )rH   r1   r1   r2   r	      s    c             C   s   t  |   d S)z-Returns the directory component of a pathnamer   )r   )rH   r1   r1   r2   r
      s    c             C   sB   y t  j |   } Wn t t f k
 r1 d SYn Xt j | j  S)zhTest whether a path is a symbolic link.
    This will always return false for Windows prior to 6.0.
    F)oslstatOSErrorr8   statS_ISLNKst_mode)r0   str1   r1   r2   r      s
    	c             C   s0   y t  j |   } Wn t k
 r+ d SYn Xd S)zCTest whether a path exists.  Returns True for broken symbolic linksFT)rX   rY   rZ   )r0   r^   r1   r1   r2   r      s
    	)_getvolumepathnamec             C   s   t  |   } t |   }  t |   \ } } | rQ | d | k rQ | pP | | k S| | k ra d St r |  j |  t |   j |  k Sd Sd S)zaTest whether a path is a mount point (a drive root, the root of a
    share, or a mounted volume)r   TFN)r3   r   r   r_   rQ   )r0   rF   rootrestr1   r1   r2   r     s    "c             C   se  t  |  t  r d } n d } |  j |  s1 |  Sd t |   } } x0 | | k  rv |  | t |   k rv | d 7} qG Wd t j k r t j d } nt d t j k r t j d } nU d t j k r |  Sy t j d } Wn t k
 r d } Yn Xt | t j d  } t  |  t  r(t j	 |  } | d k rSt t
 |  |  d |   } | |  | d	  S)
zLExpand ~ and ~user constructs.

    If user or $HOME is unknown, do nothing.   ~~r=   HOMEZUSERPROFILEZHOMEPATHZ	HOMEDRIVE N)r.   r/   
startswithr>   r3   rX   environKeyErrorr   fsencoder
   )r0   tilderS   nuserhomerP   r1   r1   r2   r   0  s0    	%c             C   s  t  |  t  r d |  k r+ d |  k r+ |  Sd d l } t | j | j d d  } d } d } d } d	 } d } t t d
 d  } nc d |  k r d |  k r |  Sd d l } | j | j d } d } d } d } d } d } t j } |  d d  }	 d }
 t |   } x
|
 | k  r|  |
 |
 d  } | | k r|  |
 d d  }  t |   } y/ |  j	 |  }
 |	 | |  d |
 d  7}	 Wqt
 k
 r|	 | |  7}	 | d }
 YqXnQ| | k r|  |
 d |
 d  | k r|	 | 7}	 |
 d 7}
 q|  |
 d d  }  t |   } y |  j	 |  }
 Wn* t
 k
 rZ|	 | |  7}	 | d }
 YqX|  d |
  } y< | d k rt j t j t j |   } n
 | | } Wn  t k
 r| | | } Yn X|	 | 7}	 n4| | k r|  |
 d |
 d  | k r|	 | 7}	 |
 d 7}
 q|  |
 d |
 d  | k r|  |
 d d  }  t |   } y |  j	 |  }
 Wn. t
 k
 r|	 | | |  7}	 | d }
 YqX|  d |
  } y< | d k rt j t j t j |   } n
 | | } Wn$ t k
 r| | | | } Yn X|	 | 7}	 q|  d d  } |
 d 7}
 |  |
 |
 d  } x> | r| | k r| | 7} |
 d 7}
 |  |
 |
 d  } qKWy< | d k rt j t j t j |   } n
 | | } Wn t k
 r| | } Yn X|	 | 7}	 | r|
 d 8}
 n
 |	 | 7}	 |
 d 7}
 qW|	 S)zfExpand shell variables of the forms $var, ${var} and %var%.

    Unknown variables are left unchanged.   $   %r   Nz_-asciis   '   {   }environb$%'{}r=   rI   )r.   r/   stringZascii_lettersZdigitsgetattrrX   rg   r>   rL   
ValueErrorri   fsdecoderh   )r0   rx   ZvarcharsZquoteZpercentZbraceZrbraceZdollarrg   resrL   Zpathlencvarvaluer1   r1   r2   r   a  s    	 
"
"


"

c       	      C   s  t  |  t  r0 d } d } d } d } d } n d } d } d	 } d
 } d } |  j |  ra |  S|  j | |  }  t |   \ } }  |  j |  r | | 7} |  j |  }  |  j |  } d } x | t |  k  r| | s | | | k r | | =q | | | k r| d k rN| | d | k rN| | d | d  =| d 8} q| d k rs| j |  rs| | =q| d 7} q | d 7} q W| r| r| j	 |  | | j
 |  S)z0Normalize path, eliminating double slashes, etc.s   \r4   rV   s   ..   \\.\   \\?\r+   r-   r*   z..\\.\\\?\r   r=   )r   r   )r   r   )r.   r/   rf   r5   r   lstripr   r>   endswithappendr   )	r0   r   r    r   r   Zspecial_prefixesprefixcompsrS   r1   r1   r2   r     sD    	

 
)_getfullpathnamec             C   sO   t  |   sE t |  t  r* t j   } n t j   } t | |   }  t |   S)z&Return the absolute version of a path.)r   r.   r/   rX   getcwdbgetcwdr   r   )r0   cwdr1   r1   r2   r     s    c             C   sb   |  r. y t  |   }  WqX t k
 r* YqX Xn* t |  t  rL t j   }  n t j   }  t |   S)z&Return the absolute version of a path.)r   rZ   r.   r/   rX   r   r   r   )r0   r1   r1   r2   r     s    getwindowsversionrJ   rI   c             C   s  t  |  t  r$ d } d } d } n d } d } d } | d k rH | } |  sZ t d   y4t t |   } t t |    } t |  \ } } t |  \ }	 }
 t |  t |	  k r t d	 |	 | f   d
 d   | j |  D } d d   |
 j |  D } d } x@ t | |  D]/ \ } } t |  t |  k rFP| d 7} q!W| g t	 |  | | | d  } | s| St
 |   SWn7 t t t t t f k
 rt j d |  |    Yn Xd S)z#Return a relative version of a paths   \rV   s   ..r+   r*   z..Nzno path specifiedz&path is on mount %r, start on mount %rc             S   s   g  |  ] } | r |  q Sr1   r1   ).0xr1   r1   r2   
<listcomp>@  s   	 zrelpath.<locals>.<listcomp>c             S   s   g  |  ] } | r |  q Sr1   r1   )r   r   r1   r1   r2   r   A  s   	 r   r=   r%   )r.   r/   rz   r   r   r   r   r   zipr>   r   r7   r8   rB   rO   rC   rD   )r0   startr   r   r   Z	start_absZpath_absZstart_driveZ
start_restZ
path_driveZ	path_rest
start_list	path_listrS   Ze1Ze2rel_listr1   r1   r2   r%   &  sB    	%c                s(  |  s t  d   t |  d t  r: d  d   d  n d  d   d  y   f d	 d
   |  D }  f d d
   | D } y& t  f d d   | D  \ } Wn! t  k
 r t  d  d  Yn Xt t d d   | D   d k r t  d   t |  d j      \ } } | j   }  f d d
   | D }  f d d
   | D } t |  } t	 |  } xQ t
 |  D]- \ }	 }
 |
 | |	 k r| d |	  } PqW| d t |   } | r|  n | } |  j |  SWn+ t t f k
 r#t j d |     Yn Xd S)zDGiven a sequence of path names, returns the longest common sub-path.z%commonpath() arg is an empty sequencer   s   \r4   rV   r+   r-   r*   c                s.   g  |  ]$ } t  | j     j     q Sr1   )r   r5   r6   )r   rH   )r    r   r1   r2   r   l  s   	 zcommonpath.<locals>.<listcomp>c                s%   g  |  ] \ } } | j      q Sr1   )r   )r   rR   rH   )r   r1   r2   r   m  s   	 c             3   s+   |  ]! \ } } | d  d    k Vq d  S)Nr=   r1   )r   rR   rH   )r   r1   r2   	<genexpr>p  s    zcommonpath.<locals>.<genexpr>z%Can't mix absolute and relative pathsNc             s   s   |  ] \ } } | Vq d  S)Nr1   )r   rR   rH   r1   r1   r2   r   w  s    r=   zPaths don't have the same drivec                s(   g  |  ] } | r |   k r |  q Sr1   r1   )r   r}   )r   r1   r2   r   |  s   	 c                s)   g  |  ] }   f d  d   | D  q S)c                s(   g  |  ] } | r |   k r |  q Sr1   r1   )r   r}   )r   r1   r2   r   ~  s   	 z)commonpath.<locals>.<listcomp>.<listcomp>r1   )r   r<   )r   r1   r2   r   ~  s   	 r)   )rz   r.   r/   setr>   r   r5   r   minmax	enumerater   r7   r8   rC   rD   )rE   Zdrivesplitssplit_pathsr   rP   r0   commons1s2rS   r}   r   r1   )r    r   r   r2   r)   \  sD    	&%"   )_getfinalpathnamec             C   s   t  t |    S)N)r   r   )fr1   r1   r2   r     s    r   )_isdir)r   r   )/__doc__rX   sysr[   rC   __all__r   r   r!   r   r   r    r   builtin_module_namesr"   r3   r   r   r   r   r   r   r   rW   r	   r
   r   r   ntr_   ImportErrorr   r   r   r   r   r   r#   hasattrr   r$   r%   r)   r   r8   r   r   r1   r1   r1   r2   <module>   s~   

.31p264
