§
    œŠtjC< ã                  óŒ  — d Z ddlmZ ddlZddlZddlZddlZddlmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZ dd
lm Z m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK ddlLmMZM e G d„ dee?         ¦  «        ¦   «         ZNeräddlOmPZPmQZQmRZR ddlSmTZTmUZU ddlVmWZW ddl"mXZX ddlYmZZZ ddl[m\Z\ ddl]m^Z^ ddl(m_Z_ ddl4m`Z` eQe;e7         eQe;e7         ge<f         ge<ez  e8z  f         ZaeQe;e7         eQe;e7         ge<f         geNf         ZbeQe;e7         eQe;e7         gePe<         f         gePe<ez  e8z           f         ZceQe;e7         eQe;e7         gePe<         f         gePeN         f         Zdd Zed! f                    ¦   «         Zgd¡d%„Zhg d&¢Zid¢d*„Zj	 d£d¤d/„Zkd¥d3„Zld¦d6„Zm ejn        d7¬8¦  «        d§d;„¦   «         Zod¨d?„Zp	 d£d©dF„ZqdªdI„Zrd«dN„Zs	 d£d¬dT„Ztd­dV„Zud®d\„Zvd¯d`„Zwd°dc„Zxe1	 d£dddddddddddeddddfœd±d}„¦   «         Zye1	 d£ddddddddddedddd~œd²d�„¦   «         Zye1	 d£dddddddddddeddddfœd³d…„¦   «         Zy	 d£dddddddddddeddddfœd´d‡„ZydµdŒ„Zzd¶d�„Z{d·d”„Z|d¸d•„Z}d¹d™„Z~dºdŸ„Zd gZ€dS )»z:Agent factory for creating agents with middleware support.é    )ÚannotationsN)Ú	dataclassÚfieldÚfields)ÚTYPE_CHECKINGÚ	AnnotatedÚAnyÚGenericÚcastÚget_argsÚ
get_originÚget_type_hints)ÚBaseChatModel)Ú	AIMessageÚ
AnyMessageÚSystemMessageÚToolMessage)ÚBaseTool)ÚRunnableCallable)ÚENDÚSTART)Ú
StateGraph)ÚToolCallTransformer)ÚToolNode)ÚCommandÚSend)Ú	traceable)ÚNotRequiredÚRequiredÚ	TypedDictÚoverload)ÚSubagentTransformer)ÚAgentMiddlewareÚ
AgentStateÚContextTÚExtendedModelResponseÚInputAgentStateÚJumpToÚModelRequestÚModelResponseÚOmitFromSchemaÚOutputAgentStateÚ	ResponseTÚ	StateT_coÚToolCallRequest)	ÚAutoStrategyÚMultipleStructuredOutputsErrorÚOutputToolBindingÚProviderStrategyÚProviderStrategyBindingÚResponseFormatÚStructuredOutputErrorÚStructuredOutputValidationErrorÚToolStrategy)Úinit_chat_modelc                  óB   — e Zd ZU dZded<   	  ee¬¦  «        Zded<   dS )Ú_ComposedExtendedModelResponsezíInternal result from composed `wrap_model_call` middleware.

    Unlike `ExtendedModelResponse` (user-facing, single command), this holds the
    full list of commands accumulated across all middleware layers during
    composition.
    zModelResponse[ResponseT]Úmodel_response)Údefault_factoryúlist[Command[Any]]ÚcommandsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   Úlistr?   © ó    úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain/agents/factory.pyr;   r;   ?   sK   € € € € € € ðð ð -Ð,Ð,Ñ,Ø(à#( 5¸Ð#>Ñ#>Ô#>€HÐ>Ð>Ð>Ñ>ØTÐTrG   r;   )Ú	AwaitableÚCallableÚSequence)ÚRunnableÚRunnableConfig)Ú	BaseCache)ÚCompiledStateGraph)ÚRuntime)Ú	BaseStore)ÚTransformerFactory)ÚCheckpointer)ÚToolCallWrapperz)Error: {error}
 Please fix your mistakes.aô  
Middleware added tools that the agent doesn't know how to execute.

Unknown tools: {unknown_tool_names}
Registered tools: {available_tool_names}

This happens when middleware modifies `request.tools` in `wrap_model_call` to include
tools that weren't passed to `create_agent()`.

How to fix this:

Option 1: Register tools at agent creation (recommended for most cases)
    Pass the tools to `create_agent(tools=[...])` or set them on `middleware.tools`.
    This makes tools available for every agent invocation.

Option 2: Handle dynamic tools in middleware (for tools created at runtime)
    Implement `wrap_tool_call` to execute tools that are added dynamically:

    class MyMiddleware(AgentMiddleware):
        def wrap_tool_call(self, request, handler):
            if request.tool_call["name"] == "dynamic_tool":
                # Execute the dynamic tool yourself or override with tool instance
                return handler(request.override(tool=my_dynamic_tool))
            return handler(request)
Úinputsúdict[str, Any]Úreturnc                óú   ‡— |                       ¦   «         }|                     dd¦  «         |                     d¦  «        Št          ‰t          t
          f¦  «        rˆfd„t          ‰¦  «        D ¦   «         |d<   |S )zMRemove `runtime` and `handler` from trace inputs before sending to LangSmith.ÚhandlerNÚrequestc                ó\   •— i | ](}|j         d k    ¯|j         t          ‰|j         ¦  «        “Œ)S )Úruntime)ÚnameÚgetattr)Ú.0ÚfÚreqs     €rH   ú
<dictcomp>z!_scrub_inputs.<locals>.<dictcomp>”   s<   ø€ ð 
ð 
ð 
Ø-.ÀÄÈ9ÒATÐATˆAŒF•G˜C ¤Ñ(Ô(ÐATÐATÐATrG   )ÚcopyÚpopÚgetÚ
isinstancer)   r/   r   )rU   Úfilteredra   s     @rH   Ú_scrub_inputsrh   Ž   s†   ø€ à�{Š{‰}Œ}€HØ‡L‚L�˜DÑ!Ô!Ð!Ø
�,Š,�yÑ
!Ô
!€CÝ�#�¥oÐ6Ñ7Ô7ð 
ð
ð 
ð 
ð 
Ý28¸±+´+ð
ñ 
ô 
ˆ�Ñð €OrG   )z(^|[/:.])gpt-4\.1($|[-/:])z(^|[/:.])gpt-4o($|[-/:])z(^|[/:.])gpt-5($|[-/:])z(^|[/:.])gpt-5\.1($|[-/:])z.(^|[/:.])gpt-5\.2(-\d{4}-\d{2}-\d{2})?($|[/:])z'(^|[/:.])gpt-5\.2-(chat|codex)($|[-/:])z(^|[/:.])gpt-5\.3($|[-/:])z.(^|[/:.])gpt-5\.4(-\d{4}-\d{2}-\d{2})?($|[/:])z&(^|[/:.])gpt-5\.4-(mini|nano)($|[-/:])z(^|[/:.])gpt-5\.5($|[-/:])zD(^|[/:.])claude-(fable|mythos)-5(?:-\d{8})?(?:-v\d(?::\d)?)?($|[/:])z=(^|[/:.])claude-haiku-4-5(?:-\d{8})?(?:-v\d(?::\d)?)?($|[/:])zD(^|[/:.])claude-opus-4-(5|6|7|8)(?:-\d{8})?(?:-v\d(?::\d)?)?($|[/:])zB(^|[/:.])claude-sonnet-4-(5|6)(?:-\d{8})?(?:-v\d(?::\d)?)?($|[/:])z(^|[/:.])grok-4($|[-.:/])z(^|[/:.])grok-build($|[-/:])Úresultú1ModelResponse | AIMessage | ExtendedModelResponser*   c                óŒ   — t          | t          ¦  «        rt          | gd¬¦  «        S t          | t          ¦  «        r| j        S | S )zôNormalize middleware return value to ModelResponse.

    At inner composition boundaries, `ExtendedModelResponse` is unwrapped to its
    underlying `ModelResponse` so that inner middleware always sees `ModelResponse`
    from the handler.
    N©ri   Ústructured_response)rf   r   r*   r&   r<   )ri   s    rH   Ú_normalize_to_model_responsern   ±   sM   € õ �&�)Ñ$Ô$ð HÝ V HÀ$ÐGÑGÔGÐGÝ�&Õ/Ñ0Ô0ð %ØÔ$Ð$Ø€MrG   r<   Úmiddleware_commandsúlist[Command[Any]] | Noner>   c                ó(  — d| j         i}| j        �
| j        |d<   |pg D ]J}|j        rd}t          |¦  «        ‚|j        rd}t          |¦  «        ‚|j        rd}t          |¦  «        ‚ŒKt          |¬¦  «        g}|                     |pg ¦  «         |S )a,  Build a list of Commands from a model response and middleware commands.

    The first Command contains the model response state (messages and optional
    structured_response). Middleware commands are appended as-is.

    Args:
        model_response: The model response containing messages and optional
            structured output.
        middleware_commands: Commands accumulated from middleware layers during
            composition (inner-first ordering).

    Returns:
        List of `Command` objects ready to be returned from a model node.
    ÚmessagesNrm   z‰Command goto is not yet supported in wrap_model_call middleware. Use the jump_to state field with before_model/after_model hooks instead.zBCommand resume is not yet supported in wrap_model_call middleware.zACommand graph is not yet supported in wrap_model_call middleware.)Úupdate)ri   rm   ÚgotoÚNotImplementedErrorÚresumeÚgraphr   Úextend)r<   ro   ÚstateÚcmdÚmsgr?   s         rH   Ú_build_commandsr|   Á   sÒ   € ð$ (¨Ô)>Ð?€EàÔ)Ð5Ø'5Ô'IˆÐ#Ñ$à"Ð( bð +ð +ˆØŒ8ð 	+ð[ð õ & cÑ*Ô*Ð*ØŒ:ð 	+ØVˆCÝ% cÑ*Ô*Ð*ØŒ9ð 	+ØUˆCÝ% cÑ*Ô*Ð*ð	+õ %,°5Ð$9Ñ$9Ô$9Ð#:€HØ‡O‚OÐ'Ð-¨2Ñ.Ô.Ð.Ø€OrG   Úhandlersú%Sequence[_ModelCallHandler[ContextT]]ú*_ComposedModelCallHandler[ContextT] | Nonec                óî   ‡‡— | sdS 	 ddd„Št          | ¦  «        d	k    r| d
         Šdˆˆfd„}|S dˆfd„} || d         | d         ¦  «        }t          | dd…         ¦  «        D ]} |||¦  «        }Œ|S )a  Compose multiple `wrap_model_call` handlers into single middleware stack.

    Composes handlers so first in list becomes outermost layer. Each handler receives a
    handler callback to execute inner layers. Commands from each layer are accumulated
    into a list (inner-first, then outer) without merging.

    Args:
        handlers: List of handlers.

            First handler wraps all others.

    Returns:
        Composed handler returning `_ComposedExtendedModelResponse`,
        or `None` if handlers empty.
    Nri   úRModelResponse | AIMessage | ExtendedModelResponse | _ComposedExtendedModelResponseÚextra_commandsrp   rW   r;   c                óN  — t          |pg ¦  «        }t          | t          ¦  «        r"|                     | j        ¦  «         | j        }nMt          | t          ¦  «        r)| j        }| j        �|                     | j        ¦  «         nt          | ¦  «        }t          ||¬¦  «        S ©z?Normalize any handler result to _ComposedExtendedModelResponse.N)r<   r?   ©
