ó
    ×›‘hp8  ã                   óf  • S r SSKrSSKJrJrJrJrJrJrJ	r	J
r
  SSKJr  SSKJr  SSKJr  SSKJrJr  SSKJrJr  SS	KJr  SS
KJrJr  SSKJr  SSKJr  SSK J!r!  SSK"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)J*r*J+r+J,r,  SSK-J.r.  SSK/J0r0  SSK1J2r2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9  \" SS9 " S S\:5      5       r; " S S\5      r< " S S\5      r=\
" S 5      r>\\=/\\>   4   r? " S! S"\!5      r@ " S# S$\!5      rA\" \5       " S% S&5      5       rB\" \5       " S' S(5      5       rC " S) S*\:5      rD " S+ S,\5      rEg)-z:
This module implements the worker classes.

@since: 12.3
é    N)ÚAnyÚ	AwaitableÚCallableÚDictÚListÚOptionalÚTextIOÚTypeVar)ÚTestCase)Úimplementer)Úfrozen)ÚProtocolÚ	TypedDict)ÚDeferredÚDeferredList)ÚProcessDone)ÚIAddressÚ
ITransport)ÚProcessProtocol)ÚLogger)ÚAMP)ÚFailure)ÚFilePath)ÚnamedObject)Ú_WORKER_AMP_STDINÚ_WORKER_AMP_STDOUTÚmanagercommandsÚworkercommands)ÚWorkerReporter)Ú
TestResult)Ú
TestLoaderÚ
TrialSuite)ÚTodoé   )Ú
StreamOpenÚStreamReceiverÚStreamWriteF)Úauto_excc                   ó$   • \ rS rSr% Sr\\S'   Srg)ÚWorkerExceptioné+   z}
An exception was reported by a test running in a worker process.

@ivar message: An error message describing the exception.
Úmessage© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstrÚ__annotations__Ú__static_attributes__r-   ó    Ú^C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/trial/_dist/worker.pyr*   r*   +   s   ‡ ñð †Lr6   r*   c                   ó$   • \ rS rSr% Sr\\S'   Srg)Ú	RunResulté6   z:
Represent the result of a L{workercommands.Run} command.
Úsuccessr-   N)r.   r/   r0   r1   r2   Úboolr4   r5   r-   r6   r7   r9   r9   6   s   ‡ ñð †Mr6   r9   c                   ó.   • \ rS rSrSrS\S\S\4S jrSr	g)	ÚWorkeré>   z!
An object that can run actions.
ÚcaseÚresultÚreturnc              ƒ   ó   #   • g7f)z
Run a test case.
Nr-   )Úselfr@   rA   s      r7   ÚrunÚ
Worker.runC   s   é � ùs   ‚r-   N)
r.   r/   r0   r1   r2   r   r    r9   rE   r5   r-   r6   r7   r>   r>   >   s!   † ñð˜hð °
ð ¸y÷ r6   r>   Ú_Tc                   ó¬   • \ rS rSrSr\" 5       rS
S jr\R                  R                  S\S\4S j5       r\R                  R                  S 5       rSrg	)ÚWorkerProtocoléM   z-
The worker-side trial distributed protocol.
c                 óN   • [        5       U l        [        U 5      U l        Xl        g ©N)r!   Ú_loaderr   Ú_resultÚ_forceGarbageCollection)rD   ÚforceGarbageCollections     r7   Ú__init__ÚWorkerProtocol.__init__T   s   € Ü!“|ˆŒÜ% dÓ+ˆŒØ'=Õ$r6   ÚtestCaserB   c              ƒ   óD  #   • U R                   R                  5        nU R                  R                  U5      n[	        U/U R
                  5      nUR                  U R                   5        SSS5        Sn[        WSS9I Sh  v•N  HP  u  pgU(       a  M  SnU R                  R                  SUUS9   U R                   R                  UU5      I Sh  v•N   MR     SU0$ ! , (       d  f       Nz= f Nm N! [         a    U R                  R                  S5         M•  f = f7f)	z
Run a test case by name.
NT)ÚconsumeErrorsFz Result reporting for {id} failed)ÚfailureÚidz5Additionally, reporting the reporting failure failed.r;   )rN   ÚgatherReportingResultsrM   Ú
loadByNamer"   rO   rE   r   ÚloggerrV   ÚaddErrorFallibleÚBaseException)rD   rS   Úresultsr@   ÚsuiteÚallSucceededr;   rA   s           r7   rE   ÚWorkerProtocol.runY   s  é € ð
 �\‰\×0Ñ0Ô2°gØ—<‘<×*Ñ*¨8Ó4ˆDÜ ˜v t×'CÑ'CÓDˆEØ�I‰I�d—l‘lÔ#÷ 3ð
 ˆÜ%1°'ÈÑ%N×NÒN‰OˆGÞáð !ˆLð �K‰K×ÑØ2àØð	  ñ ðØ—l‘l×3Ñ3Øàó÷ ò ñ'  Oð@ ˜<Ð(Ð(÷M 3Õ2úñ  Oñ&øô
 !ó ð —‘×#Ñ#ØK÷ð	üs_   ‚D �ACÁ+D ÂC0Â/D Â3C4ÃC2ÃC4ÃD Ã
C-Ã)D Ã2C4Ã4%DÄD ÄDÄD c                 ó6   • [         R                  " U5        SS0$ )zJ
Set up the worker, moving into given directory for tests to run in
them.
r;   T)ÚosÚchdir)rD   Ú	directorys     r7   ÚstartÚWorkerProtocol.start†   s   € ô 	�Š�ÔØ˜4Ð Ð r6   )rO   rM   rN   N)F)r.   r/   r0   r1   r2   r   rZ   rQ   r   ÚRunÚ	responderr3   r9   rE   ÚStartre   r5   r-   r6   r7   rI   rI   M   sd   † ññ ‹X€Fô>ð
 ×Ñ×!Ñ!ð*) #ð *)¨)ó *)ó "ð*)ðX ×Ñ×#Ñ#ñ!ó $ó!r6   rI   c                   ó¤  ^ • \ rS rSrSrSU 4S jjr\R                  S 5       r\	R                  S 5       r
