§
    ™Štj*B  ã                  ó(  — d dl mZ d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ e	rd dl%m&Z&m'Z'  ej(        e)¦  «        Z* G d„ d¦  «        Z+dS )é    )ÚannotationsN)ÚAsyncIteratorÚIterator)ÚTYPE_CHECKINGÚAny)ÚUUID)ÚAgentActionÚAgentFinishÚ	AgentStep)ÚAsyncCallbackManagerÚAsyncCallbackManagerForChainRunÚCallbackManagerÚCallbackManagerForChainRunÚ	Callbacks)Údumpd)ÚRunInfo)ÚAddableDict)ÚBaseTool)Úget_color_mapping)ÚRUN_KEY)Úasyncio_timeout)ÚAgentExecutorÚNextStepOutputc                  ó|  — e Zd ZU dZ	 d;dddddddœd<d„Zded<   d
ed	<   ded<   ded<   ded<   ded<   ded<   ded<   ed=d„¦   «         Zej        d>d„¦   «         Zed?d„¦   «         Z	e	j        d@d„¦   «         Z	edAd „¦   «         Z
ed=d!„¦   «         ZdBd"„ZdBd#„ZdCd)„ZdDd,„ZdEd.„ZdFd2„ZdGd4„ZdHd5„ZdId6„ZdJd9„ZdKd:„ZdS )LÚAgentExecutorIteratorzIterator for AgentExecutor.NF)ÚtagsÚmetadataÚrun_nameÚrun_idÚinclude_run_infoÚyield_actionsÚagent_executorr   Úinputsr   Ú	callbacksr   r   úlist[str] | Noner   údict[str, Any] | Noner   ú
str | Noner   úUUID | Noner    Úboolr!   c               ó¬   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |  	                    ¦   «          dS )aÃ  Initialize the `AgentExecutorIterator`.

        Initialize the `AgentExecutorIterator` with the given `AgentExecutor`,
        inputs, and optional callbacks.

        Args:
            agent_executor: The `AgentExecutor` to iterate over.
            inputs: The inputs to the `AgentExecutor`.
            callbacks: The callbacks to use during iteration.
            tags: The tags to use during iteration.
            metadata: The metadata to use during iteration.
            run_name: The name of the run.
            run_id: The ID of the run.
            include_run_info: Whether to include run info in the output.
            yield_actions: Whether to yield actions as they are generated.
        N)
Ú_agent_executorr#   r$   r   r   r   r   r    r!   Úreset)
Úselfr"   r#   r$   r   r   r   r   r    r!   s
             úe/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_classic/agents/agent_iterator.pyÚ__init__zAgentExecutorIterator.__init__+   sW   € ð:  .ˆÔØˆŒØ"ˆŒØˆŒ	Ø ˆŒØ ˆŒØˆŒØ 0ˆÔØ*ˆÔØ�
Š
‰Œˆˆˆó    údict[str, str]Ú_inputsÚreturnc                ó   — | j         S )z"The inputs to the `AgentExecutor`.)r2   ©r-   s    r.   r#   zAgentExecutorIterator.inputs\   s   € ð Œ|Ðr0   ÚNonec                óD   — | j                              |¦  «        | _        d S ©N)r"   Úprep_inputsr2   )r-   r#   s     r.   r#   zAgentExecutorIterator.inputsa   s   € àÔ*×6Ò6°vÑ>Ô>ˆŒˆˆr0   c                ó   — | j         S )z$The `AgentExecutor` to iterate over.)r+   r5   s    r.   r"   z$AgentExecutorIterator.agent_executore   s   € ð Ô#Ð#r0   c                ó,   — || _         | j        | _        d S r8   )r+   r#   )r-   r"   s     r.   r"   z$AgentExecutorIterator.agent_executorj   s   € à-ˆÔà”kˆŒˆˆr0   údict[str, BaseTool]c                ó.   — d„ | j         j        D ¦   «         S )z!A mapping of tool names to tools.c                ó   — i | ]
}|j         |“ŒS © ©Úname©Ú.0Útools     r.   ú
<dictcomp>z:AgentExecutorIterator.name_to_tool_map.<locals>.<dictcomp>s   s   € ÐFÐFÐF D�”	˜4ÐFÐFÐFr0   )r"   Útoolsr5   s    r.   Úname_to_tool_mapz&AgentExecutorIterator.name_to_tool_mapp   s   € ð GÐF¨DÔ,?Ô,EÐFÑFÔFÐFr0   c                óP   — t          d„ | j        j        D ¦   «         ddg¬¦  «        S )z"A mapping of tool names to colors.c                ó   — g | ]	}|j         ‘Œ
S r?   r@   rB   s     r.   ú
<listcomp>z7AgentExecutorIterator.color_mapping.<locals>.<listcomp>y   s   € Ð=Ð=Ð=˜4ˆTŒYÐ=Ð=Ð=r0   ÚgreenÚred)Úexcluded_colors)r   r"   rF   r5   s    r.   Úcolor_mappingz#AgentExecutorIterator.color_mappingu   s:   € õ !Ø=Ð= 4Ô#6Ô#<Ð=Ñ=Ô=Ø$ eÐ,ð
ñ 
ô 
ð 	
r0   c                ó”   — t                                d¦  «         g | _        d| _        d| _        t          j        ¦   «         | _        dS )z¦Reset the iterator to its initial state.

        Reset the iterator to its initial state, clearing intermediate steps,
        iterations, and time elapsed.
        z0(Re)setting AgentExecutorIterator to fresh stater   g        N)ÚloggerÚdebugÚintermediate_stepsÚ
iterationsÚtime_elapsedÚtimeÚ
start_timer5   s    r.   r,   zAgentExecutorIterator.reset}   s?   € õ 	�ŠÐGÑHÔHÐHØACˆÔØˆŒàˆÔÝœ)™+œ+ˆŒˆˆr0   c                ó²   — | xj         dz  c_         t          j        ¦   «         | j        z
  | _        t                               d| j         | j        ¦  «         dS )z?Increment the number of iterations and update the time elapsed.é   z$Agent Iterations: %s (%.2fs elapsed)N)rS   rU   rV   rT   rP   rQ   r5   s    r.   Úupdate_iterationsz'AgentExecutorIterator.update_iterationsŠ   sU   € àˆŒ˜1ÑˆŒÝ œI™KœK¨$¬/Ñ9ˆÔÝ�ŠØ2ØŒOØÔñ	
ô 	
ð 	
ð 	
ð 	
r0   Úoutputsúdict[str, Any]Úrun_managerú<CallbackManagerForChainRun | AsyncCallbackManagerForChainRunr   c                ó¬   — t          | j                             | j        |d¬¦  «        ¦  «        }| j        rt          |j        ¬¦  «        |t          <   |S )zµMake final outputs for the iterator.

        Args:
            outputs: The outputs from the agent executor.
            run_manager: The run manager to use for callbacks.
        T)Úreturn_only_outputs)r   )r   r"   Úprep_outputsr#   r    r   r   r   )r-   rZ   r\   Úprepared_outputss       r.   Úmake_final_outputsz(AgentExecutorIterator.make_final_outputs”   sg   € õ 'ØÔ×,Ò,Ø”ØØ$(ð -ñ ô ñ