rE   rf   r;   rx   r?   r<   r&   ÚcommandÚappendrn   ©ri   r‚   r?   r<   s       rH   Ú_to_composed_resultz7_chain_model_call_handlers.<locals>._to_composed_result   ó¢   € õ
 (,¨NÐ,@¸bÑ'AÔ'AˆÝ�fÕ<Ñ=Ô=ð 	BØ�OŠO˜FœOÑ,Ô,Ð,Ø#Ô2ˆNˆNÝ˜Õ 5Ñ6Ô6ð 	BØ#Ô2ˆNØŒ~Ð)Ø—’ ¤Ñ/Ô/Ð/øå9¸&ÑAÔAˆNå-¸^ÐV^Ð_Ñ_Ô_Ð_rG   é   r   rZ   úModelRequest[ContextT]rY   ú1Callable[[ModelRequest[ContextT]], ModelResponse]c                ó.   •—  ‰ ‰| |¦  «        ¦  «        S ©NrF   ©rZ   rY   r‰   Úsingle_handlers     €€rH   Únormalized_singlez5_chain_model_call_handlers.<locals>.normalized_single  s"   ø€ ð 'Ð& ~ ~°g¸wÑ'GÔ'GÑHÔHÐHrG   ÚouterúA_ModelCallHandler[ContextT] | _ComposedModelCallHandler[ContextT]Úinnerú#_ComposedModelCallHandler[ContextT]c                ó   •‡ ‡— dˆˆˆ fd„}|S )	z-Compose two handlers where outer wraps inner.rZ   rŒ   rY   r�   rW   r;   c                óR   •‡‡— g Šdˆˆˆfd„} ‰| |¦  «        } ‰|‰pd ¬¦  «        S )Nra   rŒ   rW   r*   c                óH  •— ‰                      ¦   «           ‰| ‰¦  «        }t          |t          ¦  «        r!‰                     |j        ¦  «         |j        S t          |t          ¦  «        r(|j        �‰                     |j        ¦  «         |j        S t          |¦  «        S r�   ©
Úclearrf   r;   rx   r?   r<   r&   r†   r‡   rn   ©ra   Úinner_resultÚaccumulated_commandsrY   r•   s     €€€rH   Úinner_handlerzX_chain_model_call_handlers.<locals>.compose_two.<locals>.composed.<locals>.inner_handler*  s£   ø€ à$×*Ò*Ñ,Ô,Ð,Ø$˜u S¨'Ñ2Ô2�Ý˜lÕ,JÑKÔKð 7Ø(×/Ò/°Ô0EÑFÔFÐFØ'Ô6Ð6Ý˜lÕ,AÑBÔBð 7Ø#Ô+Ð7Ø,×3Ò3°LÔ4HÑIÔIÐIØ'Ô6Ð6Ý3°LÑAÔAÐArG   ©r‚   ©ra   rŒ   rW   r*   rF   ©rZ   rY   rŸ   Úouter_resultrž   r‰   r•   r“   s    `  @€€€rH   ÚcomposedzA_chain_model_call_handlers.<locals>.compose_two.<locals>.composed#  su   øøø€ ð
 8:Ð ðBð Bð Bð Bð Bð Bð Bð Bð !˜5 ¨-Ñ8Ô8ˆLØ&Ð&ØØ3Ð;°tðñ ô ð rG   ©rZ   rŒ   rY   r�   rW   r;   rF   ©r“   r•   r¤   r‰   s   `` €rH   Úcompose_twoz/_chain_model_call_handlers.<locals>.compose_two  ó4   øøø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð4 ˆrG   éþÿÿÿéÿÿÿÿr�   ©ri   r�   r‚   rp   rW   r;   r¥   )r“   r”   r•   r”   rW   r–   ©ÚlenÚreversed©r}   r’   r§   Úcomposed_handlerÚhr‰   r‘   s        @@rH   Ú_chain_model_call_handlersr²   ë   sú   øø€ ð$ ð Øˆtð 59ð`ð `ð `ð `ð `õ$ ˆ8�}„}˜ÒÐØ! !œˆð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið !Ð ð ð  ð  ð  ð  ð  ðF #�{ 8¨B¤<°¸"´Ñ>Ô>ÐÝ�h˜s ˜s”mÑ$Ô$ð <ð <ˆØ&˜; qÐ*:Ñ;Ô;ÐÐàÐrG   ú*Sequence[_AsyncModelCallHandler[ContextT]]ú/_ComposedAsyncModelCallHandler[ContextT] | Nonec                óî   ‡‡— | sdS 	 ddd„Št          | ¦  «        d	k    r| d
         Šdˆˆfd„}|S dˆfd„} || d         | d         ¦  «        }t          | dd…         ¦  «        D ]} |||¦  «        }Œ|S )a�  Compose multiple async `wrap_model_call` handlers into single middleware stack.

    Commands from each layer are accumulated into a list (inner-first, then outer)
    without merging.

    Args:
        handlers: List of async handlers.

            First handler wraps all others.

    Returns:
        Composed async handler returning `_ComposedExtendedModelResponse`,
        or `None` if handlers empty.
    Nri   r�   r‚   rp   rW   r;   c                óN  — t          |pg ¦  «        }t          | t          ¦  «        r"|                     | j        ¦  «         | j        }nMt          | t          ¦  «        r)| j        }| j        �|                     | j        ¦  «         nt          | ¦  «        }t          ||¬¦  «        S r„   r…   rˆ   s       rH   r‰   z=_chain_async_model_call_handlers.<locals>._to_composed_result[  rŠ   rG   r‹   r   rZ   rŒ   rY   ú<Callable[[ModelRequest[ContextT]], Awaitable[ModelResponse]]c              “  ó>   •K  —  ‰ ‰| |¦  «        ƒ d {V —†¦  «        S r�   rF   r�   s     €€rH   r’   z;_chain_async_model_call_handlers.<locals>.normalized_singlep  s8   øè è € ð 'Ð&¨^¨^¸GÀWÑ-MÔ-MÐ'MÐ'MÐ'MÐ'MÐ'MÐ'MÑNÔNÐNrG   r“   úK_AsyncModelCallHandler[ContextT] | _ComposedAsyncModelCallHandler[ContextT]r•   ú(_ComposedAsyncModelCallHandler[ContextT]c                ó   •‡ ‡— dˆˆˆ fd„}|S )	z3Compose two async handlers where outer wraps inner.rZ   rŒ   rY   r·   rW   r;   c              “  ób   •‡‡K  — g Šdˆˆˆfd„} ‰| |¦  «        ƒ d {V —†} ‰|‰pd ¬¦  «        S )Nra   rŒ   rW   r*   c              “  óX  •K  — ‰                      ¦   «           ‰| ‰¦  «        ƒ d {V —†}t          |t          ¦  «        r!‰                     |j        ¦  «         |j        S t          |t          ¦  «        r(|j        �‰                     |j        ¦  «         |j        S t          |¦  «        S r�   rš   rœ   s     €€€rH   rŸ   z^_chain_async_model_call_handlers.<locals>.compose_two.<locals>.composed.<locals>.inner_handler…  s¹   øè è € à$×*Ò*Ñ,Ô,Ð,Ø%* U¨3°Ñ%8Ô%8Ð8Ð8Ð8Ð8Ð8Ð8�Ý˜lÕ,JÑKÔKð 7Ø(×/Ò/°Ô0EÑFÔFÐFØ'Ô6Ð6Ý˜lÕ,AÑBÔBð 7Ø#Ô+Ð7Ø,×3Ò3°LÔ4HÑIÔIÐIØ'Ô6Ð6Ý3°LÑAÔAÐArG   r    r¡   rF   r¢   s    `  @€€€rH   r¤   zG_chain_async_model_call_handlers.<locals>.compose_two.<locals>.composed~  s‹   øøøè è € ð
 8:Ð ðBð Bð Bð Bð Bð Bð Bð Bð "'  w°Ñ!>Ô!>Ð>Ð>Ð>Ð>Ð>Ð>ˆLØ&Ð&ØØ3Ð;°tðñ ô ð rG   ©rZ   rŒ   rY   r·   rW   r;   rF   r¦   s   `` €rH   r§   z5_chain_async_model_call_handlers.<locals>.compose_twox  r¨   rG   r©   rª   r�   r«   r¾   )r“   r¹   r•   r¹   rW   rº   r¬   r¯   s        @@rH   Ú _chain_async_model_call_handlersr¿   G  sú   øø€ ð" ð Øˆtð 59ð`ð `ð `ð `ð `õ$ ˆ8�}„}˜ÒÐØ! !œˆð	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð !Ð ð ð  ð  ð  ð  ð  ðF #�{ 8¨B¤<°¸"´Ñ>Ô>ÐÝ�h˜s ˜s”mÑ$Ô$ð <ð <ˆØ&˜; qÐ*:Ñ;Ô;ÐÐàÐrG   éd   )ÚmaxsizeÚschemaÚtypec                ó$   — t          | d¬¦  «        S )z&Return cached type hints for a schema.T)Úinclude_extras)r   ©rÂ   s    rH   Ú_get_schema_type_hintsrÇ   ¢  s   € õ ˜&°Ð6Ñ6Ô6Ð6rG   Úschemasú
list[type]útuple[type, type, type]c                ó~   — d„ | D ¦   «         }t          |dd¦  «        t          |dd¦  «        t          |dd¦  «        fS )u/  Resolve state, input, and output schemas for the given schemas.

    Schemas are merged in list order; later entries override earlier ones when the
    same field is declared by multiple schemas.  Duplicates are harmless â€” a type
    that appears more than once is processed at its last position.
    c                ó.   — i | ]}|t          |¦  «        “ŒS rF   )rÇ   )r_   rÂ   s     rH   rb   z$_resolve_schemas.<locals>.<dictcomp>¯  s#   € ÐQÐQÐQ¸v�FÕ2°6Ñ:Ô:ÐQÐQÐQrG   ÚStateSchemaNÚInputSchemaÚinputÚOutputSchemaÚoutput)Ú_resolve_schema)rÈ   Úschema_hintss     rH   Ú_resolve_schemasrÔ   ¨  sO   € ð RÐQÈÐQÑQÔQ€Lå˜ m°TÑ:Ô:Ý˜ m°WÑ=Ô=Ý˜ n°hÑ?Ô?ðð rG   rÓ   údict[type, dict[str, Any]]Úschema_nameÚstrÚ	omit_flagú
str | Nonec                ó8  — i }|                       ¦   «         D ]f}|                     ¦   «         D ]O\  }}d}|r?t          |¦  «        }|D ]-}	t          |	t          ¦  «        rt          |	|¦  «        du rd} nŒ.|s|||<   ŒPŒgt          dt          ||¦  «        ¦  «        S )au  Resolve schema by merging schemas and optionally respecting `OmitFromSchema` annotations.

    Args:
        schema_hints: Resolved schema annotations to merge
        schema_name: Name for the generated `TypedDict`
        omit_flag: If specified, omit fields with this flag set (`'input'` or
            `'output'`)

    Returns:
        Merged schema as `TypedDict`
    FTrÃ   )ÚvaluesÚitemsÚ_extract_metadatarf   r+   r^   r   r    )
rÓ   rÖ   rØ   Úall_annotationsÚhintsÚ
field_nameÚ
field_typeÚshould_omitÚmetadataÚmetas
             rH   rÒ   rÒ   ·  sÏ   € ð  €Oà×$Ò$Ñ&Ô&ð 9ð 9ˆØ&+§k¢k¡m¤mð 	9ð 	9Ñ"ˆJ˜
ØˆKàð Ý,¨ZÑ8Ô8�Ø$ð ð �DÝ! $­Ñ7Ô7ð ½GÀDÈ)Ñ<TÔ<TÐX\Ð<\Ð<\Ø&*˜Ø˜øàð 9Ø.8� 
Ñ+øð	9õ ��	 +¨Ñ?Ô?Ñ@Ô@Ð@rG   Útype_ú	list[Any]c                óT  — t          | ¦  «        t          t          hv rPt          | ¦  «        d         }t          |¦  «        t          u r$t          t          |¦  «        dd…         ¦  «        S n:t          | ¦  «        t          u r$t          t          | ¦  «        dd…         ¦  «        S g S )z_Extract metadata from a field type, handling `Required`/`NotRequired` and `Annotated` wrappers.r   r‹   N)r   r   r   r   r   rE   )rå   Ú
inner_types     rH   rÝ   rÝ   Ü  sš   € õ �%ÑÔ�X¥{Ð3Ð3Ð3Ý˜e‘_”_ QÔ'ˆ
Ý�jÑ!Ô!¥YÐ.Ð.Ý� Ñ,Ô,¨Q¨R¨RÔ0Ñ1Ô1Ð1ð /õ 
�EÑ	Ô	�iÐ	'Ð	'Ý•H˜U‘O”O A B BÔ'Ñ(Ô(Ð(à€IrG   Ú
middlewareúAgentMiddleware[Any, Any]Ú	hook_nameúlist[JumpTo]c                ón  — t          t          |d¦  «        }t          t          d|› �d¦  «        }t          | j        |d¦  «        }|r)||ur%t          |d¦  «        rt	          d|j        ¦  «        S t          | j        d|› �d¦  «        }|r)||ur%t          |d¦  «        rt	          d|j        ¦  «        S g S )a+  Get the `can_jump_to` list from either sync or async hook methods.

    Args:
        middleware: The middleware instance to inspect.
        hook_name: The name of the hook (`'before_model'` or `'after_model'`).

    Returns:
        List of jump destinations, or empty list if not configured.
    NÚaÚ__can_jump_to__rì   )r^   r#   Ú	__class__Úhasattrr   rï   )ré   rë   Úbase_sync_methodÚbase_async_methodÚsync_methodÚasync_methods         rH   Ú_get_can_jump_torö   ë  sß   € õ �°	¸4Ñ@Ô@ÐÝ¥°°Y°°À$ÑGÔGÐõ ˜*Ô.°	¸4Ñ@Ô@€KàðAàÐ/Ð/Ð/Ý�KÐ!2Ñ3Ô3ð 0õ �N KÔ$?Ñ@Ô@Ð@õ ˜:Ô/°°Y°°À$ÑGÔG€LàðBàÐ 1Ð1Ð1Ý�LÐ"3Ñ4Ô4ð 2õ �N LÔ$@ÑAÔAÐAà€IrG   Úmodelústr | BaseChatModelÚtoolsú&list[BaseTool | dict[str, Any]] | NoneÚboolc                óÖ  ‡— dŠt          | t          ¦  «        r| Šn«t          | t          ¦  «        r–t          | dd¦  «        p!t          | dd¦  «        pt          | dd¦  «        Š| j        }|�Z|                     d¦  «        rE|rAt          ‰t          ¦  «        r,d‰                     ¦   «         v rd‰                     ¦   «         vsd	S ‰r t          ˆfd
„t          D ¦   «         ¦  «        ndS )a˜  Check if a model supports provider-specific structured output.

    Args:
        model: Model name string or `BaseChatModel` instance.
        tools: Optional list of tools provided to the agent.

            Needed because some models don't support structured output together with tool calling.

    Returns:
        `True` if the model supports provider-specific structured output, `False` otherwise.
    NÚ
model_namer÷   Úmodel_idÚ Ústructured_outputÚgeminizgemini-3Tc              3  óf   •K  — | ]+}t          j        |‰                     ¦   «         ¦  «        V — Œ,d S r�   )ÚreÚsearchÚlower)r_   Úpatternrý   s     €rH   ú	<genexpr>z._supports_provider_strategy.<locals>.<genexpr>7  sO   øè è € ð 
ð 
àõ ŒI�g˜z×/Ò/Ñ1Ô1Ñ2Ô2ð
ð 
ð 
ð 
ð 
ð 
rG   F)	rf   r×   r   r^   Úprofilere   r  ÚanyÚ&FALLBACK_MODELS_WITH_STRUCTURED_OUTPUT)r÷   rù   Úmodel_profilerý   s      @rH   Ú_supports_provider_strategyr    s7  ø€ ð "€JÝ�%�ÑÔð Øˆ
ˆ
Ý	�E�=Ñ	)Ô	)ð å�E˜<¨Ñ.Ô.ð .Ý�u˜g tÑ,Ô,ð.å�u˜j¨"Ñ-Ô-ð 	ð
 œˆàÐ%Ø×!Ò!Ð"5Ñ6Ô6ð &ð
 ð &õ ˜z­3Ñ/Ô/ð &ð  
× 0Ò 0Ñ 2Ô 2Ð2Ð2Ø j×&6Ò&6Ñ&8Ô&8Ð8Ð8ð �4ð ð		�ð 
ð 
ð 
ð 
åAð
ñ 
ô 
ñ 	
ô 	
ð 	
ð
 ðrG   r   c                óz   — 	 t          j        d¦  «        }n# t          $ r Y dS w xY wt          | |j        ¦  «        S )a–  Check if a model inherits from `BaseChatOpenAI`.

    Used to redundantly set `strict=True` on tools when `response_format` is
    provided, as older versions of `langchain-openai` do not auto-set it.
    Covers `ChatOpenAI`, `ChatDeepSeek`, `ChatXAI`, etc.

    Args:
        model: The chat model to check.

    Returns:
        `True` if the model inherits from `BaseChatOpenAI`, `False` otherwise.
    z!langchain_openai.chat_models.baseF)Ú	importlibÚimport_moduleÚImportErrorrf   ÚBaseChatOpenAI)r÷   Úbase_chat_openais     rH   Ú_is_openai_compatible_modelr  @  sR   € ðÝ$Ô2Ð3VÑWÔWÐÐøÝð ð ð Øˆuˆuðøøøå�eÐ-Ô<Ñ=Ô=Ð=s   ‚ —
%¤%Ú	exceptionÚ	ExceptionÚresponse_formatúResponseFormat[Any]útuple[bool, str]c                óx  ‡ — t          |t          ¦  «        sdS |j        }|du rdS |du r*dt                               t          ‰ ¦  «        ¬¦  «        fS t          |t
          ¦  «        rd|fS t          |t          ¦  «        rQt          |t          ¦  «        r:t          ‰ |¦  «        r*dt                               t          ‰ ¦  «        ¬¦  «        fS dS t          |t          ¦  «        rGt          ˆ fd„|D ¦   «         ¦  «        r*dt                               t          ‰ ¦  «        ¬¦  «        fS dS d |‰ ¦  «        fS )zWHandle structured output error.

    Returns `(should_retry, retry_tool_message)`.
    )Frÿ   FT)Úerrorc              3  ó8   •K  — | ]}t          ‰|¦  «        V — Œd S r�   )rf   )r_   Úexc_typer  s     €rH   r  z2_handle_structured_output_error.<locals>.<genexpr>l  s-   øè è € ÐMÐM°8�z˜) XÑ.Ô.ÐMÐMÐMÐMÐMÐMrG   )rf   r8   Úhandle_errorsÚ STRUCTURED_OUTPUT_ERROR_TEMPLATEÚformatr×   rÃ   Ú
issubclassr  Útupler	  )r  r  r  s   `  rH   Ú_handle_structured_output_errorr"  T  sS  ø€ õ �o¥|Ñ4Ô4ð Øˆyà#Ô1€Mà˜ÐÐØˆyØ˜ÐÐØÕ5×<Ò<Å3ÀyÁ>Ä>Ð<ÑRÔRÐRÐRÝ�-¥Ñ%Ô%ð #Ø�]Ð"Ð"Ý�-¥Ñ&Ô&ð Ý�m¥YÑ/Ô/ð 	WµJ¸yÈ-Ñ4XÔ4Xð 	WØÕ9×@Ò@ÅsÈ9Á~Ä~Ð@ÑVÔVÐVÐVØˆyÝ�-¥Ñ'Ô'ð ÝÐMÐMÐMÐM¸}ÐMÑMÔMÑMÔMð 	WØÕ9×@Ò@ÅsÈ9Á~Ä~Ð@ÑVÔVÐVÐVØˆyØ��˜yÑ)Ô)Ð)Ð)rG   ÚwrappersúSequence[ToolCallWrapper]úToolCallWrapper | Nonec                ó¨   — | sdS t          | ¦  «        dk    r| d         S d
d„}| d	         }t          | dd	…         ¦  «        D ]} |||¦  «        }Œ|S )a–  Compose wrappers into middleware stack (first = outermost).

    Args:
        wrappers: Wrappers in middleware order.

    Returns:
        Composed wrapper, or `None` if empty.

    Example:
        ```python
        wrapper = _chain_tool_call_wrappers([auth, cache, retry])
        # Request flows: auth -> cache -> retry -> tool
        # Response flows: tool -> retry -> cache -> auth
        ```
    Nr‹   r   r“   rT   r•   rW   c                ó   ‡ ‡— dˆˆ fd„}|S )	z-Compose two wrappers where outer wraps inner.rZ   r/   Úexecuteú7Callable[[ToolCallRequest], ToolMessage | Command[Any]]rW   úToolMessage | Command[Any]c                ó,   •‡— dˆˆfd„} ‰| |¦  «        S )Nra   r/   rW   r*  c                ó   •—  ‰| ‰¦  «        S r�   rF   ©ra   r(  r•   s    €€rH   Ú
call_innerzT_chain_tool_call_wrappers.<locals>.compose_two.<locals>.composed.<locals>.call_inner’  s   ø€ Ø�u˜S 'Ñ*Ô*Ð*rG   ©ra   r/   rW   r*  rF   ©rZ   r(  r.  r•   r“   s    ` €€rH   r¤   z@_chain_tool_call_wrappers.<locals>.compose_two.<locals>.composed�  s;   øø€ ð
+ð +ð +ð +ð +ð +ð +ð �5˜ *Ñ-Ô-Ð-rG   )rZ   r/   r(  r)  rW   r*  rF   ©r“   r•   r¤   s   `` rH   r§   z._chain_tool_call_wrappers.<locals>.compose_twoŠ  s.   øø€ ð		.ð 		.ð 		.ð 		.ð 		.ð 		.ð 		.ð ˆrG   rª   )r“   rT   r•   rT   rW   rT   r¬   ©r#  r§   ri   Úwrappers       rH   Ú_chain_tool_call_wrappersr4  r  s‚   € ð$ ð Øˆtå
ˆ8�}„}˜ÒÐØ˜Œ{Ððð ð ð ð" �bŒ\€FÝ˜H S b SœMÑ*Ô*ð .ð .ˆØ�˜W fÑ-Ô-ˆˆà€MrG   ú�Sequence[Callable[[ToolCallRequest, Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]]], Awaitable[ToolMessage | Command[Any]]]]ú�Callable[[ToolCallRequest, Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]]], Awaitable[ToolMessage | Command[Any]]] | Nonec                ó¨   — | sdS t          | ¦  «        dk    r| d         S d
d„}| d	         }t          | dd	…         ¦  «        D ]} |||¦  «        }Œ|S )zÉCompose async wrappers into middleware stack (first = outermost).

    Args:
        wrappers: Async wrappers in middleware order.

    Returns:
        Composed async wrapper, or `None` if empty.
    Nr‹   r   r“   ú†Callable[[ToolCallRequest, Callable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]]], Awaitable[ToolMessage | Command[Any]]]r•   rW   c                ó   ‡ ‡— dˆˆ fd„}|S )	z3Compose two async wrappers where outer wraps inner.rZ   r/   r(  úBCallable[[ToolCallRequest], Awaitable[ToolMessage | Command[Any]]]rW   r*  c              “  ó<   •‡K  — dˆˆfd„} ‰| |¦  «        ƒ d {V —†S )Nra   r/   rW   r*  c              “  ó,   •K  —  ‰| ‰¦  «        ƒ d {V —†S r�   rF   r-  s    €€rH   r.  zZ_chain_async_tool_call_wrappers.<locals>.compose_two.<locals>.composed.<locals>.call_innerÒ  s+   øè è € Ø"˜U 3¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0rG   r/  rF   r0  s    ` €€rH   r¤   zF_chain_async_tool_call_wrappers.<locals>.compose_two.<locals>.composedÍ  sQ   øøè è € ð
1ð 1ð 1ð 1ð 1ð 1ð 1ð ˜˜w¨
Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3rG   )rZ   r/   r(  r:  rW   r*  rF   r1  s   `` rH   r§   z4_chain_async_tool_call_wrappers.<locals>.compose_two¾  s.   øø€ ð		4ð 		4ð 		4ð 		4ð 		4ð 		4ð 		4ð ˆrG   rª   )r“   r8  r•   r8  rW   r8  r¬   r2  s       rH   Ú_chain_async_tool_call_wrappersr=  ¢  s‚   € ð, ð Øˆtå
ˆ8�}„}˜ÒÐØ˜Œ{Ððð ð ð ð: �bŒ\€FÝ˜H S b SœMÑ*Ô*ð .ð .ˆØ�˜W fÑ-Ô-ˆˆà€MrG   rF   F)Úsystem_promptré   r  Ústate_schemaÚcontext_schemaÚcheckpointerÚstoreÚinterrupt_beforeÚinterrupt_afterÚdebugr]   ÚcacheÚtransformersú?Sequence[BaseTool | Callable[..., Any] | dict[str, Any]] | Noner>  ústr | SystemMessage | Noneú.Sequence[AgentMiddleware[StateT_co, ContextT]]ÚNoner?  r@  útype[ContextT] | NonerA  úCheckpointer | NonerB  úBaseStore | NonerC  úlist[str] | NonerD  rE  r]   rF  úBaseCache[Any] | NonerG  ú#Sequence[TransformerFactory] | NoneúUCompiledStateGraph[AgentState[Any], ContextT, InputAgentState, OutputAgentState[Any]]c               ó   — d S r�   rF   ©r÷   rù   r>  ré   r  r?  r@  rA  rB  rC  rD  rE  r]   rF  rG  s                  rH   Úcreate_agentrU  ã  s   € ð$ ]`Ð\_rG   )r>  ré   r?  r@  rA  rB  rC  rD  rE  r]   rF  rG  ú'type[AgentState[dict[str, Any]]] | NoneúkCompiledStateGraph[AgentState[dict[str, Any]], ContextT, InputAgentState, OutputAgentState[dict[str, Any]]]c               ó   — d S r�   rF   rT  s                  rH   rU  rU  ù  ó	   € ð( €3rG   ú2ResponseFormat[ResponseT] | type[ResponseT] | Noneú"type[AgentState[ResponseT]] | NoneúaCompiledStateGraph[AgentState[ResponseT], ContextT, InputAgentState, OutputAgentState[ResponseT]]c               ó   — d S r�   rF   rT  s                  rH   rU  rU    rY  rG   úCResponseFormat[ResponseT] | type[ResponseT] | dict[str, Any] | Nonec               óF  ‡ ‡‡B‡C‡D‡E‡F‡G‡H‡I‡J‡K‡L‡M‡N‡O— t          ‰ t          ¦  «        rt          ‰ ¦  «        Š dŠK|�(t          |t          ¦  «        r|ŠKnt          |¬¦  «        ŠK|€g }|€dŠIn5t          |t          t
          t          f¦  «        r|ŠInt          |¬¦  «        ŠIdŠMt          ‰It          ¦  «        rt	          ‰Ij        ¬¦  «        ŠMnt          ‰It          ¦  «        r‰IŠMi ŠJ‰Mr-‰Mj        D ]%}t          j
        |¦  «        }|‰J|j        j        <   Œ&d„ |D ¦   «         }d„ |D ¦   «         }dŠO|rd„ |D ¦   «         }t          |¦  «        ŠOd„ |D ¦   «         }dŠG|rd„ |D ¦   «         }t          |¦  «        ŠGdŠLd	„ |D ¦   «         }d
