
    	^c+G                        d Z ddlZddlmZ ej        rddlmZmZmZm	Z	m
Z
mZmZ d Z G d d          Z G d	 d
ee          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d dee          Z G d de          Z G d de          Z G d de          Z G d de          Z G d d e          Z G d! d"e          Z G d# d$e          Z G d% d&e          Z  G d' d(e           Z! G d) d*e          Z" G d+ d,e          Z# G d- d.e          Z$ G d/ d0e          Z% G d1 d2e          Z& G d3 d4e          Z' G d5 d6e          Z( G d7 d8e          Z) G d9 d:e          Z* G d; d<e*          Z+ G d= d>e*          Z, G d? d@e          Z- G dA dBe          Z. G dC dDe.          Z/ G dE dFe          Z0 G dG dHe          Z1 G dI dJe1          Z2 G dK dLe1          Z3dM Z4dN Z5 G dO dPe0          Z6 G dQ dRee          Z7 G dS dTe7          Z8 G dU dVe8          Z9 G dW dXe7          Z: G dY dZe7          Z; G d[ d\e<          Z= G d] d^e          Z> G d_ d`e          Z? G da dbe<          Z@ G dc dde@          ZA G de dfe@          ZB G dg dheC          ZD G di dje          ZE G dk dleF          ZG G dm dne          ZH G do dpeC          ZI G dq dreeC          ZJ G ds dte          ZK G du dveL          ZM G dw dxeM          ZN G dy dzeC          ZO G d{ d|e          ZP G d} d~e          ZQ G d de          ZR G d de          ZS G d de          ZT G d de          ZU G d de          ZV G d de          ZW G d de          ZXdS )zdMercurial exceptions.

This allows us to catch exceptions at higher levels without forcing
imports.
    N   )pycompat)AnyAnyStrIterableListOptionalSequenceUnionc                     | j         sdS t          | j                   dk    rt          j        | j         d                   S dd                    d | j         D                       z  S )z?Byte-stringify exception in the same way as BaseException_str()    r   r   s   (%s)   , c              3   D   K   | ]}d t          j        |          z  V  dS )s   '%s'N)r   bytestr).0as     1/usr/lib/python3/dist-packages/mercurial/error.py	<genexpr>z_tobytes.<locals>.<genexpr>'   s2      PP!(*:1*=*= =PPPPPPr   )argslenr   r   join)excs    r   _tobytesr       se     8 s
38}},,,UZZPPsxPPPPPPPr   c                   "     e Zd ZdZ fdZ xZS )HintzMix-in to provide a hint of an error

    This should come first in the inheritance list to consume a hint and
    pass remaining arguments to the exception class.
    c                 ~    |                     dd           | _         t          t          |           j        |i | d S )Nhint)popr   superr   __init__)selfr   kw	__class__s      r   r    zHint.__init__1   s@    FF64((	"dD"D/B/////r   __name__
__module____qualname____doc__r    __classcell__r#   s   @r   r   r   *   sB         0 0 0 0 0 0 0 0 0r   r   c                   4    e Zd ZdZdZdZddZd Zd Zd Z	dS )Errorz Base class for Mercurial errors.Nc                 X    || _         || _        t                              | |           d S N)messager   	Exceptionr    )r!   r/   r   s      r   r    zError.__init__<   s.    	 	4)))))r   c                     | j         S r.   )r/   r!   s    r   	__bytes__zError.__bytes__D   s
    |r   c                 N    t          j        |                                           S r.   )r   sysstrr3   r2   s    r   __str__zError.__str__G   s    
 t~~//000r   c                 r    ddl m}  |d          | j        z  }| j        r| |d          | j        z  z  }|S )Nr   _s
   abort: %s
   (%s)
i18nr9   r/   r   r!   r9   r/   s      r   formatzError.formatN   sR    !N##dl29 	0qq||di//Gr   r.   )
r%   r&   r'   r(   coarse_exit_codedetailed_exit_coder    r3   r6   r>    r   r   r,   r,   6   sg        *** * * *  1 1 1    r   r,   c                       e Zd ZdZdS )Abortz5Raised if a command needs to print an error and exit.Nr%   r&   r'   r(   rA   r   r   rC   rC   X   s        ????r   rC   c                       e Zd ZdZdZdS )StorageErrorzmRaised when an error occurs in a storage layer.

    Usually subclassed by a storage-specific exception.
    2   Nr%   r&   r'   r(   r@   rA   r   r   rF   rF   \   "         
 r   rF   c                       e Zd ZdS )RevlogErrorNr%   r&   r'   rA   r   r   rK   rK   e           Dr   rK   c                       e Zd Zd ZdS )SidedataHashErrorc                 >    d | _         || _        || _        || _        d S r.   )r   sidedatakeyexpecteddigestactualdigest)r!   keyexpectedgots       r   r    zSidedataHashError.__init__j   s'    	&r   Nr%   r&   r'   r    rA   r   r   rO   rO   i   s#                 r   rO   c                       e Zd ZeZdS )FilteredIndexErrorNr%   r&   r'   r   r3   rA   r   r   rY   rY   r           IIIr   rY   c                        e Zd Zd Zd Zd ZdS )LookupErrorc                    || _         || _        || _        t          |t                    r$t          |          dk    rddlm}  ||          }t          	                    | d|t          j        |          |fz             d S )N   r   )hexs	   %s@%s: %s)nameindexlookupmessage