ô 
Ðð Ô ð 	KÝ(/°{Ô7IÐ(JÑ(JÔ(JÐ�WÑ%ØÐr0   r-   úIterator[AddableDict]c           	   #  ó¨  K  — t                                d¦  «         |                      ¦   «          t          j        | j        | j        j        | j        j        | j        | j        j        | j	        | j        j	        ¦  «        }| 
                    t          | j        ¦  «        | j        | j        | j        ¬¦  «        }	 | j                             | j        | j        ¦  «        �r/g }| j                             | j        | j        | j        | j        |¦  «        D ]{}|                     |¦  «         | j        r]t1          |t2          ¦  «        rt5          |g|j        ¬¦  «        V — ŒMt1          |t8          ¦  «        rt5          |g|j        ¬¦  «        V — Œ|| j                             |¦  «        }|                      ¦   «          |                      ||¦  «        }d|v}| j        r|r|V — |rdS | j                             | j        | j        ¦  «        �°/n(# t@          $ r}| !                    |¦  «         ‚ d}~ww xY w|  "                    |¦  «        V — dS )z1Create an async iterator for the `AgentExecutor`.z"Initialising AgentExecutorIteratorr@   ©ÚactionsÚmessages©Ústepsrg   Úintermediate_stepN)#rP   rQ   r,   r   Ú	configurer$   r"   Úverboser   r   Úon_chain_startr   r#   r   r   Ú_should_continuerS   rT   Ú_iter_next_steprG   rN   rR   Úappendr!   Ú
isinstancer	   r   rg   r   Ú_consume_next_steprY   Ú_process_next_step_outputÚBaseExceptionÚon_chain_errorÚ_stop©	r-   Úcallback_managerr\   Únext_step_seqÚchunkÚ	next_stepÚoutputÚis_finalÚes	            r.   Ú__iter__zAgentExecutorIterator.__iter__­   s“  è è € å�ŠÐ9Ñ:Ô:Ð:Ø�
Š
‰ŒˆÝ*Ô4ØŒNØÔÔ)ØÔÔ'ØŒIØÔÔ$ØŒMØÔÔ(ñ
ô 
Ðð '×5Ò5Ý�$Ô%Ñ&Ô&ØŒKØŒKØ”ð	 6ñ 
ô 
ˆð(	ØÔ%×6Ò6Ø”ØÔ!ñô ñ $ð 13�Ø!Ô0×@Ò@ØÔ)ØÔ&Ø”KØÔ+Øñô ð Vð V�Eð "×(Ò(¨Ñ/Ô/Ð/ð Ô)ð VÝ% e­[Ñ9Ô9ð VÝ"-°u°gÈÌÐ"WÑ"WÔ"WÐWÐWÐWÐWÝ'¨­yÑ9Ô9ð VÝ"-°U°GÀeÄnÐ"UÑ"UÔ"UÐUÐUÐUøð !Ô/×BÒBÀ=ÑQÔQ�	à×&Ò&Ñ(Ô(Ð(à×7Ò7¸	À;ÑOÔO�Ø.°fÐ<�ð Ô)ð !¨Xð !Ø �L�L�Làð Ø�FðI Ô%×6Ò6Ø”ØÔ!ñô ñ $øøõJ ð 	ð 	ð 	Ø×&Ò& qÑ)Ô)Ð)Øøøøøð	øøøð
 �jŠj˜Ñ%Ô%Ð%Ð%Ð%Ð%Ð%s   Â=D-H Ç,&H È
H8ÈH3È3H8úAsyncIterator[AddableDict]c           	    ó  K  — t                                d¦  «         |                      ¦   «          t          j        | j        | j        j        | j        j        | j        | j        j        | j	        | j        j	        ¦  «        }| 
                    t          | j        ¦  «        | j        | j        | j        ¬¦  «        ƒ d{V —†}	 t          | j        j        ¦  «        4 ƒd{V —† | j                             | j        | j        ¦  «        �rPg }| j                             | j        | j        | j        | j        |¦  «        2 3 d{V —†}|                     |¦  «         | j        r_t5          |t6          ¦  «        rt9          |g|j        ¬¦  «        W V — ŒSt5          |t<          ¦  «        rt9          |g|j        ¬¦  «        W V — Œƒ6 | j                             |¦  «        }|                       ¦   «          |  !                    ||¦  «        ƒ d{V —†}d|v}| j        r|r|W V — |r	 ddd¦  «        ƒd{V —† dS | j                             | j        | j        ¦  «        �°P	 ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   nd# tD          tF          j"        f$ r" |  $                    |¦  «        ƒ d{V —†W V — Y dS tJ          $ r!}| &                    |¦  «        ƒ d{V —† ‚ d}~ww xY w|  $                    |¦  «        ƒ d{V —†W V — dS )zÊCreate an async iterator for the `AgentExecutor`.

        N.B. __aiter__ must be a normal method, so need to initialize async run manager
        on first __anext__ call where we can await it.
        z*Initialising AgentExecutorIterator (async)r@   Nre   rh   rj   )'rP   rQ   r,   r   rk   r$   r"   rl   r   r   rm   r   r#   r   r   r   Úmax_execution_timern   rS   rT   Ú_aiter_next_steprG   rN   rR   rp   r!   rq   r	   r   rg   r   rr   rY   Ú_aprocess_next_step_outputÚTimeoutErrorÚasyncioÚ_astoprt   ru   rw   s	            r.   Ú	__aiter__zAgentExecutorIterator.__aiter__í   s�  è è € õ 	�ŠÐAÑBÔBÐBØ�
Š
‰ŒˆÝ/Ô9ØŒNØÔÔ)ØÔÔ'ØŒIØÔÔ$ØŒMØÔÔ(ñ
ô 
Ðð -×;Ò;Ý�$Ô%Ñ&Ô&ØŒKØŒKØ”ð	 <ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ˆð5	Ý& tÔ':Ô'MÑNÔNð .ð .ð .ð .ð .ð .ð .ð .ØÔ)×:Ò:Ø”OØÔ%ñô ñ -ð 57�MØ'+Ô':×'KÒ'KØÔ-ØÔ*ØœØÔ/Ø#ñ(ô (ð "ð "ð "ð "ð "ð "ð "˜eð &×,Ò,¨UÑ3Ô3Ð3ð  Ô-ð 
"Ý)¨%µÑ=Ô=ð 	"Ý&1Ø-2¨GØ-2¬^ð'"ñ '"ô '"ð !"ð !"ð !"ð !"ð !"õ ",¨Eµ9Ñ!=Ô!=ð "Ý&1Ø+0¨'Ø-2¬^ð'"ñ '"ô '"ð !"ð !"ð !"ð !"øð#(ð. !%Ô 3× FÒ FÀ}Ñ UÔ U�Ià×*Ò*Ñ,Ô,Ð,à#'×#BÒ#BØ!Ø#ñ$ô $ð ð ð ð ð ð �Fð  3¸&Ð@�Hð  Ô-ð %°ð %Ø$˜˜˜˜àð Øð].ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .ð .ð .ØÔ)×:Ò:Ø”OØÔ%ñô ñ -ð -ð.ð .ð .ñ .ô .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .ð .øøøð .ð .ð .ð .øøõ^ �gÔ2Ð3ð 	ð 	ð 	ØŸš KÑ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØˆFˆFÝð 	ð 	ð 	Ø×,Ò,¨QÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Øøøøøð	øøøð
 —K’K Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ð,s\   ÃI> Ã"AI,Ä=G ÅCI,È I> È3&I,ÉI> É,
