
    gt                     !   U d dl Z  e j                  dd       d dlZd dl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mZ d dlmZmZmZmZ d dlmZ d d	lmZmZ d d
lmZmZmZ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)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0 d dlm1Z1m2Z2 d dl3m4Z4 d dl5Z5d dl6Z6d dl7m8Z8  ejr                  dd      Z:e:dk(  r e6jv                          edk(  r e        g Z<ee	e=ef      e>d<   g Z?ee	e=ef      e>d<   g Z@ee	e=ef      e>d<   g ZAee	e=ef      e>d<   ed   ZBdZCee	ee=   ed   f      e>d<    eD eeB            ZEee>d<   g ZFee	eeBe4f      e>d<   dZGeee=      e>d<   dZHeeI   e>d<   dZJeeI   e>d<   d ZKeeL   e>d!<   dZMeee=e
f      e>d"<   g ZNee   e>d#<   g ZOee	e=ef      e>d$<   g ZPee   e>d%<   g ZQee   e>d&<   g ZRee   e>d'<   d ZSeeL   e>d(<   d ZTeLe>d)<   d ZUeeL   e>d*<   d ZVeeL   e>d+<   dZWeeL   e>d,<   d ZXdZYee=   e>d-<   dZZee=   e>d.<   dZ[d/Z\ eL ejr                  d0d             Z]d Z^dZ_dZ`ee=   e>d1<   dZaee=   e>d2<   dZbee=   e>d3<   dZcee=   e>d4<   dZdee=   e>d5<   dZeee=   e>d6<   dZfee=   e>d7<   dZgee=   e>d8<   dZhee=   e>d9<   dZiee=   e>d:<   dZjee=   e>d;<   dZkee=   e>d<<   dZlee=   e>d=<   dZmee=   e>d><   dZnee=   e>d?<   dZoee=   e>d@<   dZpee=   e>dA<   dZqee=   e>dB<   dZree=   e>dC<   dZsee=   e>dD<   dZtee=   e>dE<   dZuee=   e>dF<   dZvee=   e>dG<   dZwee=   e>dH<   dZxee=   e>dI<   g dJg dKdLZyeze>dM<   d Z{eLe>dN<   dZ|e	e=eLf   e>dO<   dZ}ee=   e>dP<   d Z~eLe>dQ<   d ZeLe>dR<    e       Zee>dS<   d ZeLe>dT<   d ZeeL   e>dU<   dVZdWZdXZee>dY<   dZee=   e>dZ<   dZee=   e>d[<   dZee=   e>d\<   dZee   e>d]<   dZee=   e>d^<   dZee	e=ef      e>d_<   dZee	e=ef      e>d`<   daZedb   e>dc<   i Zee=e,f   e>dd<   d ZeLe>de<   d ZeLe>df<   d ZeLe>dg<   dZeLe>dh<   dZeeL   e>di<   d ZeLe>dj<   d ZeLe>dk<   d ZeLe>dl<   dZee   e>dm<   dZee   e>dn<   dZee   e>do<   dZee   e>dp<   i Zee=e=f   e>dq<   i Zee=e=f   e>dr<   dsZee>dt<   dZee=   e>du<   dvZee>dw<   d ZeLe>dx<   g dyZg dzZg d{ZdsZi Zee>d|<   d ZeLe>d}<   dZee5jR                     e>d~<   dZee5jV                     e>d<   dZee   e>d<   dZe=e>d<   d ZdZee=   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee0   e>d<   dZee1   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee=   e>d<   dZeee=ef      e>d<   dZee   e>d<   dZeeL   e>d<   dZeeL   e>d<   g Zee=   e>d<   dZeee=ef      e>d<   dZdZee>d<   d ZeLe>d<    eed      Z eeì      ZdZeeI   e>d<   dZeeI   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZee   e>d<   dZeIe>d<   dZeeI   e>d<   dZee
   e>d<   dZee=   e>d<   dZee.   e>d<    e/       Ze/e>d<   d ZeLe>d<   de=fdZ ee      Zi Zee=ezf   e>d<    G d dej                        Z eث       Zd ZdZdZdZdZdZdZdZeez   e>d<   g dZg Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   eZee>d<   g Zee>d<   g Zee>d<   g Z ee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Z	ee>d<   g Z
ee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   g Zee>d<   d Z e        g dZee>d<   g dZee>d<   g dZee>d<   g dZee>d<   g dZee>d<   g dZee>d<   g dZee>d<   ddgZg dZee>d<   g dZee>d<   ddddZdd iZdgZ dgZ!dgZ"eez   ez   ez   ez   ez   ez   ez   ez   ez   ez   ez   ez   ez   ez   ez   e!z   ez   e z   ez   e"z   ez   ez   ez   ez   ez   ez   ez   ez   ez   e	z   e
z   ez   ez   ez   ez   ez   ez   ez   ez   ez   Z# e$e#      Z% eDe2      Z&ee	e2e=f      e>d<   i deez   dedeez   ded	ed
edededededeez   ez   ez   ez   dedeez   de de!de dei de"dededeez   dededededededed ed!e	d"e
d#ed$ed%eeeez   eeeeed&Z'eze>d'<   d(d)d*d+d,d-d.d.d/d/d0d0d1d2d3Z(eze>d4<   d5gZ)ee>d6<   g d7Z*ee>d8<   g d9Z+ee>d:<   e)e*z   e+z   ez   ez   Z,d;d<gZ-d=dl.m.Z. d=d>l/m0Z0 d d?l1m2Z2m3Z3 d d@l4m5Z5 d dAl6m7Z7 d dBl8m9Z9 d=dCl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_ eXeZe[e\e]gZ`d=dDlambZb d=dElcmdZd d=dFlemfZf d=dGlgmhZh d=dHlimjZj d=dIlkmlZl d=dJlmmnZo d=dKlpmqZq d=dLlrmsZs d=dMltmuZu d=dNlvmwZw d=dOlxmyZy d=dPlzm{Z{ d=dQl|m}Z} d=dRl~mZ d=dSl~mZ d=dTl~mZ d=dUlmZ d=dVlmZ d=dWlmZ d=dXlmZ d=dYlmZ d=dZlmZ d=d[lmZ d=d\lmZ d=d]lmZ d=d^lmZ d=d_lmZmZ d=d`lmZ d=dalmZ d=dblmZ d=dclmZ d=ddlmZ d=delmZ d=dflmZ d=dglmZmZ d=dhlmZmZ d=dilmZ  e       Zd=djlmZ d=dklmZ d=dllmZ d=dmlmZ d=dnlmZ d=dolmZ d=dplmZ d=dqlmZmZ d=drlmÐZ d=dslĐmŐZŐmƐZƐmǐZǐmȐZȐmɐZɐmʐZʐmːZːm̐Z d=dtl͐mΐZ d=dulϐmАZ d=dvlѐmҐZ d=dwlӐmԐZ d=dxlՐm֐Z d=dylאmؐZ d=dz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 d=dlmZ d=dlmZ d=dlmZ d=dlmZ  e       Zd=dlmZ  e       Zd=dlmZ  e       Zd=dlmZ d=dlmZ  e       Z e       Zd=dlmZ d=dlmZ d=dlmZ d=dlm Z  d=dlmZ d=dlmZ d=dlmZ d=dlmZ d=dl	m
Z
 d=dlmZ d=dlmZ d=dlmZ d=dlmZmZ d=dlmZ d=dlmZ d=dlmZ d=dlmZ d=dlmZ d=dlmZ d=dl m!Z! d=dl"m#Z# d=dl$m%Z% d=dl&m'Z' d=dl(m)Z) d=dl*m+Z+ d=dl,m-Z- d=dl. d=dl/ d=dl0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d=dlEmFZF d=dlGmHZH d=dlImJZJ d=dlK d=dlL d=dlM d=dlN d=dlOmPZP d=dlQ d=dlR d=dlS d=dl/mTZTmUZU d=dlVmWZW g ZXeeW   e>d<   d=dlYmZZZ d=dl[m\Z\ g Z]eeZ   e>d<   g Z^ee=   e>d<   y(      Nignorez%.*conflict with protected namespace.*)message)CallableListOptionalDictUnionAnyLiteralget_args)AsyncHTTPHandlerHTTPHandler)Cache	DualCache
RedisCacheInMemoryCache)COHERE_EMBEDDING_INPUT_TYPES)ImageObjectBudgetConfig)set_verbose_turn_on_debugverbose_logger	json_logs_turn_on_json	log_level)	DEFAULT_BATCH_SIZEDEFAULT_FLUSH_INTERVAL_SECONDSROUTER_MAX_FALLBACKSDEFAULT_MAX_RETRIES!DEFAULT_REPLICATE_POLLING_RETRIES'DEFAULT_REPLICATE_POLLING_DELAY_SECONDSLITELLM_CHAT_PROVIDERS"HUMANLOOP_PROMPT_CACHE_TTL_SECONDSOPENAI_CHAT_COMPLETION_PARAMS)GuardrailItem)KeyManagementSystemKeyManagementSettings#LiteLLM_UpperboundKeyGenerateParams)StandardKeyGenerationConfigLlmProviders)CustomLogger)EnumLITELLM_MODEDEVTinput_callbacksuccess_callbackfailure_callbackservice_callback)lago	openmeterlogfire	literalaidynamic_rate_limiter	langsmith
prometheusoteldatadogdatadog_llm_observabilitygalileo
braintrustarize	langtrace
gcs_bucketazure_storageopikargillamlflowlangfuse	pagerduty	humanloop*logged_real_time_event_types)_known_custom_logger_compatible_callbacks	callbackslangfuse_default_tagslangsmith_batch_sizeargilla_batch_sizeFdatadog_use_v1argilla_transformation_object_async_input_callback_async_success_callback_async_failure_callbackpre_call_rulespost_call_rulesturn_off_message_logginglog_raw_request_responseredact_messages_in_exceptionsredact_user_api_key_info#add_user_information_to_llm_headersemailtoken   LITELLM_DROP_PARAMSapi_key
openai_keygroq_keydatabricks_keyopenai_like_key	azure_keyanthropic_keyreplicate_key
cohere_keyinfinity_keyclarifai_keymaritalk_keyai21_key
ollama_keyopenrouter_keypredibase_keyhuggingface_keyvertex_projectvertex_locationpredibase_tenant_idtogetherai_api_keycloudflare_api_keybaseten_keyaleph_alpha_keynlp_cloud_key)projectregion_namer]   )	vertex_aibedrockwatsonxazurevertex_ai_beta)params	providers!common_cloud_provider_auth_params
use_client
ssl_verifyssl_certificatedisable_streaming_logging(disable_add_transform_inline_image_blockin_memory_llm_clients_cachesafe_memory_modeenable_azure_ad_token_refreshz2024-08-01-previewz
2024-03-13search_document#COHERE_DEFAULT_EMBEDDING_INPUT_TYPEllamaguard_model_nameopenai_moderations_model_namepresidio_ad_hoc_recognizers&google_moderation_confidence_threshold$llamaguard_unsafe_content_categoriesblocked_user_listbanned_keywords_listall)r   zkey-specificzrequest-specificllm_guard_modeguardrail_name_config_mapenable_preview_featuresreturn_response_headersenable_json_schema_validationlogging'enable_loadbalancing_on_batch_endpoints3enable_caching_on_provider_specific_optional_paramscachingcaching_with_modelscachedefault_in_memory_ttldefault_redis_ttl default_redis_batch_cache_expirymodel_alias_mapmodel_group_alias_mapg        
max_budgetbudget_durationg      I@default_soft_budget#forward_traceparent_to_llm_provider)stoplengthfunction_callcontent_filternull)	functionsr   temperaturer   top_pnstreamr   
max_tokenspresence_penaltyfrequency_penalty
logit_biasuserrequest_timeoutapi_baseapi_versionr`   deployment_idorganizationbase_urldefault_headerstimeoutresponse_formatseedtoolstool_choicemax_retries)%metadataacompletionr   mock_responser`   r   r   force_timeout	logger_fnverbosecustom_llm_providerlitellm_logging_objlitellm_call_idr   id	fallbacksr~   headers
model_listnum_retriescontext_window_fallback_dictrolesfinal_prompt_value	bos_token	eos_tokenr   complete_responseselfclientrpmtpminput_cost_per_tokenoutput_cost_per_tokenhf_model_name
model_infoproxy_server_requestpreset_cache_key
error_logsadd_function_to_promptclient_sessionaclient_sessionmodel_fallbacksz[https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.jsonmodel_cost_map_urldynamodb_table_names3_callback_paramsgeneric_logger_headersdefault_key_generate_paramsupperbound_key_generate_paramskey_generation_settingsdefault_internal_user_paramsdefault_team_settingsmax_user_budget default_max_internal_user_budgetmax_internal_user_budget
   max_ui_session_budgetinternal_user_budget_durationtag_budget_configmax_end_user_budgetdisable_end_user_cost_tracking.disable_end_user_cost_tracking_prometheus_only!custom_prometheus_metadata_labelspriority_reservationd   ip  r   
force_ipv4zmodule level aclient)r   client_aliasr   r   max_fallbacksdefault_fallbacksr   context_window_fallbackscontent_policy_fallbacks   allowed_failsnum_retries_per_requestsecret_manager_client_google_kms_resource_name_key_management_system_key_management_settingsoutput_parse_piiurlc                 .   t        j                  dd      dk(  st        j                  dd      dk(  rAdd l}dd l}|j                  j                  dd      5 }|j                  |      }|cd d d        S 	 t        j                  | d	      }|j                          |j                         }|S # 1 sw Y   CxY w# t        $ rQ dd l}dd l}|j                  j                  dd      5 }|j                  |      }|cd d d        cY S # 1 sw Y   Y y xY ww xY w)
NLITELLM_LOCAL_MODEL_COST_MAPFTTruer   litellmz+model_prices_and_context_window_backup.json   r   )osgetenvimportlib.resourcesjson	resources	open_textloadhttpxgetraise_for_status	Exception)r  	importlibr  fcontentresponses         E/var/www/openai/venv/lib/python3.12/site-packages/litellm/__init__.pyget_model_cost_mapr#  ^  s    
		0%8D@993U;vE"  **D