isinstancebytesr   noder`   rK   r    r   r   )r!   ra   rb   r/   r`   s        r   r    zLookupError.__init__w   s    	
 %dE"" 	s4yyB!!!!!!3t99D,%)9$)?)?!II	
 	
 	
 	
 	
r   c                 6    t                               |           S r.   )rK   r3   r2   s    r   r3   zLookupError.__bytes__   s    $$T***r   c                 6    t                               |           S r.   )rK   r6   r2   s    r   r6   zLookupError.__str__   s    ""4(((r   N)r%   r&   r'   r    r3   r6   rA   r   r   r]   r]   v   sA        
 
 
 + + +) ) ) ) )r   r]   c                       e Zd ZdS )AmbiguousPrefixLookupErrorNrL   rA   r   r   rj   rj      rM   r   rj   c                       e Zd ZdS )FilteredLookupErrorNrL   rA   r   r   rl   rl      rM   r   rl   c                       e Zd ZdS )ManifestLookupErrorNrL   rA   r   r   rn   rn      rM   r   rn   c                   &     e Zd ZdZ fdZeZ xZS )CommandErrorz7Exception raised on errors in parsing the command line.c                 r    || _         || _        t          t          |                                            d S r.   )commandr/   r   rp   r    )r!   rr   r/   r#   s      r   r    zCommandError.__init__   s3    lD!!**,,,,,r   r%   r&   r'   r(   r    r   r3   r)   r*   s   @r   rp   rp      s9        AA- - - - - IIIIIr   rp   c                   (     e Zd ZdZd fd	ZeZ xZS )UnknownCommandz8Exception raised if command is not in the command table.Nc                 r    || _         || _        t          t          |                                            d S r.   )rr   all_commandsr   ru   r    )r!   rr   rw   r#   s      r   r    zUnknownCommand.__init__   s4    (nd##,,.....r   r.   rs   r*   s   @r   ru   ru      s>        BB/ / / / / / IIIIIr   ru   c                   &     e Zd ZdZ fdZeZ xZS )AmbiguousCommandzCException raised if command shortcut matches more than one command.c                 r    || _         || _        t          t          |                                            d S r.   )prefixmatchesr   ry   r    )r!   r{   r|   r#   s      r   r    zAmbiguousCommand.__init__   s4    %%..00000r   rs   r*   s   @r   ry   ry      s9        MM1 1 1 1 1 IIIIIr   ry   c                   &     e Zd ZdZ fdZeZ xZS )WorkerErrorz,Exception raised when a worker process dies.c                 f    || _         t          t          |                               |           d S r.   )status_coder   r~   r    )r!   r   r#   s     r   r    zWorkerError.__init__   s/    &k4  ))+66666r   rs   r*   s   @r   r~   r~      s9        667 7 7 7 7 IIIIIr   r~   c                        e Zd ZdZdZdZd ZdS )InterventionRequiredz<Exception raised when a command requires human intervention.r      c                 r    ddl m}  |d          | j        z  }| j        r| |d          | j        z  z  }|S )Nr   r8   s   %s