„ |D ¦   «         }||z   }|s‰Os‰Grt          |‰O‰G¬¦  «        ndŠL‰Lr*t!          ‰Lj                             ¦   «         ¦  «        |z   ŠHnt!          |¦  «        ŠHt'          d„ |D ¦   «         ¦  «        t'          |¦  «        k    rd}t)          |¦  «        ‚d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }d„ |D ¦   «         }dŠN|rd„ |D ¦   «         } t+          | ¦  «        ŠNdŠF|rd„ |D ¦   «         }!t-          |!¦  «        ŠF|�|nt.          }"g d„ |D ¦   «         ¢|"‘}#t1          |#¦  «        \  }$}%}&t3          |$|%|&|¬¦  «        }'dKˆJfd„ŠEdLˆGˆIˆJˆLˆMˆOfd"„ŠDdMˆDˆEˆfd$„ŠCdNˆCˆHˆIˆ ˆKˆNfd*„}(dMˆDˆEˆfd+„ŠBdNˆBˆFˆHˆIˆ ˆKfd,„})|'                     d-t7          |(|)d.¬/¦  «        ¦  «         ‰L�|'                     d0‰L¦  «         |D �]“}*|*j        j        t<          j        us|*j        j        t<          j        urt|*j        j        t<          j        ur|*j        nd}+|*j        j        t<          j        ur|*j        nd},t7          |+|,d.¬/¦  «        }-|'                     |*j        › d1�|-|$¬2¦  «         |*j        j         t<          j         us|*j        j!        t<          j!        urt|*j        j         t<          j         ur|*j         nd}.|*j        j!        t<          j!        ur|*j!        nd}/t7          |.|/d.¬/¦  «        }0|'                     |*j        › d3�|0|$¬2¦  «         |*j        j"        t<          j"        us|*j        j#        t<          j#        urt|*j        j"        t<          j"        ur|*j"        nd}1|*j        j#        t<          j#        ur|*j#        nd}2t7          |1|2d.¬/¦  «        }3|'                     |*j        › d4�|3|$¬2¦  «         |*j        j$        t<          j$        us|*j        j%        t<          j%        urt|*j        j$        t<          j$        ur|*j$        nd}4|*j        j%        t<          j%        ur|*j%        nd}5t7          |4|5d.¬/¦  «        }6|'                     |*j        › d5�|6|$¬2¦  «         �Œ•|r|d6         j        › d1�}7n|r|d6         j        › d3�}7nd-}7|r|d6         j        › d3�}8nd-}8|r|d6         j        › d4�}9nd-}9|r|d7         j        › d5�}:ntL          }:|' '                    tP          |7¦  «         ‰L�Ù|8g};tS          d8„ ‰Lj                             ¦   «         D ¦   «         ¦  «        s‰Jr|; *                    |:¦  «         |' +                    d0t7          tY          ‰L|8‰J|:¬9¦  «        d.¬/¦  «        |;¦  «         d0|:g}<|s|9d-k    r|< *                    |8¦  «         |' +                    |9t7          t[          |8‰J|:¬:¦  «        d.¬/¦  «        |<¦  «         nŸt'          ‰J¦  «        d6k    r8|' +                    |9t7          t]          |8|:¬;¦  «        d.¬/¦  «        |8|:g¦  «         nT|9d-k    r|' '                    |9|:¦  «         n7t_          |'|d6         j        › d4�|:|8|:ta          |d6         d<¦  «        ¬=¦  «         |r„tc          j2        |¦  «        D ]8\  }=}>t_          |'|=j        › d1�|>j        › d1�|8|:ta          |=d>¦  «        ¬=¦  «         Œ9t_          |'|d7         j        › d1�|8|8|:ta          |d7         d>¦  «        ¬=¦  «         |r„tc          j2        |¦  «        D ]8\  }=}>t_          |'|=j        › d3�|>j        › d3�|8|:ta          |=d?¦  «        ¬=¦  «         Œ9t_          |'|d7         j        › d3�d-|8|:ta          |d7         d?¦  «        ¬=¦  «         |rŽ|' '                    d-|d7         j        › d4�¦  «         tg          t'          |¦  «        d@z
  d6d7¦  «        D ]H}?||?         }=||?d@z
           }>t_          |'|=j        › d4�|>j        › d4�|8|:ta          |=d<¦  «        ¬=¦  «         ŒI|r¦tg          t'          |¦  «        d@z
  d6d7¦  «        D ]H}?||?         }=||?d@z
           }>t_          |'|=j        › d5�|>j        › d5�|8|:ta          |=dA¦  «        ¬=¦  «         ŒIt_          |'|d6         j        › d5�tL          |8|:ta          |d6         dA¦  «        ¬=¦  «         dBdCi}@dDdEi|@dF<   ‰r‰|@dF         dG<   dH„ |D ¦   «         }A|' 4                    |||	|
