Ë
    tPêjp  ã                   óî  — U d dl Z d dlmZ d dlmZmZmZmZ d dlZd dl	m
Z
mZ d dlZd dlmZmZ d dlmZ dZeeedf      ed	<   d
Zeed<   er	d dlmZ eZneZdedefd„Zdedefd„Zdedededz  ddfd„Zi dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d'“d)d*“d+d,“d-d.“d/d0“d1d2“d3d4“d5d6“i d7d6“d8d9“d:d;“d<d=“d>d?“d@dA“dBdC“dDdE“dFdG“dHdI“dJdK“dLdM“dNdM“dOdP“dQdP“dRdS“dTdS“¥i dUdV“dWdV“dXdY“dZd[“d\d[“d]d^“d_d^“d`da“dbdc“ddde“dfde“dgdh“didj“dkdj“dldm“dndm“dodp“¥dqdqdrdrdrdsdtdtdudvdudwdxœ¥Z eedy<    G dz„ d{e
«      Z!d|d}d~dœZ"eeeeedf   f      ed€<    G d�„ d‚e«      Z#dedeee$f   ddfdƒ„Z% G d„„ d…e
«      Z&deee$f   d†eddfd‡„Z'defdˆ„Z(dededz  fd‰„Z)da*e jV                  dz  edŠ<   de jV                  fd‹„Z,deddfdŒ„Z-ed�   Z.	 d’dededz  dŽedz  de.d�edz  f
d�„Z/	 d’dededz  dŽedz  de.d�edz  f
d‘„Z0y)“é    N)ÚMapping)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteral)ÚHTTPExceptionÚstatus)ÚProxyExceptionÚUserAPIKeyAuth)Ú_is_proxy_admin_request)Úmock_testing_fallbacksÚmock_testing_context_fallbacksÚ%mock_testing_content_policy_fallbacksÚmock_testing_rate_limit_errorÚmock_timeoutÚ
mock_delay.ÚGATED_MOCK_PARAM_NAMESÚ-dangerously_allow_mock_testing_request_paramsÚMOCK_TESTING_CONFIG_KEY)ÚRouterÚdataÚ
route_typec                 ó0  — | j                  d«      }t        j                  j                  «       }|j	                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}t        j                  di |¤Ž} t        ||› «      di | ¤Ž}|j                  «        |S c c}}w )z6Route a request using the user-provided router config.Úuser_config© )ÚpopÚlitellmr   Úget_valid_argsÚitemsÚgetattrÚdiscard)	r   r   Úrouter_configÚ
valid_argsÚkÚvÚfiltered_configÚuser_routerÚret_vals	            úd/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/route_llm_request.pyÚ_route_user_config_requestr*   &   sŽ   € àŸ8™8 MÓ2€Mô  Ÿ™×5Ñ5Ó7€JØ/<×/BÑ/BÓ/D×X¡t q¨!ÈÈZÊ˜a ™dÐX€OÑXä Ÿ™Ñ:¨/Ñ:€KØ:”W˜[¨Z¨LÓ:ÑB¸TÑB€GØ×ÑÔØ€Nùó Ys   ÁBÁBÚ
model_nameÚreturnc                 óH   — t        | t        «      xr | j                  d«      S )z:Check if the model name is for an A2A agent (a2a/ prefix).za2a/)Ú
isinstanceÚstrÚ
startswith)r+   s    r)   Ú_is_a2a_agent_modelr1   5   s   € ä�j¤#Ó&ÒH¨:×+@Ñ+@ÀÓ+HÐHó    Ú
llm_routerÚteam_idc                 ó6  — t        |t        «      r|sy t        | t        j                  «      sy | j	                  ||¬«      xs g }| j                  |«      rCt        j                  d|dt        j                  dt        j                  dd¬«      ¬«      ¬	«      ‚y )
N)r+   r4   zModel is blockedÚ i“  ÚPOSTz"https://github.com/BerriAI/litellm)ÚmethodÚurl)Ústatus_codeÚrequest)ÚmessageÚmodelÚllm_providerÚresponse)
r.   r/   r   r   Úget_model_listÚ_are_all_deployments_blockedÚPermissionDeniedErrorÚhttpxÚResponseÚRequest)r3   r+   r4   Údeploymentss       r)   Ú_raise_if_model_fully_blockedrG   :   s‹   € Ü�j¤#Ô&©jØÜ�j¤'§.¡.Ô1ØØ#×2Ñ2¸jÐRYÐ2ÓZÒ`Ð^`€KØ×.Ñ.¨{Ô;Ü×+Ñ+Ø&ØØÜ—^‘^ØÜŸ™¨VÐ9]Ô^ôô	
ð 	
ð <r2   Úacompletionz/chat/completionsÚatext_completionz/completionsÚ
aembeddingz/embeddingsÚaimage_generationz/image/generationsÚaspeechz/audio/speechÚatranscriptionz/audio/transcriptionsÚamoderationz/moderationsÚarerankz/rerankÚ
aresponsesz
/responsesÚ_aresponses_websocketÚalist_input_itemsz$/responses/{response_id}/input_itemsÚaimage_editz/images/editsÚacancel_responsesz/responses/{response_id}/cancelÚacompact_responsesz/responses/compactÚaocrz/ocrÚasearchz/searchÚavideo_generationz/videosÚavideo_listÚavideo_statusz/videos/{video_id}Úavideo_contentz/videos/{video_id}/contentÚavideo_remixz/videos/{video_id}/remixÚavideo_create_characterz/videos/charactersÚavideo_get_characterz!/videos/characters/{character_id}Úavideo_editz/videos/editsÚavideo_extensionz/videos/extensionsÚacreate_realtime_client_secretz/realtime/client_secretsÚarealtime_callsz/realtime/callsÚ&acreate_realtime_transcription_sessionz /realtime/transcription_sessionsÚacreate_containerz/containersÚalist_containersÚaretrieve_containerz/containers/{container_id}Úadelete_containerÚaupload_container_filez /containers/{container_id}/filesÚalist_container_filesÚaretrieve_container_filez*/containers/{container_id}/files/{file_id}Úadelete_container_fileÚ aretrieve_container_file_contentz2/containers/{container_id}/files/{file_id}/contentÚacreate_skillz/skillsÚalist_skillsÚ
aget_skillz/skills/{skill_id}Úadelete_skillÚaingestz/rag/ingestÚacreate_interactionz/interactionsÚaget_interactionz/interactions/{interaction_id}Úadelete_interactionÚacancel_interactionz%/interactions/{interaction_id}/cancelÚacreate_agentz/v1beta/agentsÚalist_agentsÚ
aget_agentz/v1beta/agents/{name}Úadelete_agentÚalist_agent_versionsz/v1beta/agents/{name}/versionsz/evalsz/evals/{eval_id}z/evals/{eval_id}/cancelz/evals/{eval_id}/runsz/evals/{eval_id}/runs/{run_id}z%/evals/{eval_id}/runs/{run_id}/cancelz/batches)Úacreate_evalÚalist_evalsÚ	aget_evalÚaupdate_evalÚadelete_evalÚacancel_evalÚacreate_runÚ
alist_runsÚaget_runÚacancel_runÚadelete_runÚacreate_batchÚROUTE_ENDPOINT_MAPPINGc                   ó.   ‡ — e Zd Zddededefˆ fd„Zˆ xZS )ÚProxyModelNotFoundErrorÚrouter+   Ú!retryable_with_model_read_throughc                 óf   •— || _         d|› d|› d�i}t        ‰| �	  t        j                  |¬«       y )NÚerrorz%: Invalid model name passed in model=z:. Call `/v1/models` to view available models for your key.©r:   Údetail)r‹   ÚsuperÚ__init__r	   ÚHTTP_400_BAD_REQUEST)ÚselfrŠ   r+   r‹   r�   Ú	__class__s        €r)   r‘   z ProxyModelNotFoundError.__init__•   sG   ø€ Ø8YˆÔ.à˜�wÐCÀJÀ<ð  PJð  Kð
ˆô 	‰Ñ¤V×%@Ñ%@ÈÐÕPr2   )T)Ú__name__Ú
__module__Ú__qualname__r/   Úboolr‘   Ú__classcell__©r”   s   @r)   r‰   r‰   ”   s(   ø„ ñQ˜cð Q¨sð QÐW[÷ Qñ Qr2   r‰   )Úmessages)Úinput)Úinput_file_idÚendpointÚcompletion_window)rH   rJ   r†   ÚREQUIRED_BODY_PARAMS_BY_ROUTEc                   ó(   ‡ — e Zd Zdedefˆ fd„Zˆ xZS )ÚProxyMissingRequiredParamErrorrŠ   Úparamc                 óT   •— t         ‰| �  |› d|› d�d|t        j                  ¬«       y )Nz: Missing required parameter: 'z'.Úinvalid_request_error)r<   Útyper£   Úcode)r�   r‘   r	   r’   )r“   rŠ   r£   r”   s      €r)   r‘   z'ProxyMissingRequiredParamError.__init__¥   s5   ø€ Ü‰ÑØ�gÐ<¸U¸GÀ2ÐFØ(ØÜ×,Ñ,ð	 	õ 	
r2   )r•   r–   r—   r/   r‘   r™   rš   s   @r)   r¢   r¢   ¤   s   ø„ ð
˜cð 
¨#÷ 
ñ 
r2   r¢   c                 óž   ‡— t        ˆfd„t        j                  | d«      D «       d «      }|€y t        t        j                  | | «      |¬«      ‚)Nc              3   óF   •K  — | ]  }‰j                  |«      �Œ|–— Œ y ­w©N©Úget)Ú.0r£   r   s     €r)   ú	<genexpr>z7raise_if_required_body_param_missing.<locals>.<genexpr>°   s#   øè ø€ Òi�5ÐQU×QYÑQYÐZ_ÓQ`ÑQhŒÑiùs   ƒ!š!r   )rŠ   r£   )Únextr    r¬   r¢   r‡   )r   r   Úmissing_params    ` r)   Ú$raise_if_required_body_param_missingr±   ®   sQ   ø€ ÜÛiÔ9×=Ñ=¸jÈ"ÓMÔiØó€Mð ÐØÜ
(Ü$×(Ñ(¨°ZÓ@Øôð r2   c                   ó.   ‡ — e Zd Zdeedf   fˆ fd„Zˆ xZS )ÚMockTestingParamsDisabledErrorÚparams.c           	      ó|   •— t         ‰| �  t        j                  dddj	                  |«      › dt
        › d�i¬«       y )Nr�   z8Mock testing request params are disabled on this proxy: z, z8. An admin can enable them by setting `general_settings.zT: true` in config.yaml. This setting cannot be changed from the Admin UI or the API.rŽ   )r�   r‘   r	   r’   Újoinr   )r“   r´   r”   s     €r)   r‘   z'MockTestingParamsDisabledError.__init__¼   sR   ø€ Ü‰ÑÜ×3Ñ3àØNÈtÏyÉyÐY_ÓO`ÐNað bMÜMdÐLeð fcðcðð 	õ 		