\R                  R                  S 5       rS\S\S	\\   S
\4S jr\R&                  R                  S\S\S\S\S
\\\4   4
S j5       r\R0                  R                  S\S\S\S\S
\\\4   4
S j5       r\R4                  R                  S 5       r\R8                  R                  S\S\S\\   S
\\\4   4S j5       r\R>                  R                  S 5       r \RB                  R                  S 5       r"S\#S\$S
\%4S jr&S r'Sr(U =r)$ )ÚLocalWorkerAMPé�   z/
Local implementation of the manager commands.
c                 óB   >• [         TU ]  X5        [        5       U l        g rL   )ÚsuperrQ   r&   Ú_streams)rD   ÚboxReceiverÚlocatorÚ	__class__s      €r7   rQ   ÚLocalWorkerAMP.__init__•   s   ø€ Ü‰Ñ˜Ô.Ü&Ó(ˆ�r6   c                 ó:   • SU R                   R                  5       0$ )NÚstreamId)ro   Úopen©rD   s    r7   Ú
streamOpenÚLocalWorkerAMP.streamOpen™   s   € à˜DŸM™M×.Ñ.Ó0Ð1Ð1r6   c                 ó<   • U R                   R                  X5        0 $ rL   )ro   Úwrite)rD   ru   Údatas      r7   ÚstreamWriteÚLocalWorkerAMP.streamWrite�   s   € à�‰×Ñ˜HÔ+Øˆ	r6   c                 óT   • U R                   R                  U R                  5        SS0$ )z 
Add a success to the reporter.
r;   T)rN   Ú
addSuccessÚ	_testCase)rD   ÚtestNames     r7   r€   ÚLocalWorkerAMP.addSuccess¢   s%   € ð
 	�‰×Ñ §¡Ô/Ø˜4Ð Ð r6   ÚerrorÚ