|‰|tj          tl          g|A¢|pdI¢¬J¦  «         7                    |@¦  «        S )Oa'  Creates an agent graph that calls tools in a loop until a stopping condition is met.

    For more details on using `create_agent`,
    visit the [Agents](https://docs.langchain.com/oss/python/langchain/agents) docs.

    Args:
        model: The language model for the agent.

            Can be a string identifier (e.g., `"openai:gpt-5.5"`) or a direct chat model
            instance (e.g., [`ChatOpenAI`][langchain_openai.ChatOpenAI] or other another
            [LangChain chat model](https://docs.langchain.com/oss/python/integrations/chat)).

            For a full list of supported model strings, see
            [`init_chat_model`][langchain.chat_models.init_chat_model(model_provider)].

            !!! tip ""

                See the [Models](https://docs.langchain.com/oss/python/langchain/models)
                docs for more information.
        tools: A list of tools, `dict`, or `Callable`.

            If `None` or an empty list, the agent will consist of a model node without a
            tool calling loop.


            !!! tip ""

                See the [Tools](https://docs.langchain.com/oss/python/langchain/tools)
                docs for more information.
        system_prompt: An optional system prompt for the LLM.

            Can be a `str` (which will be converted to a `SystemMessage`) or a
            `SystemMessage` instance directly. The system message is added to the
            beginning of the message list when calling the model.
        middleware: A sequence of middleware instances to apply to the agent.

            Middleware can intercept and modify agent behavior at various stages.

            !!! tip ""

                See the [Middleware](https://docs.langchain.com/oss/python/langchain/middleware)
                docs for more information.
        response_format: An optional configuration for structured responses.

            Can be a `ToolStrategy`, `ProviderStrategy`, or a Pydantic model class.

            If provided, the agent will handle structured output during the
            conversation flow.

            Raw schemas will be wrapped in an appropriate strategy based on model
            capabilities.

            !!! tip ""

                See the [Structured output](https://docs.langchain.com/oss/python/langchain/structured-output)
                docs for more information.
        state_schema: An optional `TypedDict` schema that extends `AgentState`.

            When provided, this schema is used instead of `AgentState` as the base
            schema for merging with middleware state schemas. This allows users to
            add custom state fields without needing to create custom middleware.

            Generally, it's recommended to use `state_schema` extensions via middleware
            to keep relevant extensions scoped to corresponding hooks / tools.
        context_schema: An optional schema for runtime context.
        checkpointer: An optional checkpoint saver object.

            Used for persisting the state of the graph (e.g., as chat memory) for a
            single thread (e.g., a single conversation).
        store: An optional store object.

            Used for persisting data across multiple threads (e.g., multiple
            conversations / users).
        interrupt_before: An optional list of node names to interrupt before.

            Useful if you want to add a user confirmation or other interrupt
            before taking an action.
        interrupt_after: An optional list of node names to interrupt after.

            Useful if you want to return directly or run additional processing
            on an output.
        debug: Whether to enable verbose logging for graph execution.

            When enabled, prints detailed information about each node execution, state
            updates, and transitions during agent runtime. Useful for debugging
            middleware behavior and understanding agent execution flow.
        name: An optional name for the `CompiledStateGraph`.

            This name will be automatically used when adding the agent graph to
            another graph as a subgraph node - particularly useful for building
            multi-agent systems.
        cache: An optional `BaseCache` instance to enable caching of graph execution.
        transformers: Optional sequence of scope-aware `StreamTransformer`
            factories to register on the compiled graph in addition to
            the agent defaults. Each factory is invoked as `factory(scope)`
            so every invocation receives a fresh instance. The final order
            on the compiled graph is: `ToolCallTransformer`, then any
            factories declared by middleware via
            `AgentMiddleware.transformers`, then any factories supplied here.

    Returns:
        A compiled `StateGraph` that can be used for chat interactions.

    Raises:
        AssertionError: If duplicate middleware instances are provided.

    The agent node calls the language model with the messages list (after applying
    the system prompt). If the resulting [`AIMessage`][langchain.messages.AIMessage]
    contains `tool_calls`, the graph will then call the tools. The tools node executes
    the tools and adds the responses to the messages list as
    [`ToolMessage`][langchain.messages.ToolMessage] objects. The agent node then calls
    the language model again. The process repeats until no more `tool_calls` are present
    in the response. The agent then returns the full list of messages.

    Example:
        ```python
        from langchain.agents import create_agent


        def check_weather(location: str) -> str:
            '''Return the weather forecast for the specified location.'''
            return f"It's always sunny in {location}"


        graph = create_agent(
            model="anthropic:claude-sonnet-4-5-20250929",
            tools=[check_weather],
            system_prompt="You are a helpful assistant",
        )
        inputs = {"messages": [{"role": "user", "content": "what is the weather in sf"}]}
        for chunk in graph.stream(inputs, stream_mode="updates"):
            print(chunk)
        ```
    N)ÚcontentrÆ   c                ó:   — g | ]}t          |d g ¦  «        D ]}|‘ŒŒS ©rù   ©r^   ©r_   ÚmÚts      rH   ú
<listcomp>z create_agent.<locals>.<listcomp>í  s1   € ÐOÐOÐO˜aµw¸qÀ'È2Ñ7NÔ7NÐOÐO°!˜ÐOÐOÐOÐOrG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úwrap_tool_callr#   Úawrap_tool_call©r_   re  s     rH   rg  z create_agent.<locals>.<listcomp>ò  sK   € ð #ð #ð #àØŒ;Ô%­_Ô-KÐKÐKØŒ;Ô&­oÔ.MÐMÐMð 	
ð NÐMÐMrG   c                óf   — g | ].} t          |j        › d �t          ¬¦  «        |j        ¦  «        ‘Œ/S )z.wrap_tool_call©r]   Úprocess_inputs)r   r]   rh   ri  rk  s     rH   rg  z create_agent.<locals>.<listcomp>ü  sU   € ð 
ð 
ð 
ð ð U�I˜aœfÐ5Ð5Ð5ÅmÐTÑTÔTØÔ ñô ð
ð 
ð 
rG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   rj  r#   ri  rk  s     rH   rg  z create_agent.<locals>.<listcomp>  sK   € ð $ð $ð $àØŒ;Ô&­oÔ.MÐMÐMØŒ;Ô%­_Ô-KÐKÐKð 	
ð LÐKÐKrG   c                óf   — g | ].} t          |j        › d �t          ¬¦  «        |j        ¦  «        ‘Œ/S )z.awrap_tool_callrm  )r   r]   rh   rj  rk  s     rH   rg  z create_agent.<locals>.<listcomp>  sU   € ð 
ð 
ð 
ð ð V�I˜aœfÐ6Ð6Ð6Å}ÐUÑUÔUØÔ!ñô ð
ð 
ð 
rG   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rF   ©rf   Údict©r_   rf  s     rH   rg  z create_agent.<locals>.<listcomp>  s'   € Ð>Ð>Ð>˜A­*°Q½Ñ*=Ô*=Ð>�aÐ>Ð>Ð>rG   c                ó<   — g | ]}t          |t          ¦  «        °|‘ŒS rF   rr  rt  s     rH   rg  z create_agent.<locals>.<listcomp>  s'   € ÐAÐAÐA˜1­Z¸½4Ñ-@Ô-@ÐA�QÐAÐAÐArG   )rù   ri  rj  c                ó   — h | ]	}|j         ’Œ
S rF   ©r]   rk  s     rH   ú	<setcomp>zcreate_agent.<locals>.<setcomp>8  s   € Ð'Ð'Ð'�qˆAŒFÐ'Ð'Ð'rG   z-Please remove duplicate middleware instances.c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úbefore_agentr#   Úabefore_agentrk  s     rH   rg  z create_agent.<locals>.<listcomp>;  óK   € ð !ð !ð !àØŒ;Ô#­?Ô+GÐGÐGØŒ;Ô$­OÔ,IÐIÐIð 	
ð JÐIÐIrG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úbefore_modelr#   Úabefore_modelrk  s     rH   rg  z create_agent.<locals>.<listcomp>A  r|  rG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úafter_modelr#   Úaafter_modelrk  s     rH   rg  z create_agent.<locals>.<listcomp>G  óK   € ð  ð  ð  àØŒ;Ô"­/Ô*EÐEÐEØŒ;Ô#­?Ô+GÐGÐGð 	
ð HÐGÐGrG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úafter_agentr#   Úaafter_agentrk  s     rH   rg  z create_agent.<locals>.<listcomp>M  rƒ  rG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   Úwrap_model_callr#   Úawrap_model_callrk  s     rH   rg  z create_agent.<locals>.<listcomp>V  sK   € ð $ð $ð $àØŒ;Ô&­oÔ.MÐMÐMØŒ;Ô'­Ô/OÐOÐOð 	
ð PÐOÐOrG   c                ór   — g | ]4}|j         j        t          j        us|j         j        t          j        u¯2|‘Œ5S rF   )rð   r‰  r#   rˆ  rk  s     rH   rg  z create_agent.<locals>.<listcomp>_  sK   € ð %ð %ð %àØŒ;Ô'­Ô/OÐOÐOØŒ;Ô&­oÔ.MÐMÐMð 	
ð NÐMÐMrG   c                óf   — g | ].} t          |j        › d �t          ¬¦  «        |j        ¦  «        ‘Œ/S )z.wrap_model_callrm  )r   r]   rh   rˆ  rk  s     rH   rg  z create_agent.<locals>.<listcomp>i  sU   € ð 
ð 
ð 
ð ð V�I˜aœfÐ6Ð6Ð6Å}ÐUÑUÔUØÔ!ñô ð
ð 
ð 
rG   c                óf   — g | ].} t          |j        › d �t          ¬¦  «        |j        ¦  «        ‘Œ/S )z.awrap_model_callrm  )r   r]   rh   r‰  rk  s     rH   rg  z create_agent.<locals>.<listcomp>t  sU   € ð 
ð 
ð 
ð ð W�I˜aœfÐ7Ð7Ð7ÍÐVÑVÔVØÔ"ñô ð
ð 
ð 
rG   c              3  ó$   K  — | ]}|j         V — Œd S r�   )r?  rk  s     rH   r  zcreate_agent.<locals>.<genexpr>‚  s$   è è € Ð"FÐ"F°a 1¤>Ð"FÐ"FÐ"FÐ"FÐ"FÐ"FrG   )r?  Úinput_schemaÚoutput_schemar@  rÑ   r   Úeffective_response_formatúResponseFormat[Any] | NonerW   rV   c           	     ó  •‡— t          |t          ¦  «        r‚| j        svt          j        |j        ¦  «        }	 |                     | ¦  «        }| g|dœS # t          $ r4}t          |j        j	        dd¦  «        }t          ||| ¦  «        }||‚d}~ww xY wd| giS t          |t          ¦  «        �rZt          | t          ¦  «        �rD| j        �r<ˆfd„| j        D ¦   «         }|�r&d}t          |¦  «        dk    rHd„ |D ¦   «         }	t          |	| ¦  «        }t          ||¦  «        \  }
Š|
s|‚ˆfd	„|D ¦   «         }d| g|¢iS |d
         }	 ‰|d                  }|                     |d         ¦  «        }|j        pd|› �}| t#          ||d         |d         ¬¦  «        g|dœS # t          $ r[}t          |d         || ¦  «        }t          ||¦  «        \  }