r:   r;   r=   s      r   r>   zInterventionRequired.format   sP    !G**t|+9 	0qq||di//Gr   N)r%   r&   r'   r(   r?   r@   r>   rA   r   r   r   r      s5        FF    r   r   c                       e Zd ZdZd ZdS )ConflictResolutionRequiredzOException raised when a continuable command required merge conflict resolution.c                 n    ddl m} || _        t                              |  |d          |z             d S )Nr   r8   s@   unresolved conflicts (see 'hg resolve', then 'hg %s --continue'))r<   r9   opnamer   r    )r!   r   r9   s      r   r    z#ConflictResolutionRequired.__init__   s\    %%AS  	
 	
 	
 	
 	
r   Nr%   r&   r'   r(   r    rA   r   r   r   r      s)        YY
 
 
 
 
r   r   c                       e Zd ZdZdZdS )
InputErrorz{Indicates that the user made an error in their input.

    Examples: Invalid command, invalid flags, invalid revision.
    
   NrH   rA   r   r   r   r      rI   r   r   c                       e Zd ZdZdZdS )
StateErrorzIndicates that the operation might work if retried in a different state.

    Examples: Unresolved merge conflicts, unfinished operations.
    r_   NrH   rA   r   r   r   r      rI   r   r   c                       e Zd ZdZdZdS )CanceledErrorzzIndicates that the user canceled the operation.

    Examples: Close commit editor with error status, quit chistedit.
       NrH   rA   r   r   r   r      s"         
 r   r   c                       e Zd ZdZdZdS )SecurityErrorzIndicates that some aspect of security failed.

    Examples: Bad server credentials, expired local credentials for network
    filesystem, mismatched GPG signature, DoS protection.
       NrH   rA   r   r   r   r     s"          r   r   c                       e Zd ZdZdS )HookLoadErrorzgraised when loading a hook fails, aborting an operation

    Exists to allow more specialized catching.NrD   rA   r   r   r   r     s        2 2 2 2r   r   c                       e Zd ZdZdZdS )	HookAbortzjraised when a validation hook fails, aborting an operation

    Exists to allow more specialized catching.(   NrH   rA   r   r   r   r     s"        2 2 r   r   c                   .     e Zd ZdZdZd fd	Zd Z xZS )ConfigErrorz*Exception raised when parsing config files   Nc                 j    t          t          |                               ||           || _        d S Nr   )r   r   r    locationr!   r/   r   r   r#   s       r   r    zConfigError.__init__#  s1    k4  ))')=== r   c                     ddl m} | j        - |d          t          j        | j                  | j        fz  }n |d          | j        z  }| j        r| |d          | j        z  z  }|S )Nr   r8   s   config error at %s: %s
s   config error: %s
r:   r<   r9   r   r   r   r/   r   r=   s      r   r>   zConfigError.format(  s    =$a344 //8 GG
 a-..=G9 	0qq||di//Gr   NNr%   r&   r'   r(   r@   r    r>   r)   r*   s   @r   r   r     sX        44! ! ! ! ! !
      r   r   c                       e Zd ZdZdS )UpdateAbortz6Raised when an update is aborted for destination issueNrD   rA   r   r   r   r   8          @@@@r   r   c                       e Zd ZdZdS )MergeDestAbortz7Raised when an update is aborted for destination issuesNrD   rA   r   r   r   r   <  s        AAAAr   r   c                       e Zd ZdZdS )NoMergeDestAbortzBRaised when an update is aborted because there is nothing to mergeNrD   rA   r   r   r   r   @  s        LLLLr   r   c                       e Zd ZdZdS )ManyMergeDestAbortzARaised when an update is aborted because destination is ambiguousNrD   rA   r   r   r   r   D  s        KKKKr   r   c                       e Zd ZdZd ZdS )ResponseExpectedz+Raised when an EOF is received for a promptc                 Z    ddl m} t                              |  |d                     d S )Nr   r8   s   response expected)r<   r9   rC   r    )r!   r9   s     r   r    zResponseExpected.__init__K  s9    tQQ34455555r   Nr   rA   r   r   r   r   H  s)        556 6 6 6 6r   r   c                       e Zd ZdZdZdS )RemoteErrorz:Exception raised when interacting with a remote repo failsd   NrH   rA   r   r   r   r   Q  s        DDr   r   c                   $     e Zd ZdZd fd	Z xZS )OutOfBandErrorz3Exception raised when a remote repo reports failureNc                     ddl m} |r" |d          |                    d          z  }n |d          }t          t          |                               ||           d S )Nr   r8   s   remote error:
%s   
s   remote errorr   )r<   r9   rstripr   r   r    )r!   r/   r   r9   r#   s       r   r    zOutOfBandError.__init__Z  sx     	)a,--u0E0EEGGa((Gnd##,,W4,@@@@@r   r   r$   r*   s   @r   r   r   W  sM        ==	A 	A 	A 	A 	A 	A 	A 	A 	A 	Ar   r   c                   .     e Zd ZdZdZd fd	Zd Z xZS )
ParseErrorz@Raised when parsing config files and {rev,file}sets (msg[, pos])r   Nc                 j    t          t          |                               ||           || _        d S r   )r   r   r    r   r   s       r   r    zParseError.__init__k  s1    j$((t(<<< r   c                     ddl m} | j        - |d          t          j        | j                  | j        fz  }n |d          | j        z  }| j        r| |d          | j        z  z  }|S )Nr   r8   s   hg: parse error at %s: %s
s   hg: parse error: %s
r:   r   r=   s      r   r>   zParseError.formatp  s    =$a677 //; GG
 a011DL@G9 	0qq||di//Gr   r   r   r*   s   @r   r   r   f  sX        JJ! ! ! ! ! !
      r   r   c                       e Zd ZeZdS )
PatchErrorNrZ   rA   r   r   r   r     r[   r   r   c                       e Zd ZeZdS )PatchParseErrorNrZ   rA   r   r   r   r     r[   r   r   c                       e Zd ZeZdS )PatchApplicationErrorNrZ   rA   r   r   r   r     r[   r   r   c                 ,    fdfd| D             S )Nc                 T    t          j        d |                                           S r.   )difflibSequenceMatcherratio)xvalues    r   <lambda>zgetsimilar.<locals>.<lambda>  s"    G+D%;;AACC r   c                 2    g | ]} |          d k    |S )g333333?rA   )r   ssims     r   
<listcomp>zgetsimilar.<locals>.<listcomp>  s&    ///!##a&&3,,A,,,r   rA   )symbolsr   r   s    `@r   
getsimilarr     s.    
C
C
C
CC 0///w////r   c                     ddl m} t          |           dk    r |d          | d         z  S | r0d                    t	          |                     } |d          |z  S d S )Nr   r8   s   did you mean %s?r   r   s   did you mean one of %s?)r<   r9   r   r   sorted)similarr9   sss      r   similarity_hintr     sy    
7||qq$%%
22	 ZZw((q+,,r11tr   c                       e Zd ZdZd ZdS )UnknownIdentifierzFException raised when a {rev,file}set references an unknown identifierc                     ddl m} t          ||          }t          |          }t                              |  |d          |z  |           d S )Nr   r8   s   unknown identifier: %sr   )r<   r9   r   r   r   r    )r!   functionr   r9   r   r   s         r   r    zUnknownIdentifier.__init__  sn    Wh//w''!!-..9 	 	
 	
 	
 	
 	
r   Nr   rA   r   r   r   r     s)        PP	
 	
 	
 	
 	
r   r   c                       e Zd ZeZdS )	RepoErrorNrZ   rA   r   r   r   r     r[   r   r   c                       e Zd ZdS )RepoLookupErrorNrL   rA   r   r   r   r     rM   r   r   c                       e Zd ZdS )FilteredRepoLookupErrorNrL   rA   r   r   r   r     rM   r   r   c                       e Zd ZdS )CapabilityErrorNrL   rA   r   r   r   r     rM   r   r   c                       e Zd ZdZdS )RequirementErrorz6Exception raised if .hg/requires has an unknown entry.NrD   rA   r   r   r   r     r   r   r   c                       e Zd ZdZd ZdS )
StdioErrorz'Raised if I/O to stdout or stderr failsc                 R    t                               | |j        |j                   d S r.   )IOErrorr    errnostrerror)r!   errs     r   r    zStdioError.__init__  s$    sy#,77777r   Nr   rA   r   r   r   r     s)        118 8 8 8 8r   r   c                       e Zd Zd ZdS )UnsupportedMergeRecordsc                     ddl m} t          |          | _        d                    | j                  }t
                              |  |d          |z   |d                     d S )Nr   r8       s#   unsupported merge state records: %ssI   see https://mercurial-scm.org/wiki/MergeStateRecords for more informationr   )r<   r9   r   recordtypesr   rC   r    )r!   r   r9   r   s       r   r    z UnsupportedMergeRecords.__init__  s    !+..IId&''A4559$  	 	
 	
 	
 	
 	