I6É6I> É9I6É:I> É>4KÊ5	KÊ>KËKÚnext_step_outputú+AgentFinish | list[tuple[AgentAction, str]]r   c                óæ  — t                                d¦  «         t          |t          ¦  «        r1t                                d¦  «         |                      ||¬¦  «        S | j                             |¦  «         t                                d¦  «         t          |¦  «        dk    r;|d         }| j         	                    |¦  «        }|�|                      ||¬¦  «        S t          |¬¦  «        S )	z�Process the output of the next step.

        Process the output of the next step,
        handling AgentFinish and tool return cases.
        z$Processing output of Agent loop stepzBHit AgentFinish: _return -> on_chain_end -> run final output logic©r\   ú+Updated intermediate_steps with step outputrX   r   N©rj   )rP   rQ   rq   r
   Ú_returnrR   ÚextendÚlenr"   Ú_get_tool_returnr   ©r-   r‰   r\   Únext_step_actionÚtool_returns        r.   rs   z/AgentExecutorIterator._process_next_step_output>  sî   € õ 	�ŠÐ;Ñ<Ô<Ð<ÝÐ&­Ñ4Ô4ð 	KÝ�LŠLØTñô ð ð —<’<Ð 0¸k�<ÑJÔJÐJàÔ×&Ò&Ð'7Ñ8Ô8Ð8Ý�ŠÐBÑCÔCÐCõ ÐÑ Ô  AÒ%Ð%Ø/°Ô2ÐØÔ-×>Ò>Ð?OÑPÔPˆKØÐ&Ø—|’| K¸[�|ÑIÔIÐIåÐ-=Ð>Ñ>Ô>Ð>r0   r   c              ƒ  ó  K  — t                                d¦  «         t          |t          ¦  «        r7t                                d¦  «         |                      ||¬¦  «        ƒ d{V —†S | j                             |¦  «         t                                d¦  «         t          |¦  «        dk    rA|d         }| j         	                    |¦  «        }|�|                      ||¬¦  «        ƒ d{V —†S t          |¬¦  «        S )	z›Process the output of the next async step.

        Process the output of the next async step,
        handling AgentFinish and tool return cases.
        z*Processing output of async Agent loop stepzCHit AgentFinish: _areturn -> on_chain_end -> run final output logicrŒ   Nr�   rX   r   rŽ   )rP   rQ   rq   r
   Ú_areturnrR   r�   r‘   r"   r’   r   r“   s        r.   r„   z0AgentExecutorIterator._aprocess_next_step_output[  s  è è € õ 	�ŠÐAÑBÔBÐBÝÐ&­Ñ4Ô4ð 	RÝ�LŠLØUñô ð ð ŸšÐ'7À[˜ÑQÔQÐQÐQÐQÐQÐQÐQÐQàÔ×&Ò&Ð'7Ñ8Ô8Ð8Ý�ŠÐBÑCÔCÐCõ ÐÑ Ô  AÒ%Ð%Ø/°Ô2ÐØÔ-×>Ò>Ð?OÑPÔPˆKØÐ&Ø!Ÿ]š]¨;ÀK˜]ÑPÔPÐPÐPÐPÐPÐPÐPÐPåÐ-=Ð>Ñ>Ô>Ð>r0   c                ó¾   — t                                d¦  «          | j        j        j        | j        j        | j        fi | j        ¤Ž}|                      ||¬¦  «        S )zuStop the iterator.

        Stop the iterator and raise a StopIteration exception with the stopped response.
        ú;Stopping agent prematurely due to triggering stop conditionrŒ   )	rP   Úwarningr"   Ú_action_agentÚreturn_stopped_responseÚearly_stopping_methodrR   r#   r�   ©r-   r\   r|   s      r.   rv   zAgentExecutorIterator._stopx  si   € õ
 	�ŠÐTÑUÔUÐUàJ�Ô$Ô2ÔJØÔÔ5ØÔ#ð
ð 
ð Œkð
ð 
ˆð
 �|Š|˜F°ˆ|Ñ<Ô<Ð<r0   c              ƒ  óÎ   K  — t                                d¦  «          | j        j        j        | j        j        | j        fi | j        ¤Ž}|                      ||¬¦  «        ƒ d{V —†S )zŽStop the async iterator.

        Stop the async iterator and raise a StopAsyncIteration exception with
        the stopped response.
        r™   rŒ   N)	rP   rš   r"   r›   rœ   r�   rR   r#   r—   rž   s      r.   r‡   zAgentExecutorIterator._astop†  s   è è € õ 	�ŠÐTÑUÔUÐUØJ�Ô$Ô2ÔJØÔÔ5ØÔ#ð
ð 
ð Œkð
ð 
ˆð
 —]’] 6°{�]ÑCÔCÐCÐCÐCÐCÐCÐCÐCr0   r|   r
   c                ó°   — | j                              || j        |¬¦  «        }|j        |d<   |                     |¦  «         |                      ||¦  «        S )z(Return the final output of the iterator.rŒ   rg   )r"   r�   rR   rg   Úon_chain_endrb   ©r-   r|   r\   Úreturned_outputs       r.   r�   zAgentExecutorIterator._return”  se   € ð Ô-×5Ò5ØØÔ#Ø#ð 6ñ 