Š|
s||‚d| t#          ‰|d         |d         ¬¦  «        gicY d}~S d}~ww xY wd| giS )a  Handle model output including structured responses.

        Args:
            output: The AI message output from the model.
            effective_response_format: The actual strategy used (may differ from initial
                if auto-detected).
        )rr   rm   r@   r  Nrr   c                ó(   •— g | ]}|d          ‰v ¯|‘ŒS rw  rF   )r_   ÚtcÚstructured_output_toolss     €rH   rg  z>create_agent.<locals>._handle_model_output.<locals>.<listcomp>²  s/   ø€ ð %ð %ð %Ø°"°V´*Ð@WÐ2WÐ2W�Ð2WÐ2WÐ2WrG   r‹   c                ó   — g | ]
}|d          ‘ŒS rw  rF   )r_   r”  s     rH   rg  z>create_agent.<locals>._handle_model_output.<locals>.<listcomp>º  s   € Ð!MÐ!MÐ!M° " V¤*Ð!MÐ!MÐ!MrG   c                óL   •— g | ] }t          ‰|d          |d         ¬¦  «        ‘Œ!S )Úidr]   ©r`  Útool_call_idr]   )r   )r_   r”  Úerror_messages     €rH   rg  z>create_agent.<locals>._handle_model_output.<locals>.<listcomp>Ã  sK   ø€ ð %ð %ð %ð õ $Ø$1Ø)+¨D¬Ø!# F¤ðñ ô ð%ð %ð %rG   r   r]   ÚargszReturning structured response: r˜  r™  )rf   r3   Ú
tool_callsr4   Úfrom_schema_specÚschema_specÚparser  r^   rÂ   r7   r8   r   r­   r1   r"  Útool_message_contentr   )rÑ   r�  Úprovider_strategy_bindingrm   ÚexcrÖ   Úvalidation_errorÚstructured_tool_callsr  Ú
tool_namesÚshould_retryÚtool_messagesÚ	tool_callÚstructured_tool_bindingr¡  r›  r•  s                  @€rH   Ú_handle_model_outputz*create_agent.<locals>._handle_model_output�  sO  øø€ õ Ð/Õ1AÑBÔBð 	*ØÔ$ð ^Ý,CÔ,TØ-Ô9ñ-ô -Ð)ð	^Ø*C×*IÒ*IÈ&Ñ*QÔ*QÐ'ð *0¨ÐI\Ð]Ð]Ð]øõ !ð 4ð 4ð 4Ý")Ø1Ô=ÔDÀjÐRcñ#ô #�Kõ (GÀ{ÐTWÐY_Ñ'`Ô'`Ð$Ø*°Ð3øøøøð4øøøð   Ð)Ð)õ Ð0µ,Ñ?Ô?ñG	å˜6¥9Ñ-Ô-ñG	ð Ô!ñG	ð
%ð %ð %ð %Ø#Ô.ð%ñ %ô %Ð!ð %ñ >Ø:>�	ÝÐ,Ñ-Ô-°Ò1Ð1à!MÐ!MÐ7LÐ!MÑ!MÔ!M�JÝ >¸zÈ6Ñ RÔ R�IÝ2QØ!Ð#<ñ3ô 3Ñ/�L -ð (ð (Ø'˜ð%ð %ð %ð %ð #8ð%ñ %ô %�Mð '¨Ð(@°-Ð(@ÐAÐAð 2°!Ô4�	ð%Ø.EÀiÐPVÔFWÔ.XÐ+Ø*A×*GÒ*GÈ	ÐRXÔHYÑ*ZÔ*ZÐ'ð 2ÔFð SØRÐ=PÐRÐRð )ð #Ý'Ø(<Ø-6°t¬_Ø%.¨vÔ%6ðñ ô ð%ð 0Cð
ð 
ð 
øõ !ð ð ð Ý ?À	È&Ô@QÐSVÐX^Ñ _Ô _�IÝ2QØ!Ð#<ñ3ô 3Ñ/�L -ð (ð 1Ø'¨SÐ0ð #Ø"Ý'Ø(5Ø-6°t¬_Ø%.¨vÔ%6ðñ ô ð%ð	ð 	ð 	ð 	ð 	ð 	ð 	øøøøðøøøð& ˜V˜HÐ%Ð%s7   ¹A Á
BÁ/BÂBÅ
AF" Æ"
HÆ,AHÇ<HÈHrZ   rŒ   ú5tuple[Runnable[Any, Any], ResponseFormat[Any] | None]c                óÐ  •— ‰p‰}i }‰r‰j                              ¦   «         }|s¨g }| j        D ]P}t          |t          ¦  «        rŒt          |t
          ¦  «        r#|j        |vr|                     |j        ¦  «         ŒQ|rLt          | 	                    ¦   «         ¦  «        }t                               ||¬¦  «        }t          |¦  «        ‚| j        }|�2t          |t          t          t           f¦  «        st          |¬¦  «        }t          |t          ¦  «        rPt#          | j        | j        ¬¦  «        rt!          |j        ¬¦  «        }n!|‰u r‰�‰}nt          |j        ¬¦  «        }n|}t)          | j        ¦  «        }	t          |t          ¦  «        r3d„ ‰                     ¦   «         D ¦   «         }
|	                     |
¦  «         t          |t           ¦  «        rc|                     ¦   «         }i |¥| j        ¥}t3          | j        ¦  «        rt5          | j        dd¦  «        sd|d	<    | j        j        |	fi |¤Ž|fS t          |t          ¦  «        rT|j        D ]%}|j        ‰vrd
|j        › d�}t          |¦  «        ‚Œ&‰rdn| j        } | j        j        |	fd|i| j        ¤Ž|fS |	r! | j        j        |	fd| j        i| j        ¤ŽdfS  | j        j        di | j        ¤ŽdfS )ar  Get the model with appropriate tool bindings.

        Performs auto-detection of strategy if needed based on model capabilities.

        Args:
            request: The model request containing model, tools, and response format.

        Returns:
            Tuple of `(bound_model, effective_response_format)` where
            `effective_response_format` is the actual strategy used (may differ from
            initial if auto-detected).

        Raises:
            ValueError: If middleware returned unknown client-side tool names.
            ValueError: If `ToolStrategy` specifies tools not declared upfront.
        )Úunknown_tool_namesÚavailable_tool_namesNrÆ   rb  c                ó   — g | ]	}|j         ‘Œ