iilG	
 
99
 	!!#--/
 
  "  **D
iilG	
 
 
	s6   B.58B: .B7:-D'D:
DD	DD)r  custom_prompt_dictc                       e Zd Zd Zy)MyLocalc                     d| _         y )NzHello World)r   )r   s    r"  __init__zMyLocal.__init__  s	    !	    N)__name__
__module____qualname__r(   r)  r"  r&  r&    s    "r)  r&  c                 *    d| v r| d   t         _        y y )Nr   )_thread_contextr   )event_detailss    r"  identifyr1    s    ,V4 r)  vertex_ai_safety_settings)z(anthropic.claude-3-5-haiku-20241022-v1:0z)anthropic.claude-3-5-sonnet-20241022-v2:0z)anthropic.claude-3-5-sonnet-20240620-v1:0z%anthropic.claude-3-opus-20240229-v1:0z'anthropic.claude-3-sonnet-20240229-v1:0z&anthropic.claude-3-haiku-20240307-v1:0zanthropic.claude-v2zanthropic.claude-v2:1zanthropic.claude-v1zanthropic.claude-instant-v1zai21.jamba-instruct-v1:0meta.llama3-70b-instruct-v1:0zmeta.llama3-8b-instruct-v1:0zmeta.llama3-1-8b-instruct-v1:0zmeta.llama3-1-70b-instruct-v1:0z meta.llama3-1-405b-instruct-v1:0r3  zmistral.mistral-large-2407-v1:0zmistral.mistral-large-2402-v1:0zmeta.llama3-2-1b-instruct-v1:0zmeta.llama3-2-3b-instruct-v1:0zmeta.llama3-2-11b-instruct-v1:0zmeta.llama3-2-90b-instruct-v1:0z meta.llama3-2-405b-instruct-v1:0open_ai_chat_completion_modelsopen_ai_text_completion_modelscohere_modelscohere_chat_modelsmistral_chat_models text_completion_codestral_modelsanthropic_modelsempower_modelsopenrouter_modelsvertex_language_modelsvertex_vision_modelsvertex_chat_modelsvertex_code_chat_modelsvertex_ai_image_modelsvertex_text_modelsvertex_code_text_modelsvertex_embedding_modelsvertex_anthropic_modelsvertex_llama3_modelsvertex_ai_ai21_modelsvertex_mistral_modelsai21_modelsai21_chat_modelsnlp_cloud_modelsaleph_alpha_modelsbedrock_modelsbedrock_converse_modelsfireworks_ai_modelsfireworks_ai_embedding_modelsdeepinfra_modelsperplexity_modelswatsonx_modelsgemini_models
xai_modelsdeepseek_modelsazure_ai_modelsvoyage_modelsdatabricks_modelscloudflare_modelscodestral_modelsfriendliai_modelspalm_modelsgroq_modelsazure_modelsazure_text_modelsanyscale_modelscerebras_modelsgaladriel_modelssambanova_modelsc                     t         j                         D ]  \  } }|j                  d      dk(  rt        j	                  |        1|j                  d      dk(  rt
        j	                  |        [|j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        /|j                  d      d	k(  rt        j	                  |        Z|j                  d      d
k(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt        j	                  |        |j                  d      dk(  rt         j	                  |        1|j                  d      dk(  rt"        j	                  |        \|j                  d      dk(  rt$        j	                  |        |j                  d      dk(  rt&        j	                  |        |j                  d      dk(  r)| j)                  dd      } t*        j	                  |        |j                  d      dk(  r)| j)                  dd      } t,        j	                  |        ,|j                  d      dk(  r)| j)                  dd      } t.        j	                  |        i|j                  d      dk(  r)| j)                  dd      } t0        j	                  |        |j                  d      dk(  r)| j)                  dd      } t2        j	                  |        |j                  d      dk(  rB|j                  d      dk(  rt4        j	                  |        "t6        j	                  |        9|j                  d      dk(  rt8        j	                  |        d|j                  d      dk(  rt:        j	                  |        |j                  d      dk(  rt<        j	                  |        |j                  d      dk(  rt>        j	                  |        |j                  d      d k(  rt@        j	                  |        |j                  d      d!k(  rtB        j	                  |        ;|j                  d      d"k(  rtD        j	                  |        f|j                  d      d#k(  rtF        j	                  |        |j                  d      d$k(  r#d%| vsd&| vstH        j	                  |        |j                  d      d'k(  rd%| vstJ        j	                  |        |j                  d      d(k(  rtL        j	                  |        $|j                  d      d)k(  rtN        j	                  |        O|j                  d      d*k(  rtP        j	                  |        z|j                  d      d+k(  rtR        j	                  |        |j                  d      d,k(  rtT        j	                  |        |j                  d      d-k(  rtV        j	                  |        |j                  d      d.k(  rtX        j	                  |        &|j                  d      d/k(  rtZ        j	                  |        Q|j                  d      d0k(  rt\        j	                  |        ||j                  d      d1k(  rt^        j	                  |        |j                  d      d2k(  rt`        j	                  |        |j                  d      d3k(  rtb        j	                  |        |j                  d      d4k(  rtd        j	                  |        (|j                  d      d5k(  rtf        j	                  |        S|j                  d      d6k(  rth        j	                  |        ~|j                  d      d7k(  stj        j	                  |         y )8Nlitellm_provideropenaitext-completion-openai
azure_textcoherecohere_chatmistral	anthropicempower
openrouterzvertex_ai-text-modelszvertex_ai-code-text-modelszvertex_ai-language-modelszvertex_ai-vision-modelszvertex_ai-chat-modelszvertex_ai-code-chat-modelszvertex_ai-embedding-modelszvertex_ai-anthropic_modelsz
vertex_ai/ zvertex_ai-llama_modelszvertex_ai-mistral_modelszvertex_ai-ai21_modelszvertex_ai-image-modelsai21modechat	nlp_cloudaleph_alphar|   bedrock_converse	deepinfra
perplexityr}   geminifireworks_aiz-to-zfireworks-ai-defaultzfireworks_ai-embedding-modelstext-completion-codestralxaideepseekazure_aivoyage
databricks
cloudflare	codestral
friendliaipalmgroqr~   anyscalecerebras	galadrielrd  )6
model_costitemsr  r4  appendr5  r`  r6  r7  r8  r:  r;  r<  rB  rC  r=  r>  r?  r@  rD  replacerE  rF  rH  rG  rA  rJ  rI  rK  rL  rM  rN  rQ  rR  rS  rT  rO  rP  r9  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  ra  rb  rc  rd  )keyvalues     r"  add_known_modelsr    s    &&(
U99'(H4*11#6YY)*.FF*11#6YY)*l:$$S)YY)*h6  %YY)*m;%%c*YY)*i7&&s+YY)*k9##C(YY)*i7!!#&YY)*l:$$S)YY)*.EE%%c*YY)*.JJ#**3/YY)*.II"))#.YY)*.GG '',YY)*.EE%%c*YY)*.JJ#**3/YY)*.JJ#**3/YY)*.JJ++lB/C#**3/YY)*.FF++lB/C '',YY)*.HH++lB/C!((-YY)*.EE++lB/C!((-YY)*.FF++lB/C"))#.YY)*f4yy F* '',""3'YY)*k9##C(YY)*m;%%c*YY)*i7!!#&YY)*.@@#**3/YY)*k9##C(YY)*l:$$S)YY)*i7!!#&YY)*h6  %YY)*n<S %;3%F#**3/YY)*.MMS -44S9YY)*.II,33C8YY)*e3c"YY)*j8""3'YY)*j8""3'YY)*h6  %YY)*l:$$S)YY)*l:$$S)YY)*k9##C(YY)*l:$$S)YY)*f4s#YY)*f4s#YY)*g5$YY)*j8""3'YY)*j8""3'YY)*k9##C(YY)*.@@##C(Y )r)  )zapi.perplexity.aizapi.endpoints.anyscale.com/v1zapi.deepinfra.com/v1/openaizapi.mistral.ai/v1z(codestral.mistral.ai/v1/chat/completionsz'codestral.mistral.ai/v1/fim/completionszapi.groq.com/openai/v1z#https://integrate.api.nvidia.com/v1zapi.deepseek.com/v1zapi.together.xyz/v1zapp.empower.dev/api/v1z%https://api.friendli.ai/serverless/v1zapi.sambanova.ai/v1zapi.x.ai/v1zapi.galadriel.ai/v1openai_compatible_endpoints)r  rl  r  
nvidia_nimr  	sambanova	ai21_chatrq  
volcenginer  r}  rw  rx  
xinferencer|  together_airz  rn  r  r~  githublitellm_proxyhosted_vllm	lm_studior  openai_compatible_providers)r  rz  r  +openai_text_completion_compatible_providers)	predibaser  r}   _openai_like_providers)z[replicate/llama-2-70b-chat:2796ee9483c3fd7aa2e171d38f4ca12251a30609463dcfd4cd76703f22e96cdfz\a16z-infra/llama-2-13b-chat:2a7f981751ec7fdf87b5b91ad4db53683a98082e9ff7bfd12c8cd5ea85980a52zSmeta/codellama-13b:1c914d844307b0588599b8393480a3ba917b660c7e9dfae681542b5325f228dbzUreplicate/vicuna-13b:6282abe6a492de4145d7bb601023762212f9ddbbe78278bd6771c8b3b2f2a13bzajoehoover/instructblip-vicuna13b:c4c54e3c8c97cd50c2d2fec9be3b6065563ccf7d43787fb99f84151b867178fezXdaanelson/flan-t5-large:ce962b3f6792a57074a601d3979db5839697add2e4e02696b3ced4c022d4767fzWreplicate/dolly-v2-12b:ef0e1aefc61f8e096ebe4db6b2bacc297daf2ef6899f0f7e001ec445893500e5zYreplit/replit-code-v1-3b:b84f4c074b807211cd75e3e8b1589b6399052125b4c27106e43d47189e8415adreplicate_models)?z)clarifai/meta.Llama-3.Llama-3-8B-Instructz%clarifai/gcp.generate.gemma-1_1-7b-itz+clarifai/mistralai.completion.mixtral-8x22Bz'clarifai/cohere.generate.command-r-plusz&clarifai/databricks.drbx.dbrx-instructz+clarifai/mistralai.completion.mistral-largez,clarifai/mistralai.completion.mistral-mediumz+clarifai/mistralai.completion.mistral-smallz8clarifai/mistralai.completion.mixtral-8x7B-Instruct-v0_1z!clarifai/gcp.generate.gemma-2b-itz!clarifai/gcp.generate.gemma-7b-itz'clarifai/deci.decilm.deciLM-7B-instructz1clarifai/mistralai.completion.mistral-7B-Instructz clarifai/gcp.generate.gemini-proz'clarifai/anthropic.completion.claude-v1z0clarifai/anthropic.completion.claude-instant-1_2z,clarifai/anthropic.completion.claude-instantz'clarifai/anthropic.completion.claude-v2z(clarifai/anthropic.completion.claude-2_1z*clarifai/meta.Llama-2.codeLlama-70b-Pythonz,clarifai/meta.Llama-2.codeLlama-70b-Instructz1clarifai/openai.completion.gpt-3_5-turbo-instructz$clarifai/meta.Llama-2.llama2-7b-chatz%clarifai/meta.Llama-2.llama2-13b-chatz%clarifai/meta.Llama-2.llama2-70b-chatz+clarifai/openai.chat-completion.gpt-4-turboz(clarifai/microsoft.text-generation.phi-2z)clarifai/meta.Llama-2.llama2-7b-chat-vllmz+clarifai/upstage.solar.solar-10_7b-instructz,clarifai/openchat.openchat.openchat-3_5-1210z;clarifai/togethercomputer.stripedHyena.stripedHyena-Nous-7Bz clarifai/gcp.generate.text-bisonz#clarifai/meta.Llama-2.llamaGuard-7bz1clarifai/fblgit.una-cybertron.una-cybertron-7b-v2z%clarifai/openai.chat-completion.GPT-4z-clarifai/openai.chat-completion.GPT-3_5-turboz'clarifai/ai21.complete.Jurassic2-Grandez0clarifai/ai21.complete.Jurassic2-Grande-Instructz/clarifai/ai21.complete.Jurassic2-Jumbo-Instructz&clarifai/ai21.complete.Jurassic2-Jumboz&clarifai/ai21.complete.Jurassic2-Largez0clarifai/cohere.generate.cohere-generate-commandz1clarifai/wizardlm.generate.wizardCoder-Python-34Bz'clarifai/wizardlm.generate.wizardLM-70Bz*clarifai/tiiuae.falcon.falcon-40b-instructz<clarifai/togethercomputer.RedPajama.RedPajama-INCITE-7B-Chatz clarifai/gcp.generate.code-geckoz clarifai/gcp.generate.code-bisonz1clarifai/mistralai.completion.mistral-7B-OpenOrcaz5clarifai/mistralai.completion.openHermes-2-mistral-7Bz'clarifai/wizardlm.generate.wizardLM-13Bz4clarifai/huggingface-research.zephyr.zephyr-7B-alphaz*clarifai/wizardlm.generate.wizardCoder-15Bz*clarifai/microsoft.text-generation.phi-1_5z)clarifai/databricks.Dolly-v2.dolly-v2-12bzclarifai/bigcode.code.StarCoderz,clarifai/salesforce.xgen.xgen-7b-8k-instructz%clarifai/mosaicml.mpt.mpt-7b-instructz+clarifai/anthropic.completion.claude-3-opusz-clarifai/anthropic.completion.claude-3-sonnetz$clarifai/gcp.generate.gemini-1_5-prozclarifai/gcp.generate.imagen-2z=clarifai/salesforce.blip.general-english-image-caption-blip-2clarifai_models)zmeta-llama/Llama-2-7b-hfzmeta-llama/Llama-2-7b-chat-hfzmeta-llama/Llama-2-13b-hfzmeta-llama/Llama-2-13b-chat-hfzmeta-llama/Llama-2-70b-hfzmeta-llama/Llama-2-70b-chat-hfzmeta-llama/Llama-2-7bzmeta-llama/Llama-2-7b-chatzmeta-llama/Llama-2-13bzmeta-llama/Llama-2-13b-chatzmeta-llama/Llama-2-70bzmeta-llama/Llama-2-70b-chathuggingface_modelszempower/empower-functionszempower/empower-functions-small)z!togethercomputer/llama-2-70b-chatztogethercomputer/llama-2-70bztogethercomputer/LLaMA-2-7B-32Kz(togethercomputer/Llama-2-7B-32K-Instructztogethercomputer/llama-2-7bz$togethercomputer/falcon-40b-instructz#togethercomputer/falcon-7b-instructztogethercomputer/alpaca-7bzHuggingFaceH4/starchat-alphaztogethercomputer/CodeLlama-34bz'togethercomputer/CodeLlama-34b-Instructz%togethercomputer/CodeLlama-34b-Pythonzdefog/sqlcoderzNumbersStation/nsql-llama-2-7BzWizardLM/WizardCoder-15B-V1.0z$WizardLM/WizardCoder-Python-34B-V1.0z#NousResearch/Nous-Hermes-Llama2-13bzAustism/chronos-hermes-13bzupstage/SOLAR-0-70b-16bitzWizardLM/WizardLM-70B-V1.0together_ai_models)qvv0xeqq841o8w31dxrj3baseten_modelszazure/gpt-35-turbozazure/gpt-35-turbo-16kzazure/gpt-35-turbo-instruct)zgpt-35-turbozgpt-35-turbo-16kzgpt-35-turbo-instructadaz	azure/adazpetals-team/StableBeluga2llama2maritalkprovider_listrg  rh  rj  rk  rm  	replicatehuggingfacer  basetenro  r{   rq  r|   petalsollamarw  rx  r}   ry  rz  ru  r{  r|  r}  rl  r~  r  r  r  r  rt  r  r  )r  r~   ri  r  r  r  r  models_by_providerzgpt-3.5-turbo-16kzgpt-3.5-turbo-16k-0301zgpt-3.5-turbo-16k-0613z	gpt-4-32kzgpt-4-32k-0314zgpt-4-32k-0613zclaude-2zchat-bison-32kzcodechat-bison-32kz#openrouter/openai/gpt-3.5-turbo-16kzopenrouter/anthropic/claude-2)zgpt-3.5-turbozgpt-3.5-turbo-0301zgpt-3.5-turbo-0613zgpt-4z
gpt-4-0314z
gpt-4-0613zclaude-instant-1zclaude-instant-1.2z
chat-bisonzchat-bison@001zcodechat-bisonzcodechat-bison@001zopenrouter/openai/gpt-3.5-turboz&openrouter/anthropic/claude-instant-v1"longer_context_model_fallback_dictztext-embedding-ada-002open_ai_embedding_models)zembed-english-v3.0zembed-english-light-v3.0zembed-multilingual-v3.0zembed-english-v2.0zembed-english-light-v2.0zembed-multilingual-v2.0cohere_embedding_models)zamazon.titan-embed-text-v1zcohere.embed-english-v3zcohere.embed-multilingual-v3bedrock_embedding_modelszdall-e-2zdall-e-3   )completion_cost)Loggingmodify_integration)get_llm_provider)remove_index_from_tool_calls)get_modified_max_tokens)%r   exception_typeget_optional_paramsget_response_stringtoken_countercreate_pretrained_tokenizercreate_tokenizersupports_function_callingsupports_response_schema"supports_parallel_function_callingsupports_visionsupports_audio_inputsupports_audio_outputsupports_system_messagesget_litellm_paramsacreateget_max_tokensget_model_inforegister_prompt_templatevalidate_environmentcheck_valid_keyregister_modelencodedecode_calculate_retry_after_should_retryget_supported_openai_paramsget_api_baseget_first_chars_messagesModelResponseModelResponseStreamEmbeddingResponseImageResponseTranscriptionResponseTextCompletionResponseget_provider_fieldsModelResponseListIterator)	CustomLLM)OpenAILikeChatConfig)AiohttpOpenAIChatConfig)GaladrielChatConfig)GithubChatConfig)EmpowerChatConfig)HuggingfaceChatConfig)OobaboogaConfig)MaritalkConfig)OpenrouterConfig)AnthropicConfig)&AnthropicExperimentalPassThroughConfig)GroqSTTConfig)AnthropicTextConfig)TritonConfig)TritonGenerateConfig)TritonInferConfig)TritonEmbeddingConfig)DatabricksConfig)DatabricksEmbeddingConfig)PredibaseConfig)ReplicateConfig)CohereTextConfig)CohereRerankConfig)AzureAIRerankConfig)InfinityRerankConfig)ClarifaiConfig)AI21ChatConfigr  )TogetherAIConfig)TogetherAITextCompletionConfig)CloudflareChatConfig)
PalmConfig)NLPCloudConfig)PetalsConfig)AlephAlphaConfig)VertexGeminiConfigr  )GoogleAIStudioGeminiConfigr  )VertexAITextEmbeddingConfig)VertexAIAnthropicConfig)VertexAILlama3Config)VertexAIAi21Config)OllamaConfig)SagemakerConfig)SagemakerChatConfig)OllamaChatConfig)AmazonCohereChatConfigbedrock_tool_name_mappings)AmazonConverseConfig)AmazonTitanConfigAmazonAI21ConfigAmazonAnthropicConfigAmazonAnthropicClaude3ConfigAmazonCohereConfigAmazonLlamaConfigAmazonMistralConfigAmazonBedrockGlobalConfig)AmazonStabilityConfig)AmazonStability3Config)AmazonTitanG1Config)&AmazonTitanMultimodalEmbeddingG1Config)AmazonTitanV2Config)CohereChatConfig)BedrockCohereEmbeddingConfig)OpenAIConfigMistralEmbeddingConfig)DeepInfraConfig) DeepgramAudioTranscriptionConfig)OpenAITextCompletionConfig)GroqChatConfig)VoyageEmbeddingConfig)AzureAIStudioConfig)MistralConfig)OpenAIO1Config)OpenAIGPTConfig)OpenAIGPTAudioConfig)NvidiaNimConfig)NvidiaNimEmbeddingConfig)CerebrasConfig)SambanovaConfig)r  )FireworksAIConfig)FireworksAITextCompletionConfig)#FireworksAIAudioTranscriptionConfig)FireworksAIEmbeddingConfig)FriendliaiChatConfig)JinaAIEmbeddingConfig)XAIChatConfig)VolcEngineConfig)CodestralTextCompletionConfig)AzureOpenAIErrorAzureOpenAIAssistantsAPIConfig)AzureOpenAIConfig)AzureOpenAITextConfig)HostedVLLMChatConfig)LiteLLMProxyChatConfig)
VLLMConfig)DeepSeekChatConfig)LMStudioChatConfig)LmStudioEmbeddingConfig)PerplexityChatConfig)AzureOpenAIO1Config)IBMWatsonXAIConfig)IBMWatsonXChatConfig)IBMWatsonXEmbeddingConfig)rI   )AuthenticationErrorInvalidRequestErrorBadRequestErrorNotFoundErrorRateLimitErrorServiceUnavailableErrorOpenAIErrorContextWindowExceededErrorContentPolicyViolationErrorBudgetExceededErrorAPIErrorTimeoutAPIConnectionErrorUnsupportedParamsErrorAPIResponseValidationErrorUnprocessableEntityErrorInternalServerErrorJSONSchemaValidationErrorLITELLM_EXCEPTION_TYPESMockException)BudgetManager)
run_server)Router)
_arealtime)response_cost_calculatorcost_per_token)AdapterItemadapters)CustomLLMItem)GenericStreamingChunkcustom_provider_map_custom_providers(_  warningsfilterwarnings	threadingr  typingr   r   r   r   r	   r
   r   r   &litellm.llms.custom_httpx.http_handlerr   r   litellm.caching.cachingr   r   r   r   litellm.types.llms.bedrockr   litellm.types.utilsr   r   litellm._loggingr   r   r   r   r   r   litellm.constantsr   r   r   r   r    r!   r"   r#   r$   litellm.types.guardrailsr%   litellm.proxy._typesr&   r'   r(   r)   r*   "litellm.integrations.custom_loggerr+   r  dotenvenumr,   r  litellm_modeload_dotenvr/   str__annotations__r0   r1   r2   +_custom_logger_compatible_callbacks_literalrJ   listrK   rL   rM   rN   intrO   rP   boolrQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   store_audit_logsr\   r]   	telemetryr   drop_paramsmodify_paramsretryr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r   dictr   r   r   r   r   r   r   r   AZURE_DEFAULT_API_VERSIONWATSONX_DEFAULT_API_VERSIONr   r   r   r   r   floatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _openai_finish_reasons_openai_completion_params_litellm_completion_params_current_costr   r   r   Clientr   AsyncClientr   r   suppress_debug_infor   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   REPEATED_STREAMING_CHUNK_LIMITr   r   module_level_aclientmodule_level_clientr   r  r  r   r  r  r  r  r  r	  r
  r  r  r#  r  r$  localr&  r/  r1  r   r   r   r   ry   config_pathr2  BEDROCK_CONVERSE_MODELSr4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  r]  r^  r_  r`  ra  rb  rc  rd  r  r  r  r  r  r  r  r  r  r  
azure_llmsazure_embedding_modelspetals_modelsollama_modelsmaritalk_modelsr   setmodel_list_setr  r  r  r  r  r  all_embedding_modelsopenai_image_generation_modelsr   cost_calculatorr  *litellm.litellm_core_utils.litellm_loggingr  r  1litellm.litellm_core_utils.get_llm_provider_logicr  'litellm.litellm_core_utils.core_helpersr  (litellm.litellm_core_utils.token_counterr  utilsr   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ALL_LITELLM_RESPONSE_TYPESllms.custom_llmr  llms.openai_like.chat.handlerr  'llms.aiohttp_openai.chat.transformationr  "llms.galadriel.chat.transformationr  llms.github.chat.transformationr   llms.empower.chat.transformationr  $llms.huggingface.chat.transformationr  HuggingfaceConfig"llms.oobabooga.chat.transformationr  llms.maritalkr  #llms.openrouter.chat.transformationr  "llms.anthropic.chat.transformationr  7llms.anthropic.experimental_pass_through.transformationr  llms.groq.stt.transformationr  (llms.anthropic.completion.transformationr  %llms.triton.completion.transformationr  r  r  $llms.triton.embedding.transformationr  #llms.databricks.chat.transformationr  $llms.databricks.embed.transformationr  "llms.predibase.chat.transformationr  "llms.replicate.chat.transformationr  %llms.cohere.completion.transformationr  CohereConfig!llms.cohere.rerank.transformationr  #llms.azure_ai.rerank.transformationr  #llms.infinity.rerank.transformationr  !llms.clarifai.chat.transformationr  llms.ai21.chat.transformationr  
AI21Configllms.together_ai.chatr  *llms.together_ai.completion.transformationr  #llms.cloudflare.chat.transformationr  llms.deprecated_providers.palmr  llms.nlp_cloud.chat.handlerr   %llms.petals.completion.transformationr  %llms.deprecated_providers.aleph_alphar  8llms.vertex_ai.gemini.vertex_and_google_ai_studio_geminir  VertexAIConfigllms.gemini.chat.transformationr  GeminiConfig/llms.vertex_ai.vertex_embeddings.transformationr  vertexAITextEmbeddingConfig@llms.vertex_ai.vertex_ai_partner_models.anthropic.transformationr  =llms.vertex_ai.vertex_ai_partner_models.llama3.transformationr  ;llms.vertex_ai.vertex_ai_partner_models.ai21.transformationr  %llms.ollama.completion.transformationr	  (llms.sagemaker.completion.transformationr
  "llms.sagemaker.chat.transformationr  llms.ollama_chatr   llms.bedrock.chat.invoke_handlerr  r  )llms.bedrock.chat.converse_transformationr  llms.bedrock.common_utilsr  r  r  r  r  r  r  r  3llms.bedrock.image.amazon_stability1_transformationr  3llms.bedrock.image.amazon_stability3_transformationr  1llms.bedrock.embed.amazon_titan_g1_transformationr  9llms.bedrock.embed.amazon_titan_multimodal_transformationr  1llms.bedrock.embed.amazon_titan_v2_transformationr  llms.cohere.chat.transformationr  (llms.bedrock.embed.cohere_transformationr  llms.openai.openair  r   "llms.deepinfra.chat.transformationr!  0llms.deepgram.audio_transcription.transformationr"  -litellm.llms.openai.completion.transformationr#  llms.groq.chat.transformationr$  $llms.voyage.embedding.transformationr%  !llms.azure_ai.chat.transformationr&  (llms.mistral.mistral_chat_transformationr'  "llms.openai.chat.o1_transformationr(  openAIO1Config#llms.openai.chat.gpt_transformationr)  openAIGPTConfig)llms.openai.chat.gpt_audio_transformationr*  openAIGPTAudioConfigllms.nvidia_nim.chatr+  llms.nvidia_nim.embedr,  nvidiaNimConfignvidiaNimEmbeddingConfigllms.cerebras.chatr-  llms.sambanova.chatr.  %llms.fireworks_ai.chat.transformationr/  +llms.fireworks_ai.completion.transformationr0  4llms.fireworks_ai.audio_transcription.transformationr1  3llms.fireworks_ai.embed.fireworks_ai_transformationr2  #llms.friendliai.chat.transformationr3  %llms.jina_ai.embedding.transformationr4  llms.xai.chat.transformationr5  llms.volcenginer6  (llms.codestral.completion.transformationr7  llms.azure.azurer8  r9  "llms.azure.chat.gpt_transformationr:  $llms.azure.completion.transformationr;  $llms.hosted_vllm.chat.transformationr<  &llms.litellm_proxy.chat.transformationr=  #llms.vllm.completion.transformationr>  !llms.deepseek.chat.transformationr?  "llms.lm_studio.chat.transformationr@  #llms.lm_studio.embed.transformationrA  #llms.perplexity.chat.transformationrB  !llms.azure.chat.o1_transformationrC  &llms.watsonx.completion.transformationrD   llms.watsonx.chat.transformationrE  !llms.watsonx.embed.transformationrF  mainintegrations
exceptionsrG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rW  rX  rY  rZ  budget_managerr[  proxy.proxy_clir\  routerr]  assistants.mainbatches.mainbatch_completion.mainrerank_api.mainrealtime_api.mainr^  fine_tuning.main
files.main	schedulerr_  r`  types.adapterra  rb  types.llms.custom_llmrc  types.utilsrd  re  rf  r-  r)  r"  <module>r     s      *Q R  	 P P P P O O C 9 
 
 
 3 
 J ;   ryy/5F$ .0U3=)* //1 $uS(]+, 1/1 $uS(]+, 1/1 $uS(]+, 1.5/ +0 JN huT#Y-D'EF M26893 )4 
  
4	(?
MN  .2 xS	* 1&* hsm *$( HSM (!& &:> xS#X7 > tH~   eCM23   h  "$X #"$h $+0 (4. 0!& $ &05 x~ 5+0 (4. 0 $Xd^    	 x}  	 x}  	
92992E:;#  
HSM  (3-  $ $!%# %	8C= #x} ##x} # 
HSM  "hsm ""hsm ""hsm "(3-  
HSM   $ $#x} #!%# % $ $!%# %%) Xc] )$( HSM ($( HSM (!Xc] !!%# %#x} #1O+ !4  
D #
E#t) #!%# %"' 4 '16 ($ 6-:_ ] < $ 05 x~ 50 * DU #%A U'+ x} +/3 x} 3-1 Xc] 1:> & >6: $hsm :04 8E#t),- 437 huS$Y/0 7EJAB J68 4] 23 8 !&  %	   ', t + :> '$ >	 4T  
   
 T  	 x  *. x -%) 8E? )48  (5/ 8"$c3h $(* tCH~ *
E  #  	 U  -2 #T 1V  :& N 
D 	   *.& -/3%++, 3"&$ &a C   %) Xc] )%) HTN ))-  -.2 Xd^ 2PT )L M TAE "=> E/3 htn 3(, x~ ,#'% '48  (5/ 8,0 (5/ 0)+ x +/3 x} 37; 8Dl!234 ;'+ Xe_ +15  5AE . E/1 !49 137 htCJ/0 7!$   	 D  (*@  "/:  "Xc] !#x} #$( 8D> ( 	8D>  +/ (4. /+/ (4. /s  # 
 	 x}  ,0 8C= /8< !45 <2G2I / I $ C @  $67
&( DdO ("ioo "
 )5 

,0 8D> 0 6 (*  )')  )t  D  T )+  $ + $   4 !  ! d  D  "  "!  ! D  "  " "  " "  " d   t    t  T  $  $  D   7  7 T &( t ( $  4  t 
D   t  4  4  $  4 T T d  4    $  $ m)`  % T &% T 8 ,T     $ @ @F D   %
 D >  )0:
 
; 
   
, #$%  	
     	 
       !" #$ %& '( )* +, -. /0 '1'2 34 56 78 9: ;< => ?@ A B C!D E"F G#H I$J K%L M&N O'P Q( X Z04\0BtE,+,- B.,/MM.<. m00. %	.
 !. !. %. %. ~. #. #  	.  K!." ~ 77#.$ m%.& m'.( !).* #+., -.. ~/.0 m1.2 '*GG3.4 %5.6  !A7.8 
:9.: ;.< "=.> ?.@ mA.B #C.D #E.F !G.H !I.J #K.L KM.N --#!![. D .f )22"""$"&*.'L.M%, "D , #;!; $ ;!  " $    $	$  #-j!9    , , R R N N P P L L& & & & & & & & & & & & & & & & & & & &R   ' & ? ? L L C C = = ? ?  @ ? ) ) A A ? ?  8 7 I I ? ? G G D D G G A A K K ? ? ? ? S S A A D D E E = = W W 3 3 V V E E  8 7 ? ? C C    :;     @ ? E E C C . .  L K	 	 	 	 	 W V W W R R   > = R R D D ? ?  U T 9 9 G G B B C C   !  "#  ,-  1 1 ; ;!#35  . . 0 0 9 9 D D X X   F E H H 7 7 - - S S 
 B A G G F F J J ; ; A A B B H H E E B B F F B B H H            , * ) ' '     $  ) )    E E ' & ${
   1 0 . .+- T-( - 49 r)  