ô 
ˆð
 '-¤oˆ˜
Ñ#Ø× Ò  Ñ1Ô1Ð1Ø×&Ò& ¸ÑDÔDÐDr0   c              ƒ  óÌ   K  — | j                              || j        |¬¦  «        ƒ d{V —†}|j        |d<   |                     |¦  «        ƒ d{V —† |                      ||¦  «        S )z.Return the final output of the async iterator.rŒ   Nrg   )r"   r—   rR   rg   r¡   rb   r¢   s       r.   r—   zAgentExecutorIterator._areturn£  s™   è è € ð !%Ô 3× <Ò <ØØÔ#Ø#ð !=ñ !
ô !
ð 
ð 
ð 
ð 
ð 
ð 
ˆð
 '-¤oˆ˜
Ñ#Ø×&Ò& Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ø×&Ò& ¸ÑDÔDÐDr0   r8   )r"   r   r#   r   r$   r   r   r%   r   r&   r   r'   r   r(   r    r)   r!   r)   )r3   r1   )r#   r   r3   r6   )r3   r   )r"   r   r3   r6   )r3   r<   )r3   r6   )rZ   r[   r\   r]   r3   r   )r-   r   r3   rc   )r3   r€   )r‰   rŠ   r\   r   r3   r   )r‰   rŠ   r\   r   r3   r   )r\   r   r3   r   )r\   r   r3   r   )r|   r
   r\   r   r3   r   )r|   r
   r\   r   r3   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r/   Ú__annotations__Úpropertyr#   Úsetterr"   rG   rN   r,   rY   rb   r   rˆ   rs   r„   rv   r‡   r�   r—   r?   r0   r.   r   r   (   ss  € € € € € € Ø%Ð%ð  $ð	&ð "&Ø*.Ø#Ø"Ø!&Ø#ð&ð &ð &ð &ð &ð &ðP ÐÐÑØÐÐÑØÐÐÑØ#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØÐÐÑàðð ð ñ „Xðð „]ð?ð ?ð ?ñ „]ð?ð ð$ð $ð $ñ „Xð$ð Ôð"ð "ð "ñ Ôð"ð
 ðGð Gð Gñ „XðGð ð
ð 
ð 
ñ „Xð
ð&ð &ð &ð &ð
ð 
ð 
ð 
ð ð  ð  ð  ð2>&ð >&ð >&ð >&ð@O-ð O-ð O-ð O-ðb?ð ?ð ?ð ?ð:?ð ?ð ?ð ?ð:=ð =ð =ð =ðDð Dð Dð DðEð Eð Eð EðEð Eð Eð Eð Eð Er0   r   ),Ú
__future__r   r†   ÚloggingrU   Úcollections.abcr   r   Útypingr   r   Úuuidr   Úlangchain_core.agentsr	   r
   r   Úlangchain_core.callbacksr   r   r   r   r   Úlangchain_core.load.dumpr   Úlangchain_core.outputsr   Úlangchain_core.runnables.utilsr   Úlangchain_core.toolsr   Úlangchain_core.utils.inputr   Úlangchain_classic.schemar   Ú#langchain_classic.utilities.asyncior   Úlangchain_classic.agents.agentr   r   Ú	getLoggerr¥   rP   r   r?   r0   r.   ú<module>r¼      s÷  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð ð ð +Ð *Ð *Ð *Ð *Ð *Ø *Ð *Ð *Ð *Ð *Ð *Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø )Ð )Ð )Ð )Ð )Ð )Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?àð MØLÐLÐLÐLÐLÐLÐLÐLà	ˆÔ	˜8Ñ	$Ô	$€ðHEð HEð HEð HEð HEñ HEô HEð HEð HEð HEr0   