S rF   )Útool)r_   Úinfos     rH   rg  z:create_agent.<locals>._get_bound_model.<locals>.<listcomp>H  s   € ÐWÐWÐW¨d ¤	ÐWÐWÐWrG   Úuse_responses_apiFTÚstrictzToolStrategy specifies tool 'zP' which wasn't declared in the original response format when creating the agent.r	  Útool_choicerF   )Útools_by_namerc   rù   rf   rs  r   r]   r‡   ÚsortedÚkeysÚDYNAMIC_TOOL_ERROR_TEMPLATEr  Ú
ValueErrorr  r0   r8   r3   r  r÷   rÂ   rE   rÛ   rx   Úto_model_kwargsÚmodel_settingsr  r^   Ú
bind_toolsÚschema_specsrµ  Úbind)rZ   Úhas_wrap_tool_callÚavailable_tools_by_namer®  rf  r¯  r{   r  r�  Úfinal_toolsÚstructured_toolsÚkwargsÚbind_kwargsr”  rµ  Úawrap_tool_call_wrapperÚinitial_response_formatr•  Ú	tool_nodeÚtool_strategy_for_setupÚwrap_tool_call_wrappers                  €€€€€€rH   Ú_get_bound_modelz&create_agent.<locals>._get_bound_modelø  sØ  ø€ ð, 4ÐNÐ7NÐð #%ÐØð 	EØ&/Ô&=×&BÒ&BÑ&DÔ&DÐ#ð "ð 	&Ø!#ÐØ”]ð 6ð 6�å˜a¥Ñ&Ô&ð ØÝ˜a¥Ñ*Ô*ð 6¨q¬vÐ=TÐ/TÐ/TØ&×-Ò-¨a¬fÑ5Ô5Ð5øà!ð &Ý'-Ð.E×.JÒ.JÑ.LÔ.LÑ'MÔ'MÐ$Ý1×8Ò8Ø'9Ø)=ð 9ñ ô �õ ! ‘o”oÐ%ð =DÔ<SˆØÐ&­zØ�l­LÕ:JÐKñ0
ô 0
Ð&õ +°/ÐBÑBÔBˆOõ �o¥|Ñ4Ô4ð 	8å*¨7¬=ÀÄÐNÑNÔNð Xå,<ÀOÔDZÐ,[Ñ,[Ô,[Ð)Ð)Ø Ð$;Ð;Ð;Ð@WÐ@cð -DÐ)Ð)å,8ÀÔ@VÐ,WÑ,WÔ,WÐ)Ð)ð )8Ð%õ
 ˜7œ=Ñ)Ô)ˆÝÐ/µÑ>Ô>ð 	1àWÐWÐ6M×6TÒ6TÑ6VÔ6VÐWÑWÔWÐØ×ÒÐ/Ñ0Ô0Ð0õ Ð/Õ1AÑBÔBð 	ð /×>Ò>Ñ@Ô@ˆFØ*N¨VÐ*N°wÔ7MÐ*NˆKÝ*¨7¬=Ñ9Ô9ð -Å'Ø”Ð2°EñCô Cð -ð )-�˜HÑ%à(�”Ô(¨ÐDÐD¸ÐDÐDØ)ðð õ
 Ð/µÑ>Ô>ð 	ð 0Ô<ð *ð *�Ø”7Ð"9Ð9Ð9ðC¸¼ð Cð Cð Cð õ
 % S™/œ/Ð)ð :ð $;ÐS˜%˜%ÀÔ@SˆKà(�”Ô(Øðð Ø-8ðØ<CÔ<Rðð ð *ð	ð ð ð 	à(�”Ô(Øðð Ø-4Ô-@ðØDKÔDZðð ð ð	ð ð "ˆwŒ}Ô!Ð;Ð; GÔ$:Ð;Ð;¸TÐAÐArG   r*   c                ó   •—  ‰| ¦  «        \  }}| j         }| j        r
| j        g|¢}|                     |¦  «        }‰
r‰
|_         ‰	||¦  «        }|d         }|                     d¦  «        }t          ||¬¦  «        S )zÅExecute model and return response.

        This is the core model execution logic wrapped by `wrap_model_call` handlers.

        Raises any exceptions that occur during model invocation.
        rr   rm   rl   )rr   Úsystem_messageÚinvoker]   re   r*   ©rZ   Úmodel_r�  rr   rÑ   Úhandled_outputÚmessages_listrm   rË  r«  r]   s           €€€rH   Ú_execute_model_syncz)create_agent.<locals>._execute_model_sync~  s¯   ø€ ð -=Ð,<¸WÑ,EÔ,EÑ)ˆÐ)ØÔ#ˆØÔ!ð 	;ØÔ.Ð:°Ð:ˆHà—’˜xÑ(Ô(ˆØð 	ØˆFŒKð .Ð-¨fÐ6OÑPÔPˆØ& zÔ2ˆØ,×0Ò0Ð1FÑGÔGÐåØ Ø 3ð
ñ 
ô 
ð 	
rG   ry   úAgentState[Any]r\   úRuntime[ContextT]r>   c           
     óÂ   •— t          ‰‰‰	‰| d         d| |¬¦  «        }‰
€ ‰|¦  «        }t          |¦  «        S  ‰
|‰¦  «        }t          |j        |j        ¦  «        S )zASync model request handler with sequential middleware processing.rr   N©r÷   rù   rÍ  r  rr   rµ  ry   r\   ©r)   r|   r<   r?   )ry   r\   rZ   r<   ri   rÓ  Údefault_toolsrÇ  r÷   rÍ  Úwrap_model_call_handlers        €€€€€€rH   Ú
model_nodez create_agent.<locals>.model_node™  s‚   ø€ åØØØ)Ø3Ø˜:Ô&ØØØð	
ñ 	
ô 	
ˆð #Ð*Ø0Ð0°Ñ9Ô9ˆNÝ" >Ñ2Ô2Ð2à(Ð(¨Ð2EÑFÔFˆÝ˜vÔ4°f´oÑFÔFÐFrG   c              “  ó  •K  —  ‰| ¦  «        \  }}| j         }| j        r
| j        g|¢}|                     |¦  «        ƒ d{V —†}‰
r‰
|_         ‰	||¦  «        }|d         }|                     d¦  «        }t          ||¬¦  «        S )zâExecute model asynchronously and return response.

        This is the core async model execution logic wrapped by `wrap_model_call`
        handlers.

        Raises any exceptions that occur during model invocation.
        Nrr   rm   rl   )rr   rÍ  Úainvoker]   re   r*   rÏ  s           €€€rH   Ú_execute_model_asyncz*create_agent.<locals>._execute_model_async­  sÅ   øè è € ð -=Ð,<¸WÑ,EÔ,EÑ)ˆÐ)ØÔ#ˆØÔ!ð 	;ØÔ.Ð:°Ð:ˆHà—~’~ hÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/ˆØð 	ØˆFŒKð .Ð-¨fÐ6OÑPÔPˆØ& zÔ2ˆØ,×0Ò0Ð1FÑGÔGÐåØ Ø 3ð
ñ 
ô 
ð 	
rG   c           
   “  óÞ   •K  — t          ‰	‰‰