errorClassÚframesrB   c           
      óÖ   • [        U5      n[        X5      n[        S[        U5      S5       H8  nUR                  R                  X6   X6S-      [        X6S-      5      / / 45        M:     U$ )a`  
Helper to build a C{Failure} with some traceback.

@param error: An C{Exception} instance.

@param errorClass: The class name of the C{error} class.

@param frames: A flat list of strings representing the information need
    to approximatively rebuild C{Failure} frames.

@return: A L{Failure} instance with enough information about a test
   error.
r   é   r$   é   )r   r   ÚrangeÚlenr†   ÚappendÚint)rD   r„   r…   r†   Ú	errorTyperV   Úis          r7   Ú_buildFailureÚLocalWorkerAMP._buildFailureª   si   € ô&   
Ó+ˆ	Ü˜%Ó+ˆÜ�qœ#˜f›+ qÖ)ˆAØ�N‰N×!Ñ!Ø‘˜F q¡5™M¬3¨v¸!±e©}Ó+=¸rÀ2ÐFöñ *ð ˆr6   r‚   ÚerrorStreamIdÚframesStreamIdc                 óz  • SR                  U R                  R                  U5      5      R                  S5      nU R                  R                  U5       Vs/ s H  ofR                  S5      PM     nnU R	                  [        U5      X'5      nU R                  R                  U R                  U5        SS0$ s  snf )ao  
Add an error to the reporter.

@param errorStreamId: The identifier of a stream over which the text
    of this error was previously completely sent to the peer.

@param framesStreamId: The identifier of a stream over which the lines
    of the traceback for this error were previously completely sent to
    the peer.

@param error: A message describing the error.
r6   úutf-8r;   T)	Újoinro   ÚfinishÚdecoder�   r*   rN   ÚaddErrorr�   )	rD   r‚   r…   r’   r“   r„   Úframer†   rV   s	            r7   r™   ÚLocalWorkerAMP.addErrorÅ   s    € ð( —‘˜Ÿ™×-Ñ-¨mÓ<Ó=×DÑDÀWÓMˆà/3¯}©}×/CÑ/CÀNÔ/Só
Ú/S e�L‰L˜Ö!Ñ/Sð 	ð 
ð ×$Ñ$¤_°UÓ%;¸ZÓPˆØ�‰×Ñ˜dŸn™n¨gÔ6Ø˜4Ð Ð ùò
ó   ÁB8ÚfailStreamIdÚ	failClassc                 óz  • SR                  U R                  R                  U5      5      R                  S5      nU R                  R                  U5       Vs/ s H  ofR                  S5      PM     nnU R	                  [        U5      X75      nU R                  R                  U R                  U5        SS0$ s  snf )aB  
Add a failure to the reporter.

@param failStreamId: The identifier of a stream over which the text of
    this failure was previously completely sent to the peer.

@param framesStreamId: The identifier of a stream over which the lines
    of the traceback for this error were previously completely sent to the
    peer.
r6   r•   r;   T)	r–   ro   r—   r˜   r�   r*   rN   Ú
addFailurer�   )	rD   r‚   r�   rž   r“   Úfailrš   r†   rV   s	            r7   r    ÚLocalWorkerAMP.addFailureå   s    € ð$ �x‰x˜Ÿ™×,Ñ,¨\Ó:Ó;×BÑBÀ7ÓKˆà/3¯}©}×/CÑ/CÀNÔ/Só
Ú/S e�L‰L˜Ö!Ñ/Sð 	ð 
ð ×$Ñ$¤_°TÓ%:¸IÓNˆØ�‰×Ñ §¡°Ô8Ø˜4Ð Ð ùò
rœ   c                 óV   • U R                   R                  U R                  U5        SS0$ )z
Add a skip to the reporter.
r;   T)rN   ÚaddSkipr�   )rD   r‚   Úreasons      r7   r¤   ÚLocalWorkerAMP.addSkip   s'   € ð
 	�‰×Ñ˜TŸ^™^¨VÔ4Ø˜4Ð Ð r6   Útodoc                 óè   • SR                  U R                  R                  U5      5      R                  S5      n[	        Uc  SOU5      nU R
                  R                  U R                  XE5        SS0$ )z®
Add an expected failure to the reporter.

@param errorStreamId: The identifier of a stream over which the text
    of this error was previously completely sent to the peer.
r6   r•   z	<unknown>r;   T)r–   ro   r—   r˜   r#   rN   ÚaddExpectedFailurer�   )rD   r‚   r’   r§   r„   Ú_todos         r7   r©   Ú!LocalWorkerAMP.addExpectedFailure  s_   € ð —‘˜Ÿ™×-Ñ-¨mÓ<Ó=×DÑDÀWÓMˆÜ D¡L‘[°dÓ;ˆØ�‰×'Ñ'¨¯©¸ÔEØ˜4Ð Ð r6   c                 óV   • U R                   R                  U R                  U5        SS0$ )z,
Add an unexpected success to the reporter.
r;   T)rN   ÚaddUnexpectedSuccessr�   )rD   r‚   r§   s      r7   r­   Ú#LocalWorkerAMP.addUnexpectedSuccess  s'   € ð
 	�‰×)Ñ)¨$¯.©.¸$Ô?Ø˜4Ð Ð r6   c                 óz   • U R                   R                  US-   5        U R                   R                  5         SS0$ )z$
Print test output from the worker.
Ú
r;   T)Ú_testStreamr{   Úflush)rD   Úouts     r7   Ú	testWriteÚLocalWorkerAMP.testWrite  s9   € ð
 	×Ñ×Ñ˜s T™zÔ*Ø×Ñ×ÑÔ Ø˜4Ð Ð r6   rS   rA   c              ƒ   ó@  #   • Xl         X l        U R                  R                  U5        UR                  5       n U R	                  [
        R                  US9I Sh  v•N U R                  R                  U5        $  N! U R                  R                  U5        f = f7f)z
Run a test.
)rS   N)r�   rN   Ú	startTestrW   Ú
callRemoter   rg   ÚstopTest)rD   rS   rA   Ú
testCaseIds       r7   rE   ÚLocalWorkerAMP.run(  sw   é € ð "ŒØŒØ�‰×Ñ˜xÔ(Ø—[‘[“]ˆ
ð	,ØŸ™¬×);Ñ);Àj˜ÐQ×Qà�L‰L×!Ñ! (Õ+ñ Røà�L‰L×!Ñ! (Õ+üs.   ‚8B»!A> ÁA<ÁA> Á BÁ<A> Á>BÂBc                 ó   • Xl         g)z/
Set the stream used to log output from tests.
N)r±   )rD   Ústreams     r7   ÚsetTestStreamÚLocalWorkerAMP.setTestStream5  s
   € ð "Õr6   )rN   ro   r�   r±   )NN)*r.   r/   r0   r1   r2   rQ   r%   rh   rx   r'   r}   r   Ú
AddSuccessr€   r*   r3   r   r   r�   ÚAddErrorr�   r   r<   r™   Ú
AddFailurer    ÚAddSkipr¤   ÚAddExpectedFailurer   r©   ÚAddUnexpectedSuccessr­   Ú	TestWriter´   r   r    r9   rE   r¾   r5   Ú__classcell__)rr   s   @r7   rk   rk   �   s  ø† ñ÷)ð ×Ññ2ó ð2ð ×Ññó ðð ×Ñ×)Ñ)ñ!ó *ð!ðàðð ðð �S‘	ð	ð
 
ôð6 ×Ñ×'Ñ'ð!àð!ð ð!ð ð	!ð
 ð!ð 
ˆc�4ˆi‰ó!ó (ð!ð> ×Ñ×)Ñ)ð!àð!ð ð!ð ð	!ð
 ð!ð 
ˆc�4ˆi‰ó!ó *ð!ð4 ×Ñ×&Ñ&ñ!ó 'ð!ð ×'Ñ'×1Ñ1ð!Øð!Ø,/ð!Ø7?À±}ð!à	ˆc�4ˆi‰ó!ó 2ð!ð ×)Ñ)×3Ñ3ñ!ó 4ð!ð ×Ñ×(Ñ(ñ!ó )ð!ð, (ð ,°Jð ,À9ô ,÷"ð "r6   rk   c                   ó   • \ rS rSrSrSrg)ÚLocalWorkerAddressi<  zs
A L{IAddress} implementation meant to provide stub addresses for
L{ITransport.getPeer} and L{ITransport.getHost}.
r-   N©r.   r/   r0   r1   r2   r5   r-   r6   r7   rÉ   rÉ   <  s   † ôr6   rÉ   c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚLocalWorkerTransportiD  z]
A stub transport implementation used to support L{AMP} over a
L{ProcessProtocol} transport.
c                 ó   • Xl         g rL   ©Ú
_transport)rD   Ú	transports     r7   rQ   ÚLocalWorkerTransport.__init__K  s   € Ø#�r6   c                 óD   • U R                   R                  [        U5        g)z
Forward data to transport.
N©rÏ   ÚwriteToChildr   ©rD   r|   s     r7   r{   ÚLocalWorkerTransport.writeN  s   € ð 	�‰×$Ñ$Ô%6¸Õ=r6   c                 óV   • U H#  nU R                   R                  [        U5        M%     g)z@
Emulate C{writeSequence} by iterating data in the C{sequence}.
NrÓ   )rD   Úsequencer|   s      r7   ÚwriteSequenceÚ"LocalWorkerTransport.writeSequenceT  s#   € ó ˆDØ�O‰O×(Ñ(Ô):¸DÖAò r6   c                 ó8   • U R                   R                  5         g)z
Closes the transport.
N)rÏ   ÚloseConnectionrw   s    r7   rÜ   Ú#LocalWorkerTransport.loseConnection[  s   € ð 	�‰×&Ñ&Õ(r6   c                 ó   • [        5       $ ©z*
Return a L{LocalWorkerAddress} instance.
©rÉ   rw   s    r7   ÚgetHostÚLocalWorkerTransport.getHosta  ó   € ô "Ó#Ð#r6   c                 ó   • [        5       $ rß   rà   rw   s    r7   ÚgetPeerÚLocalWorkerTransport.getPeerg  rã   r6   rÎ   N)r.   r/   r0   r1   r2   rQ   r{   rÙ   rÜ   rá   rå   r5   r-   r6   r7   rÌ   rÌ   D  s&   † ñò
$ò>òBò)ò$õ$r6   rÌ   c                   ó   • \ rS rSrSrSrg)Ú
NotRunningin  zF
An operation was attempted on a worker process which is not running.
r-   NrÊ   r-   r6   r7   rè   rè   n  s   † ôr6   rè   c                   ón   • \ rS rSrSrS\S\\   S\4S jr	SS	 jr
S
 rS rS\SS4S jrS rS rS rSrg)ÚLocalWorkerit  a0  
Local process worker protocol. This worker runs as a local process and
communicates via stdin/out.

@ivar _ampProtocol: The L{AMP} protocol instance used to communicate with
    the worker.

@ivar _logDirectory: The directory where logs will reside.

@ivar _logFile: The main log file for tests output.
ÚampProtocolÚlogDirectoryÚlogFilec                 óF   • Xl         X l        X0l        [        5       U l        g rL   )Ú_ampProtocolÚ_logDirectoryÚ_logFiler   ÚendDeferred)rD   rë   rì   rí   s       r7   rQ   ÚLocalWorker.__init__�  s   € ð (ÔØ)ÔØŒÜ+3«:ˆÕr6   rB   Nc              ƒ   óÊ   #   • U R                   c
  [        5       eU R                  nU R                   R                  [        5         UI Sh  v•N   g N! [
         a     gf = f7f)z#
Cause the worker process to exit.
N)rÐ   rè   rò   ÚcloseChildFDr   r   )rD   rò   s     r7   ÚexitÚLocalWorker.exitŒ  sV   é € ð �>‰>Ñ!Ü“,Ðà×&Ñ&ˆØ�‰×#Ñ#Ô$5Ô6ð	Ø×ÓøÜó 	Ùð	üs<   ‚AA#ÁA ÁAÁA ÁA#ÁA Á
A ÁA#ÁA Á A#c                 ó4  • U R                   R                  [        U R                  5      5        U R                  R                  SS9  U R                  R                  S5      R                  S5      U l        U R                  R                  S5      R                  S5      U l	        U R                   R                  U R                  5        U R                   R                  [        R                  U R                  R                  S9nUR!                  S 5        g)	z<
When connection is made, create the AMP protocol instance.
T)ÚignoreExistingDirectoryzout.logÚwzerr.log)rd   c                 ó   • g rL   r-   )Úxs    r7   Ú<lambda>Ú,LocalWorker.connectionMade.<locals>.<lambda>©  s   € ˜tr6   N)rï   ÚmakeConnectionrÌ   rÐ   rð   ÚmakedirsÚchildrv   Ú_outLogÚ_errLogr¾   rñ   r¸   r   ri   ÚpathÚ
addErrback)rD   Úds     r7   ÚconnectionMadeÚLocalWorker.connectionMadeš  sØ   € ð 	×Ñ×(Ñ(Ô)=¸d¿n¹nÓ)MÔNØ×Ñ×#Ñ#¸DÐ#ÑAØ×)Ñ)×/Ñ/°	Ó:×?Ñ?ÀÓDˆŒØ×)Ñ)×/Ñ/°	Ó:×?Ñ?ÀÓDˆŒØ×Ñ×'Ñ'¨¯©Ô6Ø×Ñ×(Ñ(Ü× Ñ Ø×(Ñ(×-Ñ-ð )ð 
ˆð 	
�‰‘^Õ$r6   c                 óz   • U R                   R                  5         U R                  R                  5         SU l        g)zS
On connection lost, close the log files that we're managing for stdin
and stdout.
N)r  Úcloser  rÐ   ©rD   r¥   s     r7   ÚconnectionLostÚLocalWorker.connectionLost«  s+   € ð
 	�‰×ÑÔØ�‰×ÑÔØˆ�r6   r¥   c                 ó’   • U R                  U5        U R                  R                  U5        U R                  R                  U5        g)zz
When the process closes, call C{connectionLost} for cleanup purposes
and forward the information to the C{_ampProtocol}.
N)r  rï   rò   Úcallbackr  s     r7   ÚprocessEndedÚLocalWorker.processEnded´  s:   € ð
 	×Ñ˜FÔ#Ø×Ñ×(Ñ(¨Ô0Ø×Ñ×!Ñ! &Õ)r6   c                 ó:   • U R                   R                  U5        g)z(
Send data received from stdout to log.
N)r  r{   rÕ   s     r7   ÚoutReceivedÚLocalWorker.outReceived½  s   € ð
 	�‰×Ñ˜4Õ r6   c                 ó:   • U R                   R                  U5        g)z
Write error data to log.
N)r  r{   rÕ   s     r7   ÚerrReceivedÚLocalWorker.errReceivedÄ  s   € ð 	�‰×Ñ˜4Õ r6   c                 ó~   • U[         :X  a  U R                  R                  U5        g[        R                  " XU5        g)zD
Handle data received on the specific pipe for the C{_ampProtocol}.
N)r   rï   ÚdataReceivedr   ÚchildDataReceived)rD   ÚchildFDr|   s      r7   r  ÚLocalWorker.childDataReceivedÊ  s1   € ð Ô(Ó(Ø×Ñ×*Ñ*¨4Õ0ä×-Ò-¨d¸TÕBr6   )rï   r  rð   rñ   r  rò   rÐ   )rB   N)r.   r/   r0   r1   r2   rk   r   r   r	   rQ   rö   r  r  r   r  r  r  r  r5   r-   r6   r7   rê   rê   t  s^   † ñ
ð	6à#ð	6ð ˜s‘mð	6ð ô		6ôò%ò"ð* 7ð *¨tô *ò!ò!õCr6   rê   )Fr2   rb   Útypingr   r   r   r   r   r   r	   r
   Úunittestr   Úzope.interfacer   Úattrsr   Útyping_extensionsr   r   Útwisted.internet.deferr   r   Útwisted.internet.errorr   Útwisted.internet.interfacesr   r   Útwisted.internet.protocolr   Útwisted.loggerr   Útwisted.protocols.ampr   Útwisted.python.failurer   Útwisted.python.filepathr   Útwisted.python.reflectr   Útwisted.trial._distr   r   r   r   Ú"twisted.trial._dist.workerreporterr   Útwisted.trial.reporterr    Útwisted.trial.runnerr!   r"   Útwisted.trial.unittestr#   r½   r%   r&   r'   Ú	Exceptionr*   r9   r>   rG   ÚWorkerActionrI   rk   rÉ   rÌ   rè   rê   r-   r6   r7   Ú<module>r2     s,  ðñó 
ß R× RÓ RÝ å &å ß 1ç 9Ý .ß <Ý 5Ý !Ý %Ý *Ý ,Ý .÷ó õ >Ý -ß 7Ý 'ß ;Ñ ;ñ �Ñô�ió ó ðô�	ô ôˆXô ñ ˆTƒ]€Ø˜˜ )¨B¡-Ð/Ñ0€ô@!�Sô @!ôFi"�Sô i"ñX ˆXÓ÷ð ó ðñ ˆZÓ÷&$ð &$ó ð&$ôR�ô ô]C�/õ ]Cr6   