ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     
;;Wgc           @   s  d  d d d d d g Z  d d l Z d d l Z d d l Z d d l m Z m Z d d l Z d d	 l	 m
 Z
 d d
 l m Z m Z m Z d d l m Z m Z y d d l m Z Wn) e k
 r e d d d d   n Xe d  \ Z Z e j j Z d e f d     YZ d e f d     YZ d e f d     YZ d  e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d S(   t   Lockt   RLockt	   Semaphoret   BoundedSemaphoret	   Conditiont   EventiN(   t   timet   sleep(   t   current_process(   t   Finalizet   register_after_forkt   debug(   t   assert_spawningt   Popen(   t   SemLocks*   This platform lacks a functioning sem_opens(    implementation, therefore, the requireds+    synchronization primitives needed will nots    function, see issue 3770.i   R   c           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   sc   t  j | | |  } |  _ t d | j  |  j   t j d k r_ d   } t |  |  n  d  S(   Ns   created semlock with handle %st   win32c         S   s   |  j  j   d  S(   N(   t   _semlockt   _after_fork(   t   obj(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   P   s    (	   t   _multiprocessingR   R   R   t   handlet   _make_methodst   syst   platformR
   (   t   selft   kindt   valuet   maxvaluet   slR   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   __init__J   s    
	c         C   s"   |  j  j |  _ |  j  j |  _ d  S(   N(   R   t   acquiret   release(   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   T   s    c         C   s   |  j  j   S(   N(   R   t	   __enter__(   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR    X   s    c         G   s   |  j  j |   S(   N(   R   t   __exit__(   R   t   args(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR!   [   s    c         C   s2   t  |   |  j } t j | j  | j | j f S(   N(   R   R   R   t   duplicate_for_childR   R   R   (   R   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   __getstate__^   s    
	c         C   s5   t  j j |   |  _ t d | d  |  j   d  S(   Ns    recreated blocker with handle %ri    (   R   R   t   _rebuildR   R   R   (   R   t   state(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   __setstate__c   s    (   t   __name__t
   __module__R   R   R    R!   R$   R'   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   H   s   	
				c           B   s&   e  Z d  d  Z d   Z d   Z RS(   i   c         C   s   t  j |  t | t  d  S(   N(   R   R   t	   SEMAPHOREt   SEM_VALUE_MAX(   R   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   n   s    c         C   s   |  j  j   S(   N(   R   t
   _get_value(   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt	   get_valueq   s    c         C   s5   y |  j  j   } Wn t k
 r, d } n Xd | S(   Nt   unknowns   <Semaphore(value=%s)>(   R   R,   t	   Exception(   R   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   __repr__t   s
    
(   R(   R)   R   R-   R0   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   l   s   	c           B   s   e  Z d  d  Z d   Z RS(   i   c         C   s   t  j |  t | |  d  S(   N(   R   R   R*   (   R   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s    c         C   sA   y |  j  j   } Wn t k
 r, d } n Xd | |  j  j f S(   NR.   s)   <BoundedSemaphore(value=%s, maxvalue=%s)>(   R   R,   R/   R   (   R   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR0      s    
(   R(   R)   R   R0   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s   c           B   s   e  Z d    Z d   Z RS(   c         C   s   t  j |  t d d  d  S(   Ni   (   R   R   R*   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s    c         C   s   y |  j  j   rP t   j } t j   j d k r | d t j   j 7} q nB |  j  j   d k rn d } n$ |  j  j   d k r d } n d } Wn t k
 r d } n Xd	 | S(
   Nt
   MainThreadt   |i   t   Nonei    t   SomeOtherThreadt   SomeOtherProcessR.   s   <Lock(owner=%s)>(	   R   t   _is_mineR   t   namet	   threadingt   current_threadR,   t   _countR/   (   R   R7   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR0      s    		

(   R(   R)   R   R0   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR       s   	c           B   s   e  Z d    Z d   Z RS(   c         C   s   t  j |  t d d  d  S(   Ni   (   R   R   t   RECURSIVE_MUTEX(   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s    c         C   s   y |  j  j   r_ t   j } t j   j d k rM | d t j   j 7} n  |  j  j   } nT |  j  j   d k r d \ } } n0 |  j  j   d k r d \ } } n d \ } } Wn t k
 r d \ } } n Xd
 | | f S(   NR1   R2   i   R3   i    R4   t   nonzeroR5   R.   s   <RLock(%s, %s)>(   R3   i    (   R4   R<   (   R5   R<   (   R.   R.   (	   R   R6   R   R7   R8   R9   R:   R,   R/   (   R   R7   t   count(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR0      s    (   R(   R)   R   R0   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s   	c           B   sh   e  Z d
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d
 d  Z
 d   Z d	   Z RS(   c         C   sM   | p t    |  _ t d  |  _ t d  |  _ t d  |  _ |  j   d  S(   Ni    (   R   t   _lockR   t   _sleeping_countt   _woken_countt   _wait_semaphoreR   (   R   t   lock(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s
    c         C   s&   t  |   |  j |  j |  j |  j f S(   N(   R   R>   R?   R@   RA   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR$      s    
c         C   s,   | \ |  _  |  _ |  _ |  _ |  j   d  S(   N(   R>   R?   R@   RA   R   (   R   R&   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR'      s    c         C   s   |  j  j   S(   N(   R>   R    (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR       s    c         G   s   |  j  j |   S(   N(   R>   R!   (   R   R"   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR!      s    c         C   s"   |  j  j |  _ |  j  j |  _ d  S(   N(   R>   R   R   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s    c         C   sQ   y& |  j  j j   |  j j j   } Wn t k
 r? d } n Xd |  j | f S(   NR.   s   <Condition(%s, %s)>(   R?   R   R,   R@   R/   R>   (   R   t   num_waiters(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR0      s    
c         C   s   |  j  j j   s t d   |  j j   |  j  j j   } x! t |  D] } |  j  j   qJ Wz |  j j	 t
 |  Wd  |  j j   x! t |  D] } |  j  j	   q WXd  S(   Ns,   must acquire() condition before using wait()(   R>   R   R6   t   AssertionErrorR?   R   R:   t   xrangeRA   R   t   TrueR@   (   R   t   timeoutR=   t   i(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   wait   s    	c         C   s   |  j  j j   s t d   |  j j t  s7 t  x4 |  j j t  rm |  j j t  } | s: t  q: W|  j j t  r |  j j	   |  j j   |  j j t  n  d  S(   Ns   lock is not owned(
   R>   R   R6   RD   RA   R   t   FalseR@   R?   R   (   R   t   res(    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   notify   s    c         C   s   |  j  j j   s t d   |  j j t  s7 t  x4 |  j j t  rm |  j j t  } | s: t  q: Wd } x- |  j j t  r |  j j	   | d 7} qw W| r x! t
 |  D] } |  j j   q Wx |  j j t  r q Wn  d  S(   Ns   lock is not ownedi    i   (   R>   R   R6   RD   RA   R   RJ   R@   R?   R   RE   (   R   RK   t   sleepersRH   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt
   notify_all  s    N(   R(   R)   R3   R   R$   R'   R    R!   R   R0   RI   RL   RN   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR      s   							c           B   s8   e  Z d    Z d   Z d   Z d   Z d d  Z RS(   c         C   s%   t  t    |  _ t d  |  _ d  S(   Ni    (   R   R    t   _condR   t   _flag(   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   -  s    c         C   sM   |  j  j   z+ |  j j t  r3 |  j j   t St SWd  |  j  j   Xd  S(   N(   RO   R   RP   RJ   R   RF   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   is_set1  s    c         C   sP   |  j  j   z. |  j j t  |  j j   |  j  j   Wd  |  j  j   Xd  S(   N(   RO   R   RP   RJ   R   RN   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   set;  s    c         C   s6   |  j  j   z |  j j t  Wd  |  j  j   Xd  S(   N(   RO   R   RP   RJ   R   (   R   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   clearD  s    c         C   s   |  j  j   z] |  j j t  r2 |  j j   n |  j  j |  |  j j t  re |  j j   t St SWd  |  j  j   Xd  S(   N(   RO   R   RP   RJ   R   RI   RF   (   R   RG   (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyRI   K  s    N(   R(   R)   R   RQ   RR   RS   R3   RI   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyR   +  s
   		
			(   t   __all__R8   t   osR   R   t   _timeR   t   _sleepR   t   multiprocessing.processR   t   multiprocessing.utilR	   R
   R   t   multiprocessing.forkingR   R   R   t   ImportErrort   rangeR;   R*   R+   t   objectR   R   R    R   R   R   (    (    (    s1   /usr/lib/python2.7/multiprocessing/synchronize.pyt   <module>$   s.   $h