‰| d         d| |¬¦  «        }‰€  ‰|¦  «        ƒ d{V —†}t          |¦  «        S  ‰|‰¦  «        ƒ d{V —†}t          |j        |j        ¦  «        S )zBAsync model request handler with sequential middleware processing.rr   Nr×  rØ  )ry   r\   rZ   r<   ri   rÞ  Úawrap_model_call_handlerrÙ  rÇ  r÷   rÍ  s        €€€€€€rH   Úamodel_nodez!create_agent.<locals>.amodel_nodeÉ  sª   øè è € åØØØ)Ø3Ø˜:Ô&ØØØð	
ñ 	
ô 	
ˆð $Ð+Ø#7Ð#7¸Ñ#@Ô#@Ð@Ð@Ð@Ð@Ð@Ð@ˆNÝ" >Ñ2Ô2Ð2à/Ð/°Ð9MÑNÔNÐNÐNÐNÐNÐNÐNˆÝ˜vÔ4°f´oÑFÔFÐFrG   r÷   F©Útracerù   z.before_agent)rŽ  z.before_modelz.after_modelz.after_agentr   rª   c              3  ó$   K  — | ]}|j         V — Œd S r�   )Úreturn_direct)r_   r±  s     rH   r  zcreate_agent.<locals>.<genexpr>[  s%   è è € ÐPÐP t�Ô"ÐPÐPÐPÐPÐPÐPrG   )rÈ  Úmodel_destinationr•  Úend_destination)ræ  r•  rç  ©ræ  rç  r�  )r]   Údefault_destinationræ  rç  Úcan_jump_torz  r~  r‹   r…  Úrecursion_limiti'  Úls_integrationÚlangchain_create_agentrã   Úlc_agent_namec                ó:   — g | ]}t          |d d¦  «        D ]}|‘ŒŒS )rG  rF   rc  rd  s      rH   rg  z create_agent.<locals>.<listcomp>ù  s2   € Ð]Ð]Ð] Q½gÀaÈÐY[Ñ>\Ô>\Ð]Ð]¸˜qÐ]Ð]Ð]Ð]rG   rF   )rA  rB  rC  rD  rE  r]   rF  rG  )rÑ   r   r�  r‘  rW   rV   )rZ   rŒ   rW   r¬  )rZ   rŒ   rW   r*   )ry   rÔ  r\   rÕ  rW   r>   )8rf   r×   r9   r   r8   r3   r0   rÂ   r¾  r2   rž  r±  r]   r4  r=  r   rE   r¶  rÛ   r­   ÚAssertionErrorr²   r¿   r$   rÔ   r   Úadd_noder   rð   rz  r#   r{  r~  r  r�  r‚  r…  r†  r   Úadd_edger   r	  r‡   Úadd_conditional_edgesÚ_make_tools_to_model_edgeÚ_make_model_to_tools_edgeÚ_make_model_to_model_edgeÚ_add_middleware_edgerö   Ú	itertoolsÚpairwiseÚrangeÚcompiler   r"   Úwith_config)Pr÷   rù   r>  ré   r  r?  r@  rA  rB  rC  rD  rE  r]   rF  rG  Úresponse_schemaÚstructured_tool_infoÚmiddleware_toolsÚmiddleware_w_wrap_tool_callr#  Úmiddleware_w_awrap_tool_callÚasync_wrappersÚbuilt_in_toolsÚregular_toolsÚavailable_toolsr{   Úmiddleware_w_before_agentÚmiddleware_w_before_modelÚmiddleware_w_after_modelÚmiddleware_w_after_agentÚmiddleware_w_wrap_model_callÚmiddleware_w_awrap_model_callÚsync_handlersÚasync_handlersÚ
base_stateÚstate_schemasÚresolved_state_schemarŽ  r�  rw   rÛ  rá  re  Úsync_before_agentÚasync_before_agentÚbefore_agent_nodeÚsync_beforeÚasync_beforeÚbefore_nodeÚ
sync_afterÚasync_afterÚ
after_nodeÚsync_after_agentÚasync_after_agentÚafter_agent_nodeÚ
entry_nodeÚloop_entry_nodeÚloop_exit_nodeÚ	exit_nodeÚtools_to_model_destinationsÚmodel_to_tools_destinationsÚm1Úm2ÚidxÚconfigÚmiddleware_transformersrÞ  rÓ  rË  r«  rà  rÆ  rÙ  rÇ  r•  rÍ  rÈ  rÉ  rÚ  rÊ  sP   `           `                                                     @@@@@@@@@@@@@@rH   rU  rU  (  s  øøøøøøøøøøøøøøøø€ õv �%�ÑÔð 'Ý Ñ&Ô&ˆð ,0€NØÐ Ý�m¥]Ñ3Ô3ð 	BØ*ˆNˆNå*°=ÐAÑAÔAˆNð €}Øˆð ÐØ"&ÐÐÝ	�O¥lÕ4DÅlÐ%SÑ	TÔ	Tð Gà"1ÐÐõ #/°oÐ"FÑ"FÔ"FÐð 9=ÐÝÐ)­<Ñ8Ô8ð :Ý".Ð6MÔ6TÐ"UÑ"UÔ"UÐÐÝ	Ð+­\Ñ	:Ô	:ð :Ø"9ÐàACÐØð [Ø6ÔCð 	[ð 	[ˆOÝ#4Ô#EÀoÑ#VÔ#VÐ ØFZÐ#Ð$8Ô$=Ô$BÑCÐCØOÐO :ÐOÑOÔOÐð
#ð #àð#ñ #ô #Ðð "ÐØ"ð Eð
ð 
ð 1ð	
ñ 
ô 
ˆõ ";¸8Ñ!DÔ!DÐð
$ð $àð$ñ $ô $Ð ð #ÐØ#ð Rð
ð 
ð 2ð	
ñ 
ô 
ˆõ #BÀ.Ñ"QÔ"QÐð "&€Ià>Ð> Ð>Ñ>Ô>€NØAÐA ÐAÑAÔA€Mð '¨Ñ6€Oð ð	ð
 5ð	ð
 9Pð	�Ø!Ø1Ø3ð	
ñ 	
ô 	
ð 	
ð ð ð ð -Ý˜YÔ4×;Ò;Ñ=Ô=Ñ>Ô>ÀÑOˆˆå˜^Ñ,Ô,ˆõ Ð'Ð'˜JÐ'Ñ'Ô'Ñ(Ô(­C°
©O¬OÒ;Ð;Ø=ˆÝ˜SÑ!Ô!Ð!ð!ð !àð!ñ !ô !Ðð!ð !àð!ñ !ô !Ðð ð  àð ñ  ô  Ðð ð  àð ñ  ô  Ðð$ð $àð$ñ $ô $Ð ð%ð %àð%ñ %ô %Ð!ð #ÐØ#ð Lð
ð 
ð 2ð	
ñ 
ô 
ˆõ #=¸]Ñ"KÔ"KÐð  $ÐØ$ð Tð
ð 
ð 3ð	
ñ 
ô 
ˆõ $DÀNÑ#SÔ#SÐ à!-Ð!9��½z€Jð !TÐ"FÐ"F¸:Ð"FÑ"FÔ"FÐ SÈ
Ð S€Må9IÈ-Ñ9XÔ9XÑ6Ð˜<¨õ
 	Ø*Ø!Ø#Ø%ð		ñ 	ô 	ð 
ðf&ð f&ð f&ð f&ð f&ð f&ðPDBð DBð DBð DBð DBð DBð DBð DBð DBð DBð DBðL
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð6Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð(
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð8Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð Gð* 
‡N‚N�7Õ,¨Z¸ÈEÐRÑRÔRÑSÔSÐSð ÐØ�Š�w 	Ñ*Ô*Ð*ð ð Qñ QˆàŒKÔ$­OÔ,HÐHÐHØŒ{Ô(µÔ0MÐMÐMð ”;Ô+µ?Ô3OÐOÐOð ”�àð ð ”;Ô,µOÔ4QÐQÐQð ”�àð õ
 !1Ð1BÐDVÐ^cÐ dÑ dÔ dÐØ�NŠNØ”6Ð(Ð(Ð(Ð*;ÐJ_ð ñ ô ð ð
 ŒKÔ$­OÔ,HÐHÐHØŒ{Ô(µÔ0MÐMÐMð ”;Ô+µ?Ô3OÐOÐOð ”�àð ð ”;Ô,µOÔ4QÐQÐQð ”�àð õ
 +¨;¸ÈEÐRÑRÔRˆKØ�NŠNØ”6Ð(Ð(Ð(¨+ÐDYð ñ ô ð ð
 ŒKÔ#­?Ô+FÐFÐFØŒ{Ô'­Ô/KÐKÐKð ”;Ô*µ/Ô2MÐMÐMð ”�àð ð ”;Ô+µ?Ô3OÐOÐOð ”�àð õ
 *¨*°kÈÐOÑOÔOˆJØ�NŠN˜aœfÐ2Ð2Ð2°JÐMbˆNÑcÔcÐcð ŒKÔ#­?Ô+FÐFÐFØŒ{Ô'­Ô/KÐKÐKð ”;Ô*µ/Ô2MÐMÐMð ”�àð ð ”;Ô+µ?Ô3OÐOÐOð ”�àð õ
  0Ð0@ÐBSÐ[`ÐaÑaÔaÐØ�NŠNØ”6Ð'Ð'Ð'Ð)9ÐH]ð ñ ô ð ùð
 !ð Ø1°!Ô4Ô9ÐHÐHÐHˆ
ˆ
Ø	"ð Ø1°!Ô4Ô9ÐHÐHÐHˆ
ˆ
àˆ
ð !ð "Ø6°qÔ9Ô>ÐMÐMÐMˆˆà!ˆð  ð !Ø4°QÔ7Ô<ÐJÐJÐJˆˆà ˆð  ð Ø/°Ô3Ô8ÐFÐFÐFˆ	ˆ	åˆ	à	‡N‚N•5˜*Ñ%Ô%Ð%àÐð (7Ð&7Ð#åÐPÐP¨yÔ/F×/MÒ/MÑ/OÔ/OÐPÑPÔPÑPÔPð	:à&ð	:ð (×.Ò.¨yÑ9Ô9Ð9à×#Ò#ØÝÝ)Ø'Ø&5Ø,CØ$-ð	ñ ô ð ðñ ô ð (ñ	
ô 	
ð 	
ð( (/°	Ð&:Ð#Øð 	@˜n°Ò7Ð7Ø'×.Ò.¨Ñ?Ô?Ð?à×#Ò#ØÝÝ)Ø&5Ø,CØ$-ðñ ô ð
 ðñ ô ð (ñ	
ô 	
ð 	
ð 	
õ 
Ð$Ñ	%Ô	%¨Ò	)Ð	)Ø×#Ò#ØÝÝ)Ø&5Ø$-ðñ ô ð ðñ ô ð ˜iÐ(ñ
	
ô 
	
ð 
	
ð 
	
ð 
˜7Ò	"Ð	"à�Š�~ yÑ1Ô1Ð1Ð1õ 	ØØ,¨QÔ/Ô4ÐBÐBÐBØ )Ø-Ø%Ý(Ð)AÀ!Ô)DÀmÑTÔTð	
ñ 	
ô 	
ð 	
ð !ð 
ÝÔ(Ð)BÑCÔCð 	ð 	‰FˆB�Ý ØØœÐ.Ð.Ð.Ø')¤wÐ$=Ð$=Ð$=Ø"1Ø )Ý,¨R°Ñ@Ô@ðñ ô ð ð õ 	ØØ-¨bÔ1Ô6ÐEÐEÐEØ /Ø-Ø%Ý(Ð)BÀ2Ô)FÈÑWÔWð	
ñ 	
ô 	
ð 	
ð !ð 
ÝÔ(Ð)BÑCÔCð 	ð 	‰FˆB�Ý ØØœÐ.Ð.Ð.Ø')¤wÐ$=Ð$=Ð$=Ø"1Ø )Ý,¨R°Ñ@Ô@ðñ ô ð ð õ 	ØØ-¨bÔ1Ô6ÐEÐEÐEØ 'Ø-Ø%Ý(Ð)BÀ2Ô)FÈÑWÔWð	
ñ 	
ô 	
ð 	
ð  ð Ø�Š�wÐ#;¸BÔ#?Ô#DÐ RÐ RÐ RÑSÔSÐSÝ�Ð5Ñ6Ô6¸Ñ:¸A¸rÑBÔBð 
	ð 
	ˆCØ)¨#Ô.ˆBØ)¨#°©'Ô2ˆBÝ ØØœÐ-Ð-Ð-Ø')¤wÐ$<Ð$<Ð$<Ø"1Ø )Ý,¨R°Ñ?Ô?ðñ ô ð ð ð  ð 
å�Ð5Ñ6Ô6¸Ñ:¸A¸rÑBÔBð 
	ð 
	ˆCØ)¨#Ô.ˆBØ)¨#°©'Ô2ˆBÝ ØØœÐ-Ð-Ð-Ø')¤wÐ$<Ð$<Ð$<Ø"1Ø )Ý,¨R°Ñ?Ô?ðñ ô ð ð õ 	ØØ,¨QÔ/Ô4ÐBÐBÐBÝ #Ø-Ø%Ý(Ð)AÀ!Ô)DÀmÑTÔTð	
ñ 	
ô 	
ð 	
ð 0°Ð7€FØ*Ð,DÐE€Fˆ:ÑØð 3Ø.2ˆˆzÔ˜?Ñ+à]Ð]¨*Ð]Ñ]Ô]Ðà�=Š=Ø!ØØ)Ø'ØØØåÝð
ð %ð
ð Ð ˜bð	
ð ñ ô ÷ ‚k�&ÑÔðrG   Újump_toúJumpTo | Noneræ  rç  c               ó6   — | dk    r|S | dk    r|S | dk    rdS d S )Nr÷   Úendrù   rF   )r(  ræ  rç  s      rH   Ú_resolve_jumpr,    s;   € ð �'ÒÐØ Ð Ø�%ÒÐØÐØ�'ÒÐØˆwØˆ4rG   rr   úlist[AnyMessage]ú*tuple[AIMessage | None, list[ToolMessage]]c                óî   — t          t          | ¦  «        dz
  dd¦  «        D ]P}t          | |         t          ¦  «        r3t	          d| |         ¦  «        }d„ | |dz   d…         D ¦   «         }||fc S ŒQdg fS )a,  Return the last AI message and any subsequent tool messages.

    Args:
        messages: List of messages to search through.

    Returns:
        A tuple of (last_ai_message, tool_messages). If no AIMessage is found,
        returns (None, []). Callers must handle the None case appropriately.
    r‹   rª   r   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rF   )rf   r   rk  s     rH   rg  z4_fetch_last_ai_and_tool_messages.<locals>.<listcomp>*  s'   € ÐXÐXÐX 1½ZÈÍ;Ñ=WÔ=WÐX˜QÐXÐXÐXrG   N)rú  r­   rf   r   r   )rr   ÚiÚlast_ai_messager¨  s       rH   Ú _fetch_last_ai_and_tool_messagesr3    s”   € õ •3�x‘=”= 1Ñ$ b¨"Ñ-Ô-ð 2ð 2ˆÝ�h˜q”k¥9Ñ-Ô-ð 	2Ý" ;°¸´Ñ<Ô<ˆOØXÐX¨°°Q±°°Ô(9ÐXÑXÔXˆMØ" MÐ1Ð1Ð1Ð1ð	2ð
 �ˆ8€OrG   r•  ú!dict[str, OutputToolBinding[Any]]ú3Callable[[dict[str, Any]], str | list[Send] | None]c                ó   ‡ ‡‡— dˆˆ ˆfd„}|S )Nry   rV   rW   ústr | list[Send] | Nonec                ó0  •‡— |                       d¦  «        x}rt          |‰‰¬¦  «        S t          | d         ¦  «        \  }}|€‰S d„ |D ¦   «         Št          |j        ¦  «        dk    r‰S ˆˆfd„|j        D ¦   «         }|rd„ |D ¦   «         S d| v r‰S ‰S )	Nr(  rè  rr   c                ó   — g | ]	}|j         ‘Œ
S rF   )rš  rk  s     rH   rg  zE_make_model_to_tools_edge.<locals>.model_to_tools.<locals>.<listcomp>G  s   € ÐBÐBÐB¨q˜AœNÐBÐBÐBrG   r   c                ó<   •— g | ]}|d          ‰v¯|d         ‰v¯|‘ŒS )r˜  r]   rF   )r_   Úcr•  Útool_message_idss     €€rH   rg  zE_make_model_to_tools_edge.<locals>.model_to_tools.<locals>.<listcomp>N  sB   ø€ ð 
ð 
ð 
àØ�ŒwÐ.Ð.Ð.°1°V´9ÐD[Ð3[Ð3[ð à3[Ð3[Ð3[rG   c                ó0   — g | ]}t          d |g¦  «        ‘ŒS rb  )r   )r_   r©  s     rH   rg  zE_make_model_to_tools_edge.<locals>.model_to_tools.<locals>.<listcomp>Y  s$   € ÐSÐSÐS°9•D˜ 9 +Ñ.Ô.ÐSÐSÐSrG   rm   )re   r,  r3  r­   r�  )	ry   r(  r2  r¨  Úpending_tool_callsr<  rç  ræ  r•  s	        @€€€rH   Úmodel_to_toolsz1_make_model_to_tools_edge.<locals>.model_to_tools6  s  øø€ ð —i’i 	Ñ*Ô*Ð*ˆ7ð 	Ý ØØ"3Ø /ðñ ô ð õ *JÈ%ÐPZÔJ[Ñ)\Ô)\Ñ&ˆ˜ð Ð"Ø"Ð"àBÐB°MÐBÑBÔBÐõ ˆÔ)Ñ*Ô*¨aÒ/Ð/Ø"Ð"ð
ð 
ð 
ð 
ð 
à$Ô/ð
ñ 
ô 
Ðð ð 	TØSÐSÐ@RÐSÑSÔSÐSð ! EÐ)Ð)Ø"Ð"ð !Ð rG   ©ry   rV   rW   r7  rF   )ræ  r•  rç  r?  s   ``` rH   rõ  rõ  0  s6   øøø€ ð+!ð +!ð +!ð +!ð +!ð +!ð +!ð +!ðZ ÐrG   c                ó   ‡ ‡— dˆˆ fd„}|S )Nry   rV   rW   r7  c                óf   •— |                       d¦  «        x}rt          |‰‰¬¦  «        S d| v r‰S ‰S )Nr(  rè  rm   )re   r,  )ry   r(  rç  ræ  s     €€rH   Úmodel_to_modelz1_make_model_to_model_edge.<locals>.model_to_modelk  sY   ø€ ð —i’i 	Ñ*Ô*Ð*ˆ7ð 	Ý ØØ"3Ø /ðñ ô ð ð ! EÐ)Ð)Ø"Ð"ð !Ð rG   r@  rF   )ræ  rç  rC  s   `` rH   rö  rö  f  s/   øø€ ð
!ð !ð !ð !ð !ð !ð !ð& ÐrG   rÈ  r   ú&Callable[[dict[str, Any]], str | None]c                ó    ‡ ‡‡‡— dˆˆˆˆ fd„}|S )Nry   rV   rW   rÙ   c                óÞ   •— t          | d         ¦  «        \  }}|€‰S ˆfd„|j        D ¦   «         }|rt          ˆfd„|D ¦   «         ¦  «        r‰S t          ˆfd„|D ¦   «         ¦  «        r‰S ‰S )Nrr   c                ó2   •— g | ]}|d          ‰j         v ¯|‘ŒS rw  )r¶  ©r_   r;  rÈ  s     €rH   rg  zE_make_tools_to_model_edge.<locals>.tools_to_model.<locals>.<listcomp>‘  s1   ø€ ð "
ð "
ð "
Ø°Q°v´YÀ)ÔBYÐ5YÐ5YˆAÐ5YÐ5YÐ5YrG   c              3  óH   •K  — | ]}‰j         |d                   j        V — ŒdS )r]   N)r¶  rå  rH  s     €rH   r  zD_make_tools_to_model_edge.<locals>.tools_to_model.<locals>.<genexpr>”  sC   øè è € ð *
ð *
ØABˆIÔ# A f¤IÔ.Ô<ð*
ð *
ð *
ð *
ð *
ð *
rG   c              3  ó*   •K  — | ]}|j         ‰v V — Œd S r�   rw  )r_   rf  r•  s     €rH   r  zD_make_tools_to_model_edge.<locals>.tools_to_model.<locals>.<genexpr>š  s+   øè è € ÐHÐH°QˆqŒvÐ0Ð0ÐHÐHÐHÐHÐHÐHrG   )r3  r�  Úallr	  )ry   r2  r¨  Úclient_side_tool_callsrç  ræ  r•  rÈ  s       €€€€rH   Útools_to_modelz1_make_tools_to_model_edge.<locals>.tools_to_modelˆ  sÓ   ø€ Ý)IÈ%ÐPZÔJ[Ñ)\Ô)\Ñ&ˆ˜ð Ð"Ø$Ð$ð"
ð "
ð "
ð "
Ø&Ô1ð"
ñ "
ô "
Ðð "ð 	#¥cð *
ð *
ð *
ð *
ØF\ð*
ñ *
ô *
ñ '
ô '
ð 	#ð #Ð"õ ÐHÐHÐHÐH¸-ÐHÑHÔHÑHÔHð 	#Ø"Ð"ð
 !Ð rG   )ry   rV   rW   rÙ   rF   )rÈ  ræ  r•  rç  rM  s   ```` rH   rô  rô  �  s;   øøøø€ ð!ð !ð !ð !ð !ð !ð !ð !ð !ð4 ÐrG   rw   úYStateGraph[AgentState[ResponseT], ContextT, InputAgentState, OutputAgentState[ResponseT]]ré  rê  úlist[JumpTo] | Nonec               óD  ‡‡‡— |r„dˆˆˆfd„}‰g}d|v r|                      ‰¦  «         d|v r|                      d¦  «         d|v r|‰k    r|                      ‰¦  «         |                      |t          |d	¬