r   NrW   rA   r   r   r   r     s#        
 
 
 
 
r   r   c                   $     e Zd ZdZd fd	Z xZS )UnknownVersionzHgeneric exception for aborting from an encounter with an unknown versionNc                 j    || _         t          t          |                               ||           d S r   )versionr   r   r    )r!   msgr   r   r#   s       r   r    zUnknownVersion.__init__  s3    nd##,,St,<<<<<r   r   r$   r*   s   @r   r   r     sC        RR= = = = = = = = = =r   r   c                       e Zd Zd ZdS )	LockErrorc                 N    t                               | |||           || _        d S r.   )r   r    desc)r!   r   r   filenamer   s        r   r    zLockError.__init__  s)     	uh999			r   NrW   rA   r   r   r   r     s#            r   r   c                       e Zd Zd ZdS )LockHeldc                 P    t                               | |d||           || _        d S )Ns	   Lock held)r   r    locker)r!   r   r   r   r   s        r   r    zLockHeld.__init__  s)    4hEEEr   NrW   rA   r   r   r   r     s#            r   r   c                       e Zd ZdS )LockUnavailableNrL   rA   r   r   r   r     rM   r   r   c                       e Zd ZeZdS ) LockInheritanceContractViolationNrZ   rA   r   r   r  r    r[   r   r  c                       e Zd ZdZeZdS )ResponseErrorz6Raised to print an error with part of output and exit.Nr%   r&   r'   r(   r   r3   rA   r   r   r  r    s        @@IIIr   r  c                       e Zd ZdZdS )SignalInterruptz'Exception raised on SIGTERM and SIGHUP.NrD   rA   r   r   r  r    s        1111r   r  c                       e Zd ZeZdS )SignatureErrorNrZ   rA   r   r   r	  r	    r[   r   r	  c                       e Zd ZdZeZdS )	PushRacedz?An exception raised during unbundling that indicate a push raceNr  rA   r   r   r  r    s        IIIIIr   r  c                   &     e Zd ZdZ fdZeZ xZS )ProgrammingErrorzBRaised if a mercurial (core or extension) developer made a mistakec                 x    t          j        |          } t          t          |           j        |g|R i | d S r.   )r   r5   r   r  r    )r!   r   r   kwargsr#   s       r   r    zProgrammingError.__init__  sH    
 oc"".%%.sDTDDDVDDDDDr   rs   r*   s   @r   r  r    s>        LLE E E E E IIIIIr   r  c                       e Zd ZdZeZdS )WdirUnsupportedz;An exception which is raised when 'wdir()' is not supportedNr  rA   r   r   r  r  $  s        EEIIIr   r  c                       e Zd ZdZeZdS )BundleValueErrorz-error raised when bundle2 cannot be processedNr  rA   r   r   r  r  +  s        77IIIr   r  c                       e Zd ZddZdS )BundleUnknownFeatureErrorNrA   c                    || _         || _        || _        | j         d}n|}| j        }| j        r| j        rt          | j                  t          | j                  k    sJ g }t	          | j                  D ]V\  }}| j        |         }||                    |           *|                    d|t          j        |          fz             W|rd|d                    |          fz  }t          
                    | |           d S )Ns   Stream Parameters   %s=%rs   %s - %sr   )parttypeparamsvaluesr   	enumerateappendr   maybebytestrr   
ValueErrorr    )	r!   r  r  r  r   entriesidxparvals	            r   r    z"BundleUnknownFeatureError.__init__2  s    = %CCC+; 	Q4; 	Qt{##s4;'7'77777G%dk22 Q QSk#&;NN3''''NN8sH4I#4N4N.O#OPPPP 	:UZZ%8%899CD#&&&&&r   )NrA   rA   rW   rA   r   r   r  r  1  s(        ' ' ' ' ' 'r   r  c                       e Zd ZdZeZdS )ReadOnlyPartErrorz<error raised when code tries to alter a part being generatedNr  rA   r   r   r#  r#  I  s        FFIIIr   r#  c                       e Zd ZdZ	 ddZdS )PushkeyFailedz9error raised when a pushkey part failed to update a valueNc                     || _         || _        || _        || _        || _        || _        t                              | d||fz             d S )Ns"   failed to update value for "%s/%s")partid	namespacerT   newoldretrC   r    )r!   r'  r(  rT   r)  r*  r+  s          r   r    zPushkeyFailed.__init__R  s^     "79c:JJ	
 	
 	
 	
 	
r   )NNNNNr   rA   r   r   r%  r%  O  s5        CC IM
 
 
 
 
 