r2   )r•   r–   r—   Útupler/   r‘   r™   rš   s   @r)   r³   r³   »   s   ø„ ð

˜u S¨# X™÷ 

ñ 

r2   r³   Úallowedc                óX   ‡ — |ryt        ˆ fd„t        D «       «      }|rt        |¬«      ‚y)a  Reject client-supplied mock testing params unless an admin opted in.

    Rejecting (rather than silently dropping) keeps a request that asked for a
    synthetic failure from returning a normal success, which reads as a passing
    fallback test that never ran.
    Nc              3   ó,   •K  — | ]  }|‰v sŒ|–— Œ y ­wrª   r   )r­   Únamer   s     €r)   r®   z:raise_if_mock_testing_params_disallowed.<locals>.<genexpr>Ò   s   øè ø€ ÒS DÀdÈdÂlœ4ÑSùs   ƒ	�)r´   )r·   r   r³   )r   r¸   Úpresents   `  r)   Ú'raise_if_mock_testing_params_disallowedr½   É   s/   ø€ ñ ØÜÓSÔ,BÔSÓS€GÙÜ,°GÔ<Ð<ð r2   c                  óR   — ddl m}  | j                  j                  t        d«      du S )z>Read the opt-in from the running proxy's ``general_settings``.r   ©Úproxy_serverFT)Úlitellm.proxyrÀ   Úgeneral_settingsr¬   r   r¿   s    r)   Úmock_testing_params_allowedrÃ   ×   s%   € å*à×(Ñ(×,Ñ,Ô-DÀeÓLÐPTÐTÐTr2   c                 ó”   — d| v r | d   �d| d   v r| d   j                  d«      S d| v r | d   �d| d   v r| d   j                  d«      S y)zN
    Get the team id from the data's metadata or litellm_metadata params.
    ÚmetadataNÚuser_api_key_team_idÚlitellm_metadatar«   )r   s    r)   Úget_team_id_from_datarÈ   Þ   sy   € ð �TÑ˜d :Ñ.Ð:Ð?UÐY]Ð^hÑYiÑ?iØ�JÑ×#Ñ#Ð$:Ó;Ð;à˜dÑ"ØÐ#Ñ$Ð0Ø" dÐ+=Ñ&>Ñ>àÐ&Ñ'×+Ñ+Ð,BÓCÐCØr2   Ú_shared_session_lockc                  óB   — t         €t        j                  «       a t         S )a7  Lazily create the shared session lock (must be called within a running event loop).

    WARNING: Do not reset _shared_session_lock to None while any coroutine may be
    executing the session-recovery path; doing so breaks the double-checked locking
    guarantee and can cause duplicate session creation.
    )rÉ   ÚasyncioÚLockr   r2   r)   Ú_get_shared_session_lockrÍ   ð   s   € ô Ð#Ü&Ÿ|™|›~ÐÜÐr2   c              ƒ   óH  K  — 	 ddl m} ddlm} |j                  }|�-|j
                  s!|| d<   |j                  dt        |«      «       y|�Ë|j
                  r¿t        «       }|4 ƒd{  –—†  |j                  }|�#|j
                  s|| d<   	 ddd«      ƒd{  –—†  y|�|j                  dt        |«      «       n|j                  d«       	 |j                  «       ƒ d{  –—† }|�||_        || d<   n|j                  d
«       ddd«      ƒd{  –—†  y|j                  d«       y7 ŒÀ7 Œ’7 ŒK# t        $ r |j                  d	«       d}Y Œgw xY w7 Œ?# 1 ƒd{  –—†7  sw Y   yxY w# t        $ r- 	 ddl m} |j                  dd¬«       Y y# t        $ r Y Y yw xY ww xY w­w)a  
    Add shared aiohttp session for connection reuse (prevents cold starts).
    If the session was closed (e.g. due to network interruption or idle timeout),
    automatically recreates it so connection pooling is restored.
    Uses an asyncio.Lock to prevent race conditions where multiple concurrent
    requests could each create a new session, leaking intermediate ones.
    Silently continues without session reuse if import fails or session is unavailable.

    Args:
        data: Dictionary to add the shared session to
    r   )Úverbose_proxy_loggerr¿   NÚshared_sessionzBSESSION REUSE: Attached shared aiohttp session to request (ID: %s)zGSESSION REUSE: Shared aiohttp session is closed (ID: %s), recreating...zKSESSION REUSE: Shared aiohttp session is None after re-check, recreating...z9SESSION REUSE: Exception during shared session recreationzRSESSION REUSE: Failed to recreate shared session, continuing without session reusez;SESSION REUSE: No shared session available for this requestzJSESSION REUSE: Unexpected error in session setup, continuing without reuseT)Úexc_info)Úlitellm._loggingrÏ   rÁ   rÀ   Úshared_aiohttp_sessionÚclosedÚinfoÚidrÍ   ÚwarningÚ"_initialize_shared_aiohttp_sessionÚ	ExceptionÚ	exceptionÚdebug)r   rÏ   rÀ   ÚsessionÚlockÚnew_sessions         r)   Úadd_shared_session_to_datarß   ý   sÈ  è ø€ ð8Ý9Ý.à×5Ñ5ˆàÐ w§~¢~Ø%,ˆDÐ!Ñ"Ø ×%Ñ%Ð&jÔlnÐovÓlwÕxØÐ  W§^¢^ô 3Ó4ˆDØ÷ ñ à&×=Ñ=�ØÐ&¨w¯~ª~Ø-4�DÐ)Ñ*Ø÷÷ ð ð Ð&Ø(×0Ñ0ØaÔceÐfmÓcnõð )×0Ñ0Øeôð'Ø(4×(WÑ(WÓ(Y×"Y�Kð Ð*Ø:E�LÔ7Ø-8�DÐ)Ò*à(×-Ñ-Ølô÷5÷ ð ð< !×%Ñ%Ð&cÕdð=øð øð$ #ZùÜ ò 'Ø(×2Ñ2Ð3nÔoØ"&’Kð'úð'ø÷ ÷ ñ ûô> ò ð	Ý=à ×&Ñ&Ø\Øð 'ö øô ò 	Úð	úðüs  ‚F"„AE) Á
F"ÁE) Á)D*Á*E) Á-!EÂE) ÂD,ÂE) ÂF"Â/EÃD0Ã"D.Ã#D0Ã' EÄE) ÄEÄE) ÄF"ÄE) Ä)F"Ä*E) Ä,E) Ä.D0Ä0EÅEÅEÅEÅE) ÅE&ÅEÅE&Å"E) Å%F"Å&E) Å)	FÅ3FÆF"Æ	FÆFÆF"ÆFÆFÆF")_rH   rI   rJ   rK   rL   rM   rN   rO   rP   Úaget_responsesÚadelete_responsesrT   rU   Úacreate_response_replyrR   Ú
_arealtimera   rb   rc   rQ   rS   Úagenerate_contentÚagenerate_content_streamÚallm_passthrough_router†   Úaretrieve_batchÚalist_batchesÚafile_contentÚafile_retrieveÚacreate_fine_tuning_jobÚacancel_fine_tuning_jobÚalist_fine_tuning_jobsÚaretrieve_fine_tuning_jobÚavector_store_searchÚavector_store_createÚavector_store_retrieveÚavector_store_listÚavector_store_updateÚavector_store_deleteÚavector_store_file_createÚavector_store_file_listÚavector_store_file_retrieveÚavector_store_file_contentÚavector_store_file_updateÚavector_store_file_deleterV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   Úanthropic_messagesrr   rs   rt   ru   rv   rw   rx   ry   rz   Úasend_messageÚcall_mcp_toolÚacancel_batchÚafile_deleter{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   Ú
user_modelÚuser_api_key_dictc              ƒ   ób  K  — 	 t        | ||||¬«      ƒ d{  –—† S 7 Œ# t        $ r…}| j                  dd«      }|j                  rt	        |t
        «      r|s‚ ddlm} ddlm	} |j                  |«      ƒ d{  –—†7  s‚ t        | |j                  |||¬«      ƒ d{  –—†7  cY d}~S d}~ww xY w­w)z,
    Common helper to route the request
    )r   r3   r   r   r  Nr=   r6   r   r¿   )Úmodel_registry_read_through)Ú_route_request_single_attemptr‰   r¬   r‹   r.   r/   rÁ   rÀ   Ú0litellm.proxy.common_utils.registry_read_throughr  Úattemptr3   )	r   r3   r   r   r  ÚeÚrequested_modelrÀ   r  s	            r)   Úroute_requestr	  §  s¸   è ø€ ð
Ü2ØØ!Ø!Ø!Ø/ô
÷ 
ð 	
ð 
ùô #ò 
Ø!%§¡¨'°2Ó!6ˆØ×2Ò2¼*À_ÔVYÔ:ZÑbqØÝ.õ	
ð 1×8Ñ8¸ÓI×IÑIØÜ2ØØ#×.Ñ.Ø!Ø!Ø/ô
÷ 
ð 
õ 	
ûð
üsU   ‚B/„ —˜ ›B/œ ž	B,§AB'Á8A;Á9#B'ÂBÂB'Â!B,Â"B/Â'B,Â,B/c              ƒ   ó\
  K  — t        || ¬«       t        | «      ƒ d {  –—†  t        | t        «       ¬«       | j	                  dd «       t        | «      }|�|j                  ng }|d u xr t        | «      }|dv rd| v rd| vr| j	                  d«      | d<   d| v sd| v r,|� t        ||› «      d%i | ¤ŽS  t        t        |› «      d%i | ¤ŽS |d	k(  r›| j                  d
d«      �‰d| j                  d
d«      v ru|�s| j                  dd«      r |j                  d%i | ¤ŽS | j	                  d
«      j                  d«      D �cg c]  }|j                  «       ‘Œ }	} |j                  d%d|	i| ¤ŽS d| v rt        | |«      S d| v rZ| j	                  d«      }
g d¢}|D ]  }||
v sŒ|| vsŒ|
|   | |<   Œ |� t        ||› «      d%i | ¤ŽS  t        t        |› «      d%i | ¤ŽS |��Àt!        || j                  d
«      |¬«       |dv r¡| j                  d
«      }|rw|ru	 |j#                  |¬«      }|sM|j%                  |¬«      }|r9|j&                  r-|j)                  |«      s|j&                  j+                  d¬«      }|r| j-                  |«        t        t        |› «      d%i | ¤ŽS |dv r t        ||› «      d%i | ¤ŽS |dv r t        ||› «      d%i | ¤ŽS |dv r t        ||› «      d%i | ¤ŽS |dv r<| j                  d
«      �| j                  d
«      dk(  r t        t        |› «      d%i | ¤ŽS |�|j1                  | d
   |«      nd }|�|| d
<    t        ||› «      d%i | ¤ŽS |r| d
   |vr| d
   |j2                  v s|j5                  | d
   «      r t        ||› «      d%i | ¤ŽS | d
   |v�r|j6                  j8                  r t        t        |› «      d%i | ¤ŽS |j:                  €"t=        |j>                  j@                  «      dkD  r t        ||› «      d%i | ¤ŽS | d
   |jB                  v r t        ||› «      d%i | ¤ddi¤ŽS |dv r t        ||› «      d%i | ¤ŽS |d v r	  t        ||› «      d%i | ¤ŽS tE        | j                  d
d«      «      r;dd!l#m$}  || ||¬"«      ƒ d {  –—† }|� |S |€|d#k(  r t        t        |› «      d%i | ¤ŽS tJ        j                  ||«      }tM        || j                  d
d«      ¬$«      ‚7 �ŒÎc c}w # t.        $ r Y �Œzw xY w# t.        $ r  t        t        |› «      d%i | ¤ŽcY S w xY w7 Œ—­w)&N)r   r   )r¸   Úenable_tag_filtering)rä   rå   ÚgenerationConfigÚconfigÚapi_keyÚapi_baserH   r=   r6   ú,Úfastest_responseFÚmodelsr   Úrouter_settings_override)Ú	fallbacksÚcontext_window_fallbacksÚcontent_policy_fallbacksÚnum_retriesÚtimeoutÚmodel_group_retry_policyÚrouting_strategyr  )r3   r+   r4   )r{   r|   r}   r~   r   r€   r�   r‚   rƒ   r„   r…   )Úmodel_id)Úmodel_group_nameT)Úexclude_none)	rd   re   rf   rg   rh   ri   rj   rk   rl   )rr   rs   rt   ru   )rv   rw   rx   ry   rz   )rY   rZ   r[   r\   r]   r^   r_   r`   rö   r÷   rø   rú   rm   rn   ro   rp   rq   r   Úspecific_deployment)rN   rà   rá   rT   rR   rð   rï   rñ   rò   ró   rô   rõ   rö   r÷   rø   rù   rú   rW   rd   re   rf   rg   rh   ri   rj   rk   rl   )rZ   r[   r\   r]   r^   r_   r`   )Úroute_a2a_agent_request)r  ræ   )rŠ   r+   r   )'r±   rß   r½   rÃ   r   rÈ   Úmodel_namesr   r    r   r¬   Ú"abatch_completion_fastest_responseÚsplitÚstripÚabatch_completionr*   rG   Úget_deployment_credentialsÚ"get_deployment_by_model_group_nameÚlitellm_paramsÚ_is_deployment_blockedÚ
model_dumpÚupdaterÙ   Úmap_team_modelÚteam_public_model_namesÚis_recognized_modelÚrouter_general_settingsÚpass_through_all_modelsÚdefault_deploymentÚlenÚpattern_routerÚpatternsÚdeployment_namesr1   Ú)litellm.proxy.agent_endpoints.a2a_routingr  r‡   r‰   )r   r3   r   r   r  r4   Úrouter_model_namesÚis_proxy_admin_without_teamr=   r  Úoverride_settingsÚper_request_settingsÚkeyÚdeployment_credsÚ
deploymentÚteam_model_namer  ÚresultÚ
route_names                      r)   r  r  Í  s2  è ø€ ô )°JÀTÕJä
$ TÓ
*×*Ð*ä+¨DÔ:UÓ:WÕXà‡H�HÐ# TÔ*ä*¨4Ó0€GØ:DÐ:P 
× 6Ò 6ÐVXÐØ)0°D¨Ò)ZÔ=TÐUYÓ=ZÐð ÐFÑFà Ñ%¨(¸$Ñ*>Ø!ŸX™XÐ&8Ó9ˆD�‰NØ�DÑ˜J¨$Ñ.ØÐ!Ø7”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?à4”7œ7 z lÓ4Ñ<°tÑ<Ð<ð 	�mÒ#Ø�H‰H�W˜bÓ!Ð-Ø�4—8‘8˜G RÓ(Ñ(ØÐ"ð �8‰8Ð&¨Ô.Ø@�:×@Ñ@ÑHÀ4ÑHÐHà8<¿¹ÀÓ8I×8OÑ8OÐPSÓ8TÖU¨u˜UŸ[™[�]ÐUˆFÐUØ/�:×/Ñ/ÑF°vÐFÀÑFÐFà	˜$Ñ	Ü)¨$°
Ó;Ð;à	# tÑ	+ð $(§8¡8Ð,FÓ#GÐò	'
Ðð (ò 	3ˆCØÐ'Ò'¨C°tªOØ-¨cÑ2��S’	ð	3ð
 Ð!Ø7”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?à4”7œ7 z lÓ4Ñ<°tÑ<Ð<Ø	Ñ	Ü%°ÈÏÉÐQXÓHYÐcjÕkð ð 
ñ 
ð  Ÿ8™8 GÓ,ˆEÙ™ðà'1×'LÑ'LÐV[Ð'LÓ'\Ð$Ù+à,6×,YÑ,YÐkpÐ,YÓ,q˜
á&Ø *× 9Ò 9Ø$.×$EÑ$EÀjÔ$Qà/9×/HÑ/H×/SÑ/SÐaeÐ/SÓ/fÐ,ñ (ØŸ™Ð$4Ô5ð
 5”7œ7 z lÓ4Ñ<°tÑ<Ð<àð 

ñ 

ð 8”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?àð 
ñ 
ð 8”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?àð 
ñ 
ð 8”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?Øð 
ñ 
ð$ �x‰x˜Ó Ð(¨D¯H©H°WÓ,=ÀÒ,Cà4”7œ7 z lÓ4Ñ<°tÑ<Ð<àV]ÐVi ×!:Ñ!:¸4À¹=È'Ô!RÐosˆØÐ&Ø+ˆD�‰MØ7”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?ñ (Ø�W‘Ð%7Ñ7Ø�W‘ ×!CÑ!CÑCØ×+Ñ+¨D°©MÔ:Ø7”7˜:¨*¨Ó7Ñ?¸$Ñ?Ð?à�'‰]Ð"4Ò4ð ×1Ñ1×IÒIØ8”wœw¨:¨,Ó8Ñ@¸4Ñ@Ð@Ø×.Ñ.Ð:¼cÀ*×B[ÑB[×BdÑBdÓ>eÐhiÒ>iØ;”w˜z¨j¨\Ó;ÑC¸dÑCÐCØ�g‘ *×"=Ñ"=Ñ=à;”w˜z¨j¨\Ó;Ñ]¸dÑ]ÐX\Ò]Ð]Øð  ñ ð< <”w˜z¨j¨\Ó;ÑC¸dÑCÐCØð  ñ ðEØ?œ7 :°*°Ó?ÑGÀ$ÑGÐGô % T§X¡X¨g°rÓ%:Ô;õñ '>¸dÀJÐbsÔ&t× t�ØÐ%Ø!�Mð 
Ð	 :Ð1IÒ#IØ0Œw”w : ,Ó0Ñ8°4Ñ8Ð8ô /×2Ñ2°:¸zÓJ€JÜ
!ØØ—8‘8˜G RÓ(ôð ði +ûò@ VøôN !ò âðûôv !ò Eà<œ7¤7¨z¨lÓ<ÑD¸tÑDÒDðEúð !uús‡   ‚T,žS,ŸDT,Ä=S/ÅAT,ÆT,Æ"A/T,ÈA4S4 ÊG	T,ÑT Ñ"0T,ÒT*ÒAT,Ó/T,Ó4	TÓ=T,Ô TÔT,Ô T'Ô$T,Ô&T'Ô'T,rª   )1rË   Úcollections.abcr   Útypingr   r   r   r   rC   Úfastapir   r	   r   Úlitellm.proxy._typesr
   r   Ú!litellm.router_utils.common_utilsr   r   r·   r/   Ú__annotations__r   Úlitellm.routerr   Ú_RouterÚLitellmRouterÚdictr*   r˜   r1   rG   r‡   r‰   r    r¢   Úobjectr±   r³   r½   rÃ   rÈ   rÉ   rÌ   rÍ   rß   Ú	RouteTyper	  r  r   r2   r)   ú<module>rL     sq  ðÜ Ý #ß 5Ó 5ã ß )ã ß ?Ý Eð2Ð ˜˜e C¨ H™oÑ.ó ð "QÐ ˜Ó PáÝ0à�Mà€Mð Tð °só ðI Cð I¨Dó Ið

¨mð 
Èð 
ÐWZÐ]aÑWað 
Ðfjó 
ð$E!ØÐ&ðE!à˜ðE!ð �-ðE!ð Ð-ð	E!ð
 ˆðE!ð Ð-ðE!ð �>ðE!ð ˆyðE!ð �,ðE!ð ˜\ðE!ð Ð?ðE!ð �?ðE!ð Ð:ðE!ð Ð.ðE!ð ˆFðE!ð  ˆyð!E!ð" ˜ñ#E!ð$ �9ð%E!ð& Ð)ð'E!ð( Ð2ð)E!ð* Ð.ð+E!ð, Ð3ð-E!ð. Ð?ð/E!ð0 �?ð1E!ð2 Ð,ð3E!ð4 %Ð&@ð5E!ð6 Ð(ð7E!ð8 -Ð.Pð9E!ð: ˜ð;E!ð< ˜ð=E!ð> Ð7ð?E!ð@ Ð5ðAE!ðD Ð@ðEE!ðF Ð?òGE!ðH Ð LðIE!ðJ ÐJðKE!ðL 'Ð(\ðME!ðN �YðOE!ðP �IðQE!ðR Ð&ðSE!ðT Ð)ðUE!ðV ˆ}ðWE!ðZ ˜?ð[E!ð\ Ð8ð]E!ð^ Ð;ð_E!ð` ÐBðaE!ðd Ð%ðeE!ðf Ð$ðgE!ðh Ð)ðiE!ðj Ð,ðkE!ðl Ð<ñmE!ðp ØØ#Ø&Ø&Ø-à*Ø)Ø0Ø:Ø3ØòIE!Ð ˜ó EôPQ˜mô Qð !ØØGñGÐ ˜u W¨S°%¸¸S¸±/Ð-AÑ%BÑCó ô
 ^ô 
ð
°Sð 
ÀÈÈVÈÑ@Tð 
ÐY]ó 
ô
 ]ô 
ð=°'¸#¸v¸+Ñ2Fð =ÐTXð =Ð]aó =ðU Tó Uð ð ¨¨t©ó ð -1Ð �g—l‘l TÑ)Ó 0ð
  '§,¡,ó 
 ðD¨4ð D°Dó DðN ð^ñ`€	ðP 04ñ#
Ø
ð#
à Ñ$ð#
ð �d‘
ð#
ð ð	#
ð
 &¨Ñ,ó#
ðV 04ñ@Ø
ð@à Ñ$ð@ð �d‘
ð@ð ð	@ð
 &¨Ñ,ô@r2   