¦  «        |¦  «         dS |                      |‰¦  «         dS )a±  Add an edge to the graph for a middleware node.

    Args:
        graph: The graph to add the edge to.
        name: The name of the middleware node.
        default_destination: The default destination for the edge.
        model_destination: The destination for the edge to the model.
        end_destination: The destination for the edge to the end.
        can_jump_to: The conditionally jumpable destinations for the edge.
    ry   rV   rW   r×   c                óR   •— t          |                      d¦  «        ‰‰¬¦  «        p‰S )Nr(  rè  )r,  re   )ry   ré  rç  ræ  s    €€€rH   Ú	jump_edgez'_add_middleware_edge.<locals>.jump_edge¼  s9   ø€ åØ—I’I˜iÑ(Ô(Ø&7Ø$3ðñ ô ð 'ð
 'ðrG   r+  rù   r÷   Frâ  N)ry   rV   rW   r×   )r‡   ró  r   rò  )rw   r]   ré  ræ  rç  rê  rR  Údestinationss     ```   rH   r÷  r÷  ¥  sô   øøø€ ð* ð 2ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð ,Ð,ˆà�KÐÐØ×Ò Ñ0Ô0Ð0Ø�kÐ!Ð!Ø×Ò Ñ(Ô(Ð(Ø�kÐ!Ð! dÐ.?Ò&?Ð&?Ø×ÒÐ 1Ñ2Ô2Ð2à×#Ò# DÕ*:¸9ÈEÐ*RÑ*RÔ*RÐT`ÑaÔaÐaÐaÐað 	�Š�tÐ0Ñ1Ô1Ð1Ð1Ð1rG   rU  )rU   rV   rW   rV   )ri   rj   rW   r*   r�   )r<   r*   ro   rp   rW   r>   )r}   r~   rW   r   )r}   r³   rW   r´   )rÂ   rÃ   rW   rV   )rÈ   rÉ   rW   rÊ   )rÓ   rÕ   rÖ   r×   rØ   rÙ   rW   rÃ   )rå   rÃ   rW   ræ   )ré   rê   rë   r×   rW   rì   )r÷   rø   rù   rú   rW   rû   )r÷   r   rW   rû   )r  r  r  r  rW   r  )r#  r$  rW   r%  )r#  r5  rW   r6  ) r÷   rø   rù   rH  r>  rI  ré   rJ  r  rK  r?  rK  r@  rL  rA  rM  rB  rN  rC  rO  rD  rO  rE  rû   r]   rÙ   rF  rP  rG  rQ  rW   rR  ) r÷   rø   rù   rH  r>  rI  ré   rJ  r  rV   r?  rV  r@  rL  rA  rM  rB  rN  rC  rO  rD  rO  rE  rû   r]   rÙ   rF  rP  rG  rQ  rW   rW  ) r÷   rø   rù   rH  r>  rI  ré   rJ  r  rZ  r?  r[  r@  rL  rA  rM  rB  rN  rC  rO  rD  rO  rE  rû   r]   rÙ   rF  rP  rG  rQ  rW   r\  ) r÷   rø   rù   rH  r>  rI  ré   rJ  r  r^  r?  r[  r@  rL  rA  rM  rB  rN  rC  rO  rD  rO  rE  rû   r]   rÙ   rF  rP  rG  rQ  rW   r\  )r(  r)  ræ  r×   rç  r×   rW   rÙ   )rr   r-  rW   r.  )ræ  r×   r•  r4  rç  r×   rW   r5  )ræ  r×   rç  r×   rW   r5  )
rÈ  r   ræ  r×   r•  r4  rç  r×   rW   rD  )rw   rN  r]   r×   ré  r×   ræ  r×   rç  r×   rê  rO  rW   rK  )�rC   Ú
__future__r   Ú	functoolsr  rø  r  Údataclassesr   r   r   Útypingr   r   r	   r
   r   r   r   r   Ú*langchain_core.language_models.chat_modelsr   Úlangchain_core.messagesr   r   r   r   Úlangchain_core.toolsr   Úlanggraph._internal._runnabler   Úlanggraph.constantsr   r   Úlanggraph.graph.stater   Úlanggraph.prebuiltr   Úlanggraph.prebuilt.tool_noder   Úlanggraph.typesr   r   Ú	langsmithr   Útyping_extensionsr   r   r    r!   Ú&langchain.agents._subagent_transformerr"   Ú!langchain.agents.middleware.typesr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   Ú"langchain.agents.structured_outputr0   r1   r2   r3   r4   r5   r6   r7   r8   Úlangchain.chat_modelsr9   r;   Úcollections.abcrI   rJ   rK   Úlangchain_core.runnablesrL   rM   Úlanggraph.cache.baserN   rO   Úlanggraph.runtimerP   Úlanggraph.store.baserQ   Úlanggraph.stream._muxrR   rS   rT   Ú_ModelCallHandlerÚ_ComposedModelCallHandlerÚ_AsyncModelCallHandlerÚ_ComposedAsyncModelCallHandlerr  Ústripr¹  rh   r
  rn   r|   r²   r¿   Ú	lru_cacherÇ   rÔ   rÒ   rÝ   rö   r  r  r"  r4  r=  rU  r,  r3  rõ  rö  rô  r÷  Ú__all__rF   rG   rH   ú<module>rt     sŸ  ðØ @Ð @à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð EÐ DÐ DÐ DÐ DÐ DØ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ )Ð )Ð )Ð )Ð )Ð )Ø :Ð :Ð :Ð :Ð :Ð :Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hà FÐ FÐ FÐ FÐ FÐ Fðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 2Ð 1Ð 1Ð 1Ð 1Ð 1ð ðUð Uð Uð Uð U W¨YÔ%7ñ Uô Uñ „ðUð ð Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=àAÐAÐAÐAÐAÐAÐAÐAØ.Ð.Ð.Ð.Ð.Ð.Ø8Ð8Ð8Ð8Ð8Ð8Ø)Ð)Ð)Ð)Ð)Ð)Ø.Ð.Ð.Ð.Ð.Ð.Ø8Ð8Ð8Ð8Ð8Ð8Ø,Ð,Ð,Ð,Ð,Ð,àAÐAÐAÐAÐAÐAà Ø	�hÔ	 ¨<¸Ô+AÐ*BÀMÐ*QÔ!RÐSØ˜	Ñ!Ð$9Ñ9ð	;ôÐð
 !)Ø	�hÔ	 ¨<¸Ô+AÐ*BÀMÐ*QÔ!RÐSØ&ð	(ô!Ðð
 &Ø	�hÔ	 ¨<¸Ô+AÐ*BÀIÈmÔD\Ð*\Ô!]Ð^Ø�- )Ñ+Ð.CÑCÔDð	FôÐð
 &.Ø	�hÔ	 ¨<¸Ô+AÐ*BÀIÈmÔD\Ð*\Ô!]Ð^ØÐ0Ô1ð	3ô&Ð"ð $PÐ  ð÷0 
‚E�G„Gð1 ð6	ð 	ð 	ð 	ð*ð *ð *Ð &ð.ð ð ð ð$ 6:ð'ð 'ð 'ð 'ð 'ðTYð Yð Yð YðxXð Xð Xð Xðv €Ô˜SÐ!Ñ!Ô!ð7ð 7ð 7ñ "Ô!ð7ð
ð ð ð ð$ !ð"Að "Að "Að "Að "AðJð ð ð ð"ð "ð "ð "ðL QUð-ð -ð -ð -ð -ð`>ð >ð >ð >ð(*ð *ð *ð *ð<-ð -ð -ð -ð`=ð =ð =ð =ðB 
ð NRð`ð 15ØACØ ØØ,0Ø(,Ø"Ø)-Ø(,ØØØ#'Ø8<ð!`ð `ð `ð `ð `ñ 
„ð`ð* 
ð NRðð 15ØACà<@Ø,0Ø(,Ø"Ø)-Ø(,ØØØ#'Ø8<ð!ð ð ð ð ñ 
„ðð. 
ð NRðð 15ØACØJNØ7;Ø,0Ø(,Ø"Ø)-Ø(,ØØØ#'Ø8<ð!ð ð ð ð ñ 
„ðð0 NRðað 15ØACØ[_Ø7;Ø,0Ø(,Ø"Ø)-Ø(,ØØØ#'Ø8<ð!að að að að að aðHð ð ð ðð ð ð ð*3ð 3ð 3ð 3ðlð ð ð ð6!ð !ð !ð !ðH-2ð -2ð -2ð -2ðb ð€€€rG   