r   r%  c                       e Zd ZdZd ZdS )CensoredNodeErrorzerror raised when content verification fails on a censored node

    Also contains the tombstone data substituted for the uncensored data.
    c                 r    ddl m} t                              | d| ||          fz             || _        d S )Nr   )shorts   %s:%s)rf   r/  rF   r    	tombstone)r!   r   rf   r0  r/  s        r   r    zCensoredNodeError.__init__g  sG    dH%%++/F$FGGG"r   Nr   rA   r   r   r-  r-  a  s-         
# # # # #r   r-  c                       e Zd ZdZdS )CensoredBaseErrora%  error raised when a delta is rejected because its base is censored

    A delta based on a censored revision must be formed as single patch
    operation which replaces the entire base with new content. This ensures
    the delta may be applied by clones which have not censored the base.
    NrD   rA   r   r   r2  r2  o  s           r   r2  c                       e Zd ZdZeZdS )InvalidBundleSpecificationz{error raised when a bundle specification is invalid.

    This is used for syntax errors as opposed to support errors.
    Nr  rA   r   r   r4  r4  x  s         
 IIIr   r4  c                       e Zd ZdZeZdS )UnsupportedBundleSpecificationz:error raised when a bundle specification is not supported.Nr  rA   r   r   r6  r6    s        DDIIIr   r6  c                       e Zd ZdZeZdS )CorruptedStatezCerror raised when a command is not able to read its state from fileNr  rA   r   r   r8  r8    s        MMIIIr   r8  c                       e Zd ZdZdS )PeerTransportErrorz>Transport-level I/O error when communicating with a peer repo.NrD   rA   r   r   r:  r:    s        HHHHr   r:  c                       e Zd ZdZeZdS )InMemoryMergeConflictsErrorzFException raised when merge conflicts arose during an in-memory merge.Nr  rA   r   r   r<  r<    s        PPIIIr   r<  c                       e Zd ZdZddZdS )WireprotoCommandErrorzRepresents an error during execution of a wire protocol command.

    Should only be thrown by wire protocol version 2 commands.

    The error is a formatter string and an optional iterable of arguments.
    Nc                 "    || _         || _        d S r.   )r/   messageargs)r!   r/   r   s      r   r    zWireprotoCommandError.__init__  s    r   r.   r   rA   r   r   r>  r>    s2                    r   r>  )Yr(   r    r   TYPE_CHECKINGtypingr   r   r   r   r	   r
   r   r   r   r0   r,   rC   rF   rK   rO   
IndexErrorrY   KeyErrorr]   rj   rl   rn   rp   ru   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   RuntimeErrorr  r  KeyboardInterruptr  r	  r  r  r  r  r  r  r#  r%  r-  r2  r4  r6  r8  r:  r<  r>  rA   r   r   <module>rH     s           	                 Q Q Q	0 	0 	0 	0 	0 	0 	0 	0    D)   D@ @ @ @ @E @ @ @    5   	 	 	 	 	, 	 	 	                      ) ) ) ) )+x ) ) )0	 	 	 	 	 	 	 		 	 	 	 	+ 	 	 		 	 	 	 	+ 	 	 		 	 	 	 	9 	 	 		 	 	 	 	Y 	 	 		 	 	 	 	y 	 	 		 	 	 	 	) 	 	 	    5    
 
 
 
 
!5 
 
 
"                  E       E   2 2 2 2 2E 2 2 2           %   4A A A A A% A A AB B B B BU B B BM M M M M~ M M ML L L L L L L L6 6 6 6 6u 6 6 6    %   A A A A A[ A A A       4           j       J   0 0 0
 
 

 
 
 
 

 
 
 
    i   	 	 	 	 	i 	 	 		 	 	 	 	o 	 	 		 	 	 	 	i 	 	 	A A A A Ay A A A8 8 8 8 8 8 8 8
 
 
 
 
e 
 
 
"= = = = =U = = =           y   	 	 	 	 	i 	 	 	
    |       I   2 2 2 2 2' 2 2 2    Y              t\       i       z   ' ' ' ' ' 0 ' ' '0       
 
 
 
 
E 
 
 
$# # # # # # # #                  Y       Y   I I I I I I I I    )            I          r   