khoj 1.37.1.dev15__py3-none-any.whl → 1.37.3.dev5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. khoj/interface/compiled/404/index.html +2 -2
  2. khoj/interface/compiled/_next/static/chunks/app/agents/{layout-dd7f2b45a9c30bd7.js → layout-948ca256650845ce.js} +1 -1
  3. khoj/interface/compiled/_next/static/chunks/app/chat/{layout-904fbbb3974588da.js → layout-603285e3b1400e74.js} +1 -1
  4. khoj/interface/compiled/_next/static/chunks/app/chat/{page-5175e747d3cb4a33.js → page-d273748c128b0103.js} +1 -1
  5. khoj/interface/compiled/_next/static/chunks/app/{page-44ac22beb2619af0.js → page-aad371f66ac52191.js} +1 -1
  6. khoj/interface/compiled/_next/static/chunks/app/search/{layout-51d73830842461d5.js → layout-d7f7528ff387fba5.js} +1 -1
  7. khoj/interface/compiled/_next/static/chunks/app/share/chat/{layout-d090bd23befd0207.js → layout-246d0e8125219fff.js} +1 -1
  8. khoj/interface/compiled/_next/static/chunks/app/share/chat/{page-e8f0cc65930b214e.js → page-6f26fe7f2f7edc56.js} +1 -1
  9. khoj/interface/compiled/_next/static/chunks/{webpack-d1d79c1576702da7.js → webpack-639e8a9d35bd5e13.js} +1 -1
  10. khoj/interface/compiled/_next/static/css/b15666ef52060cd0.css +1 -0
  11. khoj/interface/compiled/_next/static/css/fca983d49c3dd1a3.css +1 -0
  12. khoj/interface/compiled/agents/index.html +2 -2
  13. khoj/interface/compiled/agents/index.txt +2 -2
  14. khoj/interface/compiled/automations/index.html +2 -2
  15. khoj/interface/compiled/automations/index.txt +1 -1
  16. khoj/interface/compiled/chat/index.html +2 -2
  17. khoj/interface/compiled/chat/index.txt +3 -3
  18. khoj/interface/compiled/index.html +2 -2
  19. khoj/interface/compiled/index.txt +2 -2
  20. khoj/interface/compiled/search/index.html +2 -2
  21. khoj/interface/compiled/search/index.txt +2 -2
  22. khoj/interface/compiled/settings/index.html +2 -2
  23. khoj/interface/compiled/settings/index.txt +1 -1
  24. khoj/interface/compiled/share/chat/index.html +2 -2
  25. khoj/interface/compiled/share/chat/index.txt +3 -3
  26. khoj/processor/conversation/anthropic/utils.py +10 -2
  27. khoj/processor/conversation/google/gemini_chat.py +3 -6
  28. khoj/processor/conversation/google/utils.py +8 -6
  29. khoj/processor/conversation/openai/gpt.py +4 -0
  30. khoj/processor/conversation/openai/utils.py +14 -6
  31. khoj/routers/helpers.py +2 -0
  32. khoj/routers/research.py +4 -0
  33. khoj/utils/constants.py +8 -8
  34. khoj/utils/helpers.py +31 -5
  35. {khoj-1.37.1.dev15.dist-info → khoj-1.37.3.dev5.dist-info}/METADATA +1 -1
  36. {khoj-1.37.1.dev15.dist-info → khoj-1.37.3.dev5.dist-info}/RECORD +41 -41
  37. khoj/interface/compiled/_next/static/css/440ae0f0f650dc35.css +0 -1
  38. khoj/interface/compiled/_next/static/css/b62829e3bf683b86.css +0 -1
  39. /khoj/interface/compiled/_next/static/{p1d6uvpb3658wwpj9guMO → CJpmb1iVXzcrEC9TreVsS}/_buildManifest.js +0 -0
  40. /khoj/interface/compiled/_next/static/{p1d6uvpb3658wwpj9guMO → CJpmb1iVXzcrEC9TreVsS}/_ssgManifest.js +0 -0
  41. {khoj-1.37.1.dev15.dist-info → khoj-1.37.3.dev5.dist-info}/WHEEL +0 -0
  42. {khoj-1.37.1.dev15.dist-info → khoj-1.37.3.dev5.dist-info}/entry_points.txt +0 -0
  43. {khoj-1.37.1.dev15.dist-info → khoj-1.37.3.dev5.dist-info}/licenses/LICENSE +0 -0
@@ -51,6 +51,7 @@ def completion_with_backoff(
51
51
  temperature=0.8,
52
52
  openai_api_key=None,
53
53
  api_base_url=None,
54
+ deepthought: bool = False,
54
55
  model_kwargs: dict = {},
55
56
  tracer: dict = {},
56
57
  ) -> str:
@@ -93,7 +94,9 @@ def completion_with_backoff(
93
94
  chunk.usage.model_extra.get("estimated_cost", 0) if hasattr(chunk, "usage") and chunk.usage else 0
94
95
  ) # Estimated costs returned by DeepInfra API
95
96
 
96
- tracer["usage"] = get_chat_usage_metrics(model_name, input_tokens, output_tokens, tracer.get("usage"), cost)
97
+ tracer["usage"] = get_chat_usage_metrics(
98
+ model_name, input_tokens, output_tokens, usage=tracer.get("usage"), cost=cost
99
+ )
97
100
 
98
101
  # Save conversation trace
99
102
  tracer["chat_model"] = model_name
@@ -126,13 +129,14 @@ def chat_completion_with_backoff(
126
129
  openai_api_key=None,
127
130
  api_base_url=None,
128
131
  completion_func=None,
132
+ deepthought=False,
129
133
  model_kwargs=None,
130
134
  tracer: dict = {},
131
135
  ):
132
136
  g = ThreadedGenerator(compiled_references, online_results, completion_func=completion_func)
133
137
  t = Thread(
134
138
  target=llm_thread,
135
- args=(g, messages, model_name, temperature, openai_api_key, api_base_url, model_kwargs, tracer),
139
+ args=(g, messages, model_name, temperature, openai_api_key, api_base_url, deepthought, model_kwargs, tracer),
136
140
  )
137
141
  t.start()
138
142
  return g
@@ -145,6 +149,7 @@ def llm_thread(
145
149
  temperature,
146
150
  openai_api_key=None,
147
151
  api_base_url=None,
152
+ deepthought=False,
148
153
  model_kwargs: dict = {},
149
154
  tracer: dict = {},
150
155
  ):
@@ -158,10 +163,11 @@ def llm_thread(
158
163
  formatted_messages = [{"role": message.role, "content": message.content} for message in messages]
159
164
 
160
165
  # Tune reasoning models arguments
161
- if model_name.startswith("o1"):
162
- temperature = 1
163
- elif model_name.startswith("o3"):
166
+ if model_name.startswith("o1") or model_name.startswith("o3"):
164
167
  temperature = 1
168
+ model_kwargs["reasoning_effort"] = "medium"
169
+
170
+ if model_name.startswith("o3"):
165
171
  # Get the first system message and add the string `Formatting re-enabled` to it.
166
172
  # See https://platform.openai.com/docs/guides/reasoning-best-practices
167
173
  if len(formatted_messages) > 0:
@@ -226,7 +232,9 @@ def llm_thread(
226
232
  cost = (
227
233
  chunk.usage.model_extra.get("estimated_cost", 0) if hasattr(chunk, "usage") and chunk.usage else 0
228
234
  ) # Estimated costs returned by DeepInfra API
229
- tracer["usage"] = get_chat_usage_metrics(model_name, input_tokens, output_tokens, tracer.get("usage"), cost)
235
+ tracer["usage"] = get_chat_usage_metrics(
236
+ model_name, input_tokens, output_tokens, usage=tracer.get("usage"), cost=cost
237
+ )
230
238
 
231
239
  # Save conversation trace
232
240
  tracer["chat_model"] = model_name
khoj/routers/helpers.py CHANGED
@@ -1215,6 +1215,7 @@ async def send_message_to_model_wrapper(
1215
1215
  model=chat_model_name,
1216
1216
  response_type=response_type,
1217
1217
  response_schema=response_schema,
1218
+ deepthought=deepthought,
1218
1219
  api_base_url=api_base_url,
1219
1220
  tracer=tracer,
1220
1221
  )
@@ -1511,6 +1512,7 @@ def generate_chat_response(
1511
1512
  generated_files=raw_generated_files,
1512
1513
  generated_asset_results=generated_asset_results,
1513
1514
  program_execution_context=program_execution_context,
1515
+ deepthought=deepthought,
1514
1516
  tracer=tracer,
1515
1517
  )
1516
1518
 
khoj/routers/research.py CHANGED
@@ -233,6 +233,10 @@ async def execute_information_collection(
233
233
  if this_iteration.warning:
234
234
  logger.warning(f"Research mode: {this_iteration.warning}.")
235
235
 
236
+ # Terminate research if query, tool not set for next iteration
237
+ elif not this_iteration.query or not this_iteration.tool:
238
+ current_iteration = MAX_ITERATIONS
239
+
236
240
  elif this_iteration.tool == ConversationCommand.Notes:
237
241
  this_iteration.context = []
238
242
  document_results = []
khoj/utils/constants.py CHANGED
@@ -47,12 +47,12 @@ model_to_cost: Dict[str, Dict[str, float]] = {
47
47
  "gemini-1.5-pro": {"input": 1.25, "output": 5.00},
48
48
  "gemini-1.5-pro-002": {"input": 1.25, "output": 5.00},
49
49
  "gemini-2.0-flash": {"input": 0.10, "output": 0.40},
50
- # Anthropic Pricing: https://www.anthropic.com/pricing#anthropic-api_
51
- "claude-3-5-haiku-20241022": {"input": 1.0, "output": 5.0},
52
- "claude-3-5-haiku@20241022": {"input": 1.0, "output": 5.0},
53
- "claude-3-5-sonnet-20241022": {"input": 3.0, "output": 15.0},
54
- "claude-3-5-sonnet-latest": {"input": 3.0, "output": 15.0},
55
- "claude-3-7-sonnet-20250219": {"input": 3.0, "output": 15.0},
56
- "claude-3-7-sonnet@20250219": {"input": 3.0, "output": 15.0},
57
- "claude-3-7-sonnet-latest": {"input": 3.0, "output": 15.0},
50
+ # Anthropic Pricing: https://www.anthropic.com/pricing#anthropic-api
51
+ "claude-3-5-haiku-20241022": {"input": 1.0, "output": 5.0, "cache_read": 0.08, "cache_write": 1.0},
52
+ "claude-3-5-haiku@20241022": {"input": 1.0, "output": 5.0, "cache_read": 0.08, "cache_write": 1.0},
53
+ "claude-3-5-sonnet-20241022": {"input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75},
54
+ "claude-3-5-sonnet-latest": {"input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75},
55
+ "claude-3-7-sonnet-20250219": {"input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75},
56
+ "claude-3-7-sonnet@20250219": {"input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75},
57
+ "claude-3-7-sonnet-latest": {"input": 3.0, "output": 15.0, "cache_read": 0.3, "cache_write": 3.75},
58
58
  }
khoj/utils/helpers.py CHANGED
@@ -596,7 +596,14 @@ def get_country_name_from_timezone(tz: str) -> str:
596
596
  return country_names.get(get_country_code_from_timezone(tz), "United States")
597
597
 
598
598
 
599
- def get_cost_of_chat_message(model_name: str, input_tokens: int = 0, output_tokens: int = 0, prev_cost: float = 0.0):
599
+ def get_cost_of_chat_message(
600
+ model_name: str,
601
+ input_tokens: int = 0,
602
+ output_tokens: int = 0,
603
+ cache_read_tokens: int = 0,
604
+ cache_write_tokens: int = 0,
605
+ prev_cost: float = 0.0,
606
+ ):
600
607
  """
601
608
  Calculate cost of chat message based on input and output tokens
602
609
  """
@@ -604,21 +611,40 @@ def get_cost_of_chat_message(model_name: str, input_tokens: int = 0, output_toke
604
611
  # Calculate cost of input and output tokens. Costs are per million tokens
605
612
  input_cost = constants.model_to_cost.get(model_name, {}).get("input", 0) * (input_tokens / 1e6)
606
613
  output_cost = constants.model_to_cost.get(model_name, {}).get("output", 0) * (output_tokens / 1e6)
614
+ cache_read_cost = constants.model_to_cost.get(model_name, {}).get("cache_read", 0) * (cache_read_tokens / 1e6)
615
+ cache_write_cost = constants.model_to_cost.get(model_name, {}).get("cache_write", 0) * (cache_write_tokens / 1e6)
607
616
 
608
- return input_cost + output_cost + prev_cost
617
+ return input_cost + output_cost + cache_read_cost + cache_write_cost + prev_cost
609
618
 
610
619
 
611
620
  def get_chat_usage_metrics(
612
- model_name: str, input_tokens: int = 0, output_tokens: int = 0, usage: dict = {}, cost: float = None
621
+ model_name: str,
622
+ input_tokens: int = 0,
623
+ output_tokens: int = 0,
624
+ cache_read_tokens: int = 0,
625
+ cache_write_tokens: int = 0,
626
+ usage: dict = {},
627
+ cost: float = None,
613
628
  ):
614
629
  """
615
630
  Get usage metrics for chat message based on input and output tokens and cost
616
631
  """
617
- prev_usage = usage or {"input_tokens": 0, "output_tokens": 0, "cost": 0.0}
632
+ prev_usage = usage or {
633
+ "input_tokens": 0,
634
+ "output_tokens": 0,
635
+ "cache_read_tokens": 0,
636
+ "cache_write_tokens": 0,
637
+ "cost": 0.0,
638
+ }
618
639
  return {
619
640
  "input_tokens": prev_usage["input_tokens"] + input_tokens,
620
641
  "output_tokens": prev_usage["output_tokens"] + output_tokens,
621
- "cost": cost or get_cost_of_chat_message(model_name, input_tokens, output_tokens, prev_cost=prev_usage["cost"]),
642
+ "cache_read_tokens": prev_usage.get("cache_read_tokens", 0) + cache_read_tokens,
643
+ "cache_write_tokens": prev_usage.get("cache_write_tokens", 0) + cache_write_tokens,
644
+ "cost": cost
645
+ or get_cost_of_chat_message(
646
+ model_name, input_tokens, output_tokens, cache_read_tokens, cache_write_tokens, prev_cost=prev_usage["cost"]
647
+ ),
622
648
  }
623
649
 
624
650
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: khoj
3
- Version: 1.37.1.dev15
3
+ Version: 1.37.3.dev5
4
4
  Summary: Your Second Brain
5
5
  Project-URL: Homepage, https://khoj.dev
6
6
  Project-URL: Documentation, https://docs.khoj.dev
@@ -127,15 +127,17 @@ khoj/interface/compiled/chat.svg,sha256=l2JoYRRgk201adTTdvJ-buKUrc0WGfsudix5xEvt
127
127
  khoj/interface/compiled/close.svg,sha256=hQ2iFLkNzHk0_iyTrSbwnWAeXYlgA-c2Eof2Iqh76n4,417
128
128
  khoj/interface/compiled/copy-button-success.svg,sha256=byqWAYD3Pn9IOXRjOKudJ-TJbP2UESbQGvtLWazNGjY,829
129
129
  khoj/interface/compiled/copy-button.svg,sha256=05bKM2eRxksfBlAPT7yMaoNJEk85bZCxQg67EVrPeHo,669
130
- khoj/interface/compiled/index.html,sha256=XejGUEurc4l0EHXzfSx1KHYfuX82_a9Q1C992N75G3A,53009
131
- khoj/interface/compiled/index.txt,sha256=d8E-98j5ttAEpEbeBDT7h8M5Nt8KQoa3TDlGwY9Z_OQ,7584
130
+ khoj/interface/compiled/index.html,sha256=4mywKePob3sNyE4zm94F_tNn2-XifN-yVLgPFnTCJmw,53009
131
+ khoj/interface/compiled/index.txt,sha256=xiZSx3pOoofxatwN9DgbWMpMHF4CHB1crC5O0d9UF94,7584
132
132
  khoj/interface/compiled/khoj.webmanifest,sha256=9wOK2BMS6xH5NKd2eaUgTLg9WepIxB2K2U33KU89LD8,2543
133
133
  khoj/interface/compiled/logo.svg,sha256=_QCKVYM4WT2Qhcf7aVFImjq_s5CwjynGXYAOgI7yf8w,8059
134
134
  khoj/interface/compiled/send.svg,sha256=VdavOWkVddcwcGcld6pdfmwfz7S91M-9O28cfeiKJkM,635
135
135
  khoj/interface/compiled/share.svg,sha256=91lwo75PvMDrgocuZQab6EQ62CxRbubh9Bhw7CWMKbg,1221
136
136
  khoj/interface/compiled/thumbs-down.svg,sha256=JGNl-DwoRmH2XFMPWwFFklmoYtKxaQbkLE3nuYKe8ZY,1019
137
137
  khoj/interface/compiled/thumbs-up.svg,sha256=yS1wxTRtiztkN-6nZciLoYQUB_KTYNPV8xFRwH2TQFw,1036
138
- khoj/interface/compiled/404/index.html,sha256=Hew88gdmPrArKdE0qd3VvLlsPoMhZheaApofGfrZY08,17063
138
+ khoj/interface/compiled/404/index.html,sha256=9o9mTeihsIVoKLk6Nct-e7EfOhqQ92AVjB4JfUWSFQs,17063
139
+ khoj/interface/compiled/_next/static/CJpmb1iVXzcrEC9TreVsS/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
140
+ khoj/interface/compiled/_next/static/CJpmb1iVXzcrEC9TreVsS/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
139
141
  khoj/interface/compiled/_next/static/chunks/1160-8e7e42e77145b712.js,sha256=-QFyQbKtlBEXOxl_xK246z8WERbIc88SU1RehiTjcaI,317731
140
142
  khoj/interface/compiled/_next/static/chunks/1243.ea2826fb35adb15a.js,sha256=Y6ceAwyTH4HSGDvBRoBB-RVXRCzGGr8NSPcspYF5OM8,182
141
143
  khoj/interface/compiled/_next/static/chunks/133.392ae90c3b2a67f2.js,sha256=IK-mb9ZlF6uJUdU8AuXsppc99tFL8svJvZtKNZGNtcY,411
@@ -201,32 +203,32 @@ khoj/interface/compiled/_next/static/chunks/framework-8e0e0f4a6b83a956.js,sha256
201
203
  khoj/interface/compiled/_next/static/chunks/main-876327ac335776ab.js,sha256=JkQUmA9vh1B4VVGF5dbZ8Kun0AnIVUbZr5IBK90T4Zs,111290
202
204
  khoj/interface/compiled/_next/static/chunks/main-app-de1f09df97a3cfc7.js,sha256=bqnztujKItXfFBzQlaBmDZyfJpQt_M93CXOuchJfpD0,471
203
205
  khoj/interface/compiled/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=CXPB1kyIrcjjyVBBDLWLKI9yEY1ZZbeASUON648vloM,112594
204
- khoj/interface/compiled/_next/static/chunks/webpack-d1d79c1576702da7.js,sha256=kDrR418GIH9hJR-qqLlKcdkj8UnQt8lP1ik2BThiRaQ,4888
206
+ khoj/interface/compiled/_next/static/chunks/webpack-639e8a9d35bd5e13.js,sha256=QSmy64I4VwSeyHlSrBW5sfepv-kKV3QbWXP_rW1NC2Y,4891
205
207
  khoj/interface/compiled/_next/static/chunks/app/layout-bd8210ff1de491d7.js,sha256=8gTcL8-sV5oa7vJRTxlgOpZvhNrsKomsu75DpVpqfE0,3983
206
- khoj/interface/compiled/_next/static/chunks/app/page-44ac22beb2619af0.js,sha256=5NvbFcWxBfHJ11-PBWNjvBfVEaMOMdogdi0FgBF1M-0,31217
208
+ khoj/interface/compiled/_next/static/chunks/app/page-aad371f66ac52191.js,sha256=WYybaSmeeef9dlJmJZNPM0FYBKrtKu0cNT8ZO9sWYnc,31218
207
209
  khoj/interface/compiled/_next/static/chunks/app/_not-found/page-0ec97c4970898f2d.js,sha256=zElhiTkdu2JqrEvJ8Lrxh4HCyfLmPllBHHWOuDtrVlw,1755
208
- khoj/interface/compiled/_next/static/chunks/app/agents/layout-dd7f2b45a9c30bd7.js,sha256=XGFX2rS4fZwhB-k9BQ2dzRao0-wx2uLH5utlzqN6u1g,3455
210
+ khoj/interface/compiled/_next/static/chunks/app/agents/layout-948ca256650845ce.js,sha256=90UW-xl1JYse_51fviRzfAE7LpAwkMxCymL-V2vJ6v4,3455
209
211
  khoj/interface/compiled/_next/static/chunks/app/agents/page-df5446aa4fb82e1a.js,sha256=I_L7ZSMnaB2S_8G4GqkbnjSZH8IPvZV6j9b-3Afr8e8,18314
210
212
  khoj/interface/compiled/_next/static/chunks/app/automations/layout-7f5c33a70e46b3af.js,sha256=s2wHeQ-ai9rKyU9EjOGY1Yo51L4ZEkjLtML85BqN3Zc,5143
211
213
  khoj/interface/compiled/_next/static/chunks/app/automations/page-0a44416f9183aec0.js,sha256=kNkQ123aqeoAe5yTaHWdSUMGaK_JJYHYASI3tYTiNbI,34831
212
- khoj/interface/compiled/_next/static/chunks/app/chat/layout-904fbbb3974588da.js,sha256=QNx6UorqNpWPXrNjy7bk0G0WECLHuQhhTiY6ud-p950,3455
213
- khoj/interface/compiled/_next/static/chunks/app/chat/page-5175e747d3cb4a33.js,sha256=kBehzrCUoRXy0WdtbXxQiFc3NaJCBBqrg8ssQVvQDzM,28293
214
- khoj/interface/compiled/_next/static/chunks/app/search/layout-51d73830842461d5.js,sha256=1WJiwGhYAqNwsGrpaRZEgXbQh6XiRMa23MNbetJOEU4,3455
214
+ khoj/interface/compiled/_next/static/chunks/app/chat/layout-603285e3b1400e74.js,sha256=jbpQcSbkDmThEkwRrkjoPtYprnltiMeVRA4Mr5XXz6g,3455
215
+ khoj/interface/compiled/_next/static/chunks/app/chat/page-d273748c128b0103.js,sha256=dmvRZosKH-SUZ4K8yVQjpzFiVtS3COnSa4oWqWmh76o,28289
216
+ khoj/interface/compiled/_next/static/chunks/app/search/layout-d7f7528ff387fba5.js,sha256=gqFAh3XbMePX_EKoABr5uOnxwNLGa-cl5G84h0cGcnM,3455
215
217
  khoj/interface/compiled/_next/static/chunks/app/search/page-1df7b236b30620f7.js,sha256=pMegRbrl32l9jxn1EvT9u-o877tSZ9jzOq7keoNxeDQ,32714
216
218
  khoj/interface/compiled/_next/static/chunks/app/settings/layout-a7262b2bb8c7ae64.js,sha256=lvyfWVLYyJsxhQvh5UWUVUBM71nmq9DdsmmnVfFXCgk,9401
217
219
  khoj/interface/compiled/_next/static/chunks/app/settings/page-3473bab693ef81b2.js,sha256=NJ-y_h09m915fni0dLftBeDlzkWKP50XbtXbFU-tJZM,30570
218
- khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-d090bd23befd0207.js,sha256=YhBDJH985TnoOYRDbSi79kr7TovwVi6oxYa8JexlsBk,3455
219
- khoj/interface/compiled/_next/static/chunks/app/share/chat/page-e8f0cc65930b214e.js,sha256=4j-Medg4wfn7LQI7TKGjjbFOCPygzNNL_XeaMz1OCOw,4820
220
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/layout-246d0e8125219fff.js,sha256=T-U3NCxwKqNYQ0Y40U0zFgL-fHEZu30sQbK4lalDNrE,3455
221
+ khoj/interface/compiled/_next/static/chunks/app/share/chat/page-6f26fe7f2f7edc56.js,sha256=e6wQT-yRzXBuJXjT7CobubWPIVed2NbvP1VxTC186HU,4826
220
222
  khoj/interface/compiled/_next/static/chunks/pages/_app-3c9ca398d360b709.js,sha256=UqtikLsCsOWtDUJOW6Tuk9P-bV1V3MhYd3ghrQuEmfs,286
221
223
  khoj/interface/compiled/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js,sha256=w_It3VzKT8O1M3CrJ_hZHsaU7M7dq3EAaVG8KvJ-fhU,253
222
224
  khoj/interface/compiled/_next/static/css/37a73b87f02df402.css,sha256=hp0vlekKu0K2eITR5YIqFmLHQPqV3JETFnRd_-Uh0mk,165
223
- khoj/interface/compiled/_next/static/css/440ae0f0f650dc35.css,sha256=FlGtVO8aI0FrkVFsPQdk1PO5ECGYJrF1tEmLXVuAIvk,1674
224
225
  khoj/interface/compiled/_next/static/css/7889a30fe9c83846.css,sha256=IUkZhkx4GpYOIhN-EJw9T1DqGMO3Wa3mNpUwaOBuZoY,7204
225
226
  khoj/interface/compiled/_next/static/css/b061a6aedf367349.css,sha256=TBw0S55aM8UbisYpvbVjM9Ch7bUG16L5WlNXd6KTs1g,3075676
226
- khoj/interface/compiled/_next/static/css/b62829e3bf683b86.css,sha256=SrZpRYa2LlhdPmavlxBccb40l65ss2Uf1Zn_nxRsllM,30515
227
+ khoj/interface/compiled/_next/static/css/b15666ef52060cd0.css,sha256=JMH_WAG7ZoebkDxeKdDq1L4liB_nAh3ayim8JT6r1Js,1737
227
228
  khoj/interface/compiled/_next/static/css/e4eb883b5265d372.css,sha256=6LaW-lQ_ZpgOJNWYwU1Q1egXZ1aqJDEuRj66oRCIU_E,17748
228
229
  khoj/interface/compiled/_next/static/css/ea5485b3f3859a5a.css,sha256=tn6qi2xSLTWhtzDUE8UlC8iipH9QGV6A9oGj1ap-Sk4,1659
229
230
  khoj/interface/compiled/_next/static/css/f29752d6e1be7624.css,sha256=mLPRnYpBFaVhTMJ3CFou5_lrwLJs2mhBlAjNY2lrRYs,6354
231
+ khoj/interface/compiled/_next/static/css/fca983d49c3dd1a3.css,sha256=3F1qPtz6PQG-gIpo8h3rAfxreAc2Uvxy8F_G2e78EsM,30452
230
232
  khoj/interface/compiled/_next/static/media/1d8a05b60287ae6c-s.p.woff2,sha256=IzKBwB_bpSGvO7C9aRv29Js-jAbZPRDI-D-P4H2P918,14508
231
233
  khoj/interface/compiled/_next/static/media/2aa11a72f7f24b58-s.woff2,sha256=QjuuSKmViymmy-itXLB1UbSARxFNHWuMiPpCrYqClFI,22728
232
234
  khoj/interface/compiled/_next/static/media/383a65b63658737d-s.woff2,sha256=VH1XkI87HdFVhsurH5D5ekEjG_ZORTVBVg6xz7p87C8,16704
@@ -304,10 +306,8 @@ khoj/interface/compiled/_next/static/media/flags.3afdda2f.webp,sha256=M2AW_HLpBn
304
306
  khoj/interface/compiled/_next/static/media/flags@2x.5fbe9fc1.webp,sha256=BBeRPBZkxY3-aKkMnYv5TSkxmbeMbyUH4VRIPfrWg1E,137406
305
307
  khoj/interface/compiled/_next/static/media/globe.98e105ca.webp,sha256=g3ofb8-W9GM75zIhlvQhaS8I2py9TtrovOKR3_7Jf04,514
306
308
  khoj/interface/compiled/_next/static/media/globe@2x.974df6f8.webp,sha256=I_N7Yke3IOoS-0CC6XD8o0IUWG8PdPbrHmf6lpgWlZY,1380
307
- khoj/interface/compiled/_next/static/p1d6uvpb3658wwpj9guMO/_buildManifest.js,sha256=f2_nYnw25hHWQJ-39Lf5OH1u6kgdbOInyfplqgjvAV4,224
308
- khoj/interface/compiled/_next/static/p1d6uvpb3658wwpj9guMO/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
309
- khoj/interface/compiled/agents/index.html,sha256=hh6ZZ7Xotx_i7C3b_DJVqjMQDHrx-bcmbbK5sQNmI2M,19256
310
- khoj/interface/compiled/agents/index.txt,sha256=Va7U3LSp6Rt3oW4LtKYIOzHSwAYq0XAUhaEyyvouq7Q,8706
309
+ khoj/interface/compiled/agents/index.html,sha256=UKZGv1k0MIWOV7rWaGPQm6CISljTo-hdf83d3ah7IEA,19256
310
+ khoj/interface/compiled/agents/index.txt,sha256=_9LOxjB45dHxQDZityVHpG9-FT15aBwwcaZEUk48aBU,8706
311
311
  khoj/interface/compiled/assets/icons/khoj_lantern.ico,sha256=eggu-B_v3z1R53EjOFhIqqPnICBGdoaw1xnc0NrzHck,174144
312
312
  khoj/interface/compiled/assets/icons/khoj_lantern.svg,sha256=I_8XP5X84gEOoCRhCRKOQn_GKZrz3SUBXct7WxHvY7c,8767
313
313
  khoj/interface/compiled/assets/icons/khoj_lantern_1200x1200.png,sha256=xDx0bbD-WMflgg8zck9oPIIuTIvywtuED2k7CjSQS4w,66194
@@ -322,16 +322,16 @@ khoj/interface/compiled/assets/samples/desktop-remember-plan-sample.png,sha256=i
322
322
  khoj/interface/compiled/assets/samples/phone-browse-draw-sample.png,sha256=Dd4fPwtFl6BWqnHjeb1mCK_ND0hhHsWtx8sNE7EiMuE,406179
323
323
  khoj/interface/compiled/assets/samples/phone-plain-chat-sample.png,sha256=DEDaNRCkfEWUeh3kYZWIQDTVK1a6KKnYdwj5ZWisN_Q,82985
324
324
  khoj/interface/compiled/assets/samples/phone-remember-plan-sample.png,sha256=Ma3blirRmq3X4oYSsDbbT7MDn29rymDrjwmUfA9BMuM,236285
325
- khoj/interface/compiled/automations/index.html,sha256=oZzZNmnw28zNKvJVvCg6sJD0NLWrzXLO5BTPgKPHB8g,55923
326
- khoj/interface/compiled/automations/index.txt,sha256=CuYeOUBhHw7f-BrKHSBHGMsghqEXbDyKOM7SE6KtZLM,8303
327
- khoj/interface/compiled/chat/index.html,sha256=h2vpiQiQJ7XOQvGdx9geOZojtIFTu67Q6GoawbYqkKU,56561
328
- khoj/interface/compiled/chat/index.txt,sha256=DUw-r6FoypZQtSGqX61NuSpCDjC__CA1efFqSGlymnU,9475
329
- khoj/interface/compiled/search/index.html,sha256=zkUhJID3Fo62mpxJFiibc7QV3B6p6tyXEs5ApguKLPg,58213
330
- khoj/interface/compiled/search/index.txt,sha256=SCRVW-jTSCBKPo01pcwpE2hQ3I8yCZSZcpeF03y8XXU,7990
331
- khoj/interface/compiled/settings/index.html,sha256=Jj66CrXET6wSN-pvirDSp1qlKRbYxZkIk5xk7sNU6iw,55947
332
- khoj/interface/compiled/settings/index.txt,sha256=GdAR8_WOXq_rJMAjnS9Thz2tEWJ2adPKEtIHLQfkD10,9431
333
- khoj/interface/compiled/share/chat/index.html,sha256=qNhhMYJlgQrs3qsPVq1r012z_dxfe1hCCM3gZ2mzbq0,56533
334
- khoj/interface/compiled/share/chat/index.txt,sha256=_rjK0QvANKA7kEBH9obra71_qh9tbTn5X-vBXUaxkKw,9677
325
+ khoj/interface/compiled/automations/index.html,sha256=vO9T8RcRVnGNFXJ963fPuk1RqtN-SI6GNL6pgRwoq5s,55923
326
+ khoj/interface/compiled/automations/index.txt,sha256=1sTq6jmLg8x8UgO8v8cOHGMzUJQkGGzIF5wTpN0Suxg,8303
327
+ khoj/interface/compiled/chat/index.html,sha256=KfJC7IAnOYO0rpW2jgtQVxd7UVlI926JaoPcNSBFbgs,56251
328
+ khoj/interface/compiled/chat/index.txt,sha256=KB-YRalrtFWYBGomqVnRM45BFwf4at307ph32Rnz_KA,9342
329
+ khoj/interface/compiled/search/index.html,sha256=vV8IkMf3LYweCkqqPnLyZTte2ly8vHTWPUIKTW1T0QA,58213
330
+ khoj/interface/compiled/search/index.txt,sha256=HJmBqbCCc-4sjBCLucLTiEB-BSA2YAHzyU_-IrP48FI,7990
331
+ khoj/interface/compiled/settings/index.html,sha256=T-O7qzEJ9eCF-sn1PDklJ9xCdehIVTd2C84A_hTnWHg,55947
332
+ khoj/interface/compiled/settings/index.txt,sha256=qcwK_e76gnLDPRUBrSDFhkiU8xLwd3N2yKGjtIXUIAA,9431
333
+ khoj/interface/compiled/share/chat/index.html,sha256=QYcHff-Yhj7Az5YHRO_mFuzk2HIhqEiF7NtwLHyLVsI,56843
334
+ khoj/interface/compiled/share/chat/index.txt,sha256=g0Qwb4d_o5yN_FakxaCErV3NTX5bH9R9MdfkSgqRLz4,9810
335
335
  khoj/interface/email/feedback.html,sha256=xksuPFamx4hGWyTTxZKRgX_eiYQQEuv-eK9Xmkt-nwU,1216
336
336
  khoj/interface/email/magic_link.html,sha256=372ESbTPKM9acekuZcOIKOw6kBl-KikFg_L9MOHqJkg,2094
337
337
  khoj/interface/email/task.html,sha256=tY7a0gzVeQ2lSQNu7WyXR_s7VYeWTrxWEj1iHVuoVE4,2813
@@ -387,17 +387,17 @@ khoj/processor/conversation/prompts.py,sha256=wM7XmOztzFdHN4xXe340bahVt9rb96SSE4
387
387
  khoj/processor/conversation/utils.py,sha256=TYASt3HV3Rm0s2oc9yBZu7H52O7D2kpPiRJhBpouiJE,33942
388
388
  khoj/processor/conversation/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
389
389
  khoj/processor/conversation/anthropic/anthropic_chat.py,sha256=lFsHMq1WgW7r9KWYOlYR0jqj-7xfwyP9Iw9MIOcTbhg,9228
390
- khoj/processor/conversation/anthropic/utils.py,sha256=C-K-JGOSIf1xIbIFC0s_LmlZ1RvTD8yeg-B-UPc7vVM,9056
390
+ khoj/processor/conversation/anthropic/utils.py,sha256=Yns9eVGcLFlJDz17EVBCvjj31zNM3AXhVV-23W06_Pc,9460
391
391
  khoj/processor/conversation/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
392
- khoj/processor/conversation/google/gemini_chat.py,sha256=FBYPLpf48HNLDgnL6LzIUc1nhfKugpy2HAWo_j7JIiM,9455
393
- khoj/processor/conversation/google/utils.py,sha256=O10uK1SvuRCq_-JzRibjqhZntHWB0aUsKrCOf0Ixn5M,11863
392
+ khoj/processor/conversation/google/gemini_chat.py,sha256=jTAwoSxZb57KFKVDpAqv48hTaBrClPxDZ0qIZcyg2PY,9250
393
+ khoj/processor/conversation/google/utils.py,sha256=Zoz5A-esxCKvi8mJl80Deaarv_5wpOPx6WPfydwtUxk,11962
394
394
  khoj/processor/conversation/offline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
395
395
  khoj/processor/conversation/offline/chat_model.py,sha256=Sr0VpCipeWdEnuOQjgBo89uPZzQkQRSdTo5fm0EZTpI,11326
396
396
  khoj/processor/conversation/offline/utils.py,sha256=51McImxl6u1qgRYvMt7uzsgLGSLq5SMFy74ymlNjIcc,3033
397
397
  khoj/processor/conversation/offline/whisper.py,sha256=DJI-8y8DULO2cQ49m2VOvRyIZ2TxBypc15gM8O3HuMI,470
398
398
  khoj/processor/conversation/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
399
- khoj/processor/conversation/openai/gpt.py,sha256=zDK_kfDQXkHa9tHzRu5R7Cc5xqONjqGV7wYL1Woe7sk,8835
400
- khoj/processor/conversation/openai/utils.py,sha256=QKsBN7uT8-qi1E582ied-tcyGOb1d5yCTOHFCbIm9js,9316
399
+ khoj/processor/conversation/openai/gpt.py,sha256=svdfFZtQz5J9Wf3aOn750u89Qj6Ys-xXEn0ZP7eRr1E,8965
400
+ khoj/processor/conversation/openai/utils.py,sha256=N8V8RuxvmPNsb0sJTCjTcTSzSC4Bh6LubS0RerMlOVw,9522
401
401
  khoj/processor/conversation/openai/whisper.py,sha256=zoEeK1LNCg_tzP4xzYi5vRPzNPGuDGzpkrkG7d1LUn4,447
402
402
  khoj/processor/image/generate.py,sha256=FAIIsr8TIHxWxK-INNK4jJOOswBxQFyi_G4tI8NNEI8,10571
403
403
  khoj/processor/speech/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -415,9 +415,9 @@ khoj/routers/api_phone.py,sha256=p9yfc4WeMHDC0hg3aQk60a2VBy8rZPdEnz9wdJ7DzkU,220
415
415
  khoj/routers/api_subscription.py,sha256=qnbKwA6N1TWK8Aiu1FFLka_JhbPOuwqT262NSHGZDiQ,5569
416
416
  khoj/routers/auth.py,sha256=W6iKUDdZ4rUwl-LAjiunTjvKJtEupVRIOSKXBseMXMY,10659
417
417
  khoj/routers/email.py,sha256=wvr6_fpk0RuKcTPC6suI8JDZPLYzJ9hAhz_G41yZytc,3923
418
- khoj/routers/helpers.py,sha256=dK-aXWkzzBBdsywDYj8umMRturEzQSQG-A4Qvqj59mU,96653
418
+ khoj/routers/helpers.py,sha256=qqwbMjcnMtT3Hiy_SHZaCHZ7DL0AWBWLkx4mkb9LsxI,96731
419
419
  khoj/routers/notion.py,sha256=g53xyYFmjr2JnuIrTW2vytbfkiK_UkoRTxqnnLSmD5o,2802
420
- khoj/routers/research.py,sha256=3v4obl7RHJaSz6Sv1ZXEZreHvlPG8-VyFYT9Qlnsy14,17976
420
+ khoj/routers/research.py,sha256=RJWJa2BzZQEB9bE0a4DBL_Gw0Vwis4eJmqdxJC-Pfuw,18161
421
421
  khoj/routers/storage.py,sha256=lao0DvsF49QleZvOdjKM98RU2cGfCJDBb7WeoI7Rr3I,2172
422
422
  khoj/routers/twilio.py,sha256=MLsuCm4--ETvr3sLxbF0CL_ehlg_l2rKBSLR2Qh2Xls,1081
423
423
  khoj/routers/web_client.py,sha256=_vyfDaHZZjNoI2LwGNQFRiFmGLkNcgYJe7dOr3mrxH8,4386
@@ -431,17 +431,17 @@ khoj/search_type/text_search.py,sha256=PZzJVCXpeBM795SIqiAKXAxgnCp1NIRiVikm040r1
431
431
  khoj/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
432
432
  khoj/utils/cli.py,sha256=IIZ2qH0v7Jmqw3JRH1K5EMp9TRze6en3GYsASnglMEM,3916
433
433
  khoj/utils/config.py,sha256=aiOkH0je8A30DAGYTHMRePrgJonFv_i07_7CdhhhcdA,1805
434
- khoj/utils/constants.py,sha256=AyvaB18DPuMHP1jx4xbE51l-mHaWduWVFzGLMs-1-to,2569
434
+ khoj/utils/constants.py,sha256=nMOZy2lfxI8H4zAGOI81QXPQsL1HJWkXB3Hs-UBC4M8,2848
435
435
  khoj/utils/fs_syncer.py,sha256=5nqwAZqRk3Nwhkwd8y4IomTPZQmW32GwAqyMzal5KyY,9996
436
- khoj/utils/helpers.py,sha256=IZAcGkNu_HVxO0dv04Tf6gAqRdqb_R4LvsvsW6lCRH4,26508
436
+ khoj/utils/helpers.py,sha256=SRAotrYgxvyzti4FXdOAL7tjdxplRtGyaCK5tDJqPy0,27290
437
437
  khoj/utils/initialization.py,sha256=wDBlLAmKWKYEpZKEyxbOo0Cos9_CrUoVLkiy9SwqzfY,14723
438
438
  khoj/utils/jsonl.py,sha256=0Ac_COqr8sLCXntzZtquxuCEVRM2c3yKeDRGhgOBRpQ,1192
439
439
  khoj/utils/models.py,sha256=Q5tcC9-z25sCiub048fLnvZ6_IIO1bcPNxt5payekk0,2009
440
440
  khoj/utils/rawconfig.py,sha256=wfZTk-Aifb-_q9Yh-NPfh9LlLTioYG-yBqrasgvo4pc,5045
441
441
  khoj/utils/state.py,sha256=axjZhnby8L3bY-N1VVoWgBH1RpFGK6U3_ZeNo1Kt7hs,1679
442
442
  khoj/utils/yaml.py,sha256=qy1Tkc61rDMesBw_Cyx2vOR6H-Hngcsm5kYfjwQBwkE,1543
443
- khoj-1.37.1.dev15.dist-info/METADATA,sha256=pRfcoocFce3N6yHovyoEr7tRq6LMOFEOi4IwcmDZ7Co,7721
444
- khoj-1.37.1.dev15.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
445
- khoj-1.37.1.dev15.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
446
- khoj-1.37.1.dev15.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
447
- khoj-1.37.1.dev15.dist-info/RECORD,,
443
+ khoj-1.37.3.dev5.dist-info/METADATA,sha256=aJoOKdgkeQ_13D-dN7EyBsHkX5TesUcbrCZM0IiFgl0,7720
444
+ khoj-1.37.3.dev5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
445
+ khoj-1.37.3.dev5.dist-info/entry_points.txt,sha256=KBIcez5N_jCgq_ER4Uxf-e1lxTBMTE_BBjMwwfeZyAg,39
446
+ khoj-1.37.3.dev5.dist-info/licenses/LICENSE,sha256=hIahDEOTzuHCU5J2nd07LWwkLW7Hko4UFO__ffsvB-8,34523
447
+ khoj-1.37.3.dev5.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- div.chat_main__8xQu5{height:100%;color:hsla(var(--foreground));margin-left:auto;margin-right:auto}.chat_suggestions__m8n2t{display:flex;overflow-x:none;height:50%;padding:10px;white-space:nowrap;gap:1rem}div.chat_inputBox__LOFws{border:1px solid var(--border-color);margin-bottom:20px;gap:12px;align-content:center}input.chat_inputBox__LOFws{border:none}input.chat_inputBox__LOFws:focus{outline:none;background-color:transparent}div.chat_inputBox__LOFws:focus{box-shadow:0 8px 16px 0 rgba(0,0,0,.2)}div.chat_chatBodyFull__FfKEK{display:grid;grid-template-columns:1fr;height:auto}button.chat_inputBox__LOFws{border:none;outline:none;background-color:transparent;cursor:pointer;border-radius:.5rem;padding:.5rem;background:linear-gradient(var(--calm-green),var(--calm-blue))}div.chat_chatBody__sS1LX{display:grid;grid-template-columns:1fr 1fr;height:100%}.chat_inputBox__LOFws{color:hsla(var(--foreground))}div.chat_chatLayout__pR203{display:grid;grid-template-columns:1fr;gap:1rem;width:100%}div.chat_chatBox__FBct_{display:grid;height:100%}div.chat_titleBar__R5QlK{display:grid;grid-template-columns:1fr auto}div.chat_chatBoxBody__qT_SC{display:grid;height:100%;width:100%;margin:auto}div.chat_agentIndicator__8V55w a{display:flex;text-align:center;align-content:center;align-items:center}div.chat_agentIndicator__8V55w{padding:10px}div.chat_chatTitleWrapper__6ChWq{grid-template-columns:1fr auto}@media screen and (max-width:768px){div.chat_inputBox__LOFws{margin-bottom:0}div.chat_chatBoxBody__qT_SC{width:100%}div.chat_chatBody__sS1LX{grid-template-columns:0fr 1fr}div.chat_chatBox__FBct_{padding:0;height:100%}div.chat_chatLayout__pR203{gap:0;grid-template-columns:1fr}}
@@ -1 +0,0 @@
1
- div.sharedChat_main__7Nayy{height:100%;color:hsla(var(--foreground));margin-left:auto;margin-right:auto}.sharedChat_suggestions__V8kr_{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;justify-content:center}div.sharedChat_inputBox__wRW5A{border:1px solid var(--border-color);margin-bottom:20px;gap:12px;align-content:center}input.sharedChat_inputBox__wRW5A{border:none}input.sharedChat_inputBox__wRW5A:focus{outline:none;background-color:transparent}div.sharedChat_inputBox__wRW5A:focus{box-shadow:0 8px 16px 0 rgba(0,0,0,.2)}div.sharedChat_chatBodyFull__O1MOv{display:grid;grid-template-columns:1fr;height:auto}button.sharedChat_inputBox__wRW5A{border:none;outline:none;background-color:transparent;cursor:pointer;border-radius:.5rem;padding:.5rem;background:linear-gradient(var(--calm-green),var(--calm-blue))}div.sharedChat_chatBody__OnHDL{display:grid;grid-template-columns:1fr 1fr;height:100%}.sharedChat_inputBox__wRW5A{color:hsla(var(--foreground))}div.sharedChat_chatLayout__gutlc{display:grid;grid-template-columns:auto 1fr;gap:1rem;width:100%}div.sharedChat_chatBox__PmAPg{display:grid;height:100%}div.sharedChat_titleBar__vOHp_{display:grid;grid-template-columns:1fr auto}div.sharedChat_chatBoxBody__ef2Nl{display:grid;height:100%;width:100%;margin:auto}div.sharedChat_agentIndicator__ORCl4 a{display:flex;text-align:center;align-content:center;align-items:center}div.sharedChat_agentIndicator__ORCl4{padding:10px}@media (max-width:768px){div.sharedChat_chatBody__OnHDL{grid-template-columns:0fr 1fr}}@media screen and (max-width:768px){div.sharedChat_inputBox__wRW5A{margin-bottom:0}div.sharedChat_chatBoxBody__ef2Nl{width:100%}div.sharedChat_chatLayout__gutlc{gap:0;grid-template-columns:1fr}}div.chatHistory_chatHistory__CoaVT{display:flex;flex-direction:column;height:100%;margin:auto}div.chatHistory_agentIndicator__wOU1f a{display:flex;text-align:center;align-content:center;align-items:center}div.chatHistory_trainOfThought__mMWSR{padding:8px 16px;margin:12px}div.chatMessage_chatMessageContainer__sAivf{display:flex;flex-direction:column;margin:12px;border-radius:16px;padding:8px 16px 0;word-break:break-word}div.chatMessage_chatMessageWrapper__u5m8A{padding-left:1rem;padding-bottom:1rem}div.chatMessage_chatMessageWrapper__u5m8A ol,div.chatMessage_chatMessageWrapper__u5m8A p:not(:last-child),div.chatMessage_chatMessageWrapper__u5m8A ul{margin-bottom:16px}div.chatMessage_chatMessageWrapper__u5m8A a span{display:revert!important}div.chatMessage_khojfullHistory__NPu2l{padding-left:4px}div.chatMessage_youfullHistory__ioyfH{max-width:100%}div.chatMessage_chatMessageContainer__sAivf.chatMessage_youfullHistory__ioyfH{padding-left:0}div.chatMessage_you__6GUC4{background-color:hsla(var(--secondary));align-self:flex-end;border-radius:16px}div.chatMessage_khoj__cjWON{background-color:transparent;color:hsl(var(--accent-foreground));align-self:flex-start}div.chatMessage_khojChatMessage__BabQz{padding-top:8px;padding-left:16px}div.chatMessage_emptyChatMessage__J9JRn{display:none}div.chatMessage_imagesContainer__HTRjT{display:flex;overflow-x:auto;padding-bottom:8px;margin-bottom:8px}div.chatMessage_imageWrapper__DF92M{flex:0 0 auto;margin-right:8px}div.chatMessage_imageWrapper__DF92M img{width:auto;height:128px;-o-object-fit:cover;object-fit:cover;border-radius:8px}div.chatMessage_khoj__cjWON div.chatMessage_imageWrapper__DF92M img{height:512px}div.chatMessage_khoj__cjWON div.chatMessage_imageWrapper__DF92M{flex:1 1 auto}div.chatMessage_khoj__cjWON div.chatMessage_imagesContainer__HTRjT{display:flex;flex-wrap:wrap;flex-direction:row;overflow-x:hidden}div.chatMessage_chatMessageContainer__sAivf>img{width:auto;height:auto;max-width:100%;max-height:80vh;-o-object-fit:contain;object-fit:contain;display:block;margin-top:.25rem;margin-right:auto}div.chatMessage_chatMessageContainer__sAivf h3 img{width:24px}div.chatMessage_you__6GUC4{color:hsla(var(--secondary-foreground))}div.chatMessage_author__muRtC{font-size:.75rem;color:grey;text-align:right}div.chatMessage_chatFooter__0vR8s{display:flex;justify-content:space-between;min-height:28px}div.chatMessage_chatButtons__Lbk8T{display:flex;justify-content:flex-end;width:-moz-min-content;width:min-content;border:1px solid var(--border-color);border-radius:16px;position:relative;bottom:-12px;background-color:hsla(var(--secondary))}div.chatMessage_chatFooter__0vR8s button{cursor:pointer;color:hsl(var(--muted-foreground));border:none;border-radius:16px;padding:4px;margin-left:4px;margin-right:4px}div.chatMessage_chatFooter__0vR8s button:hover{background-color:hsla(var(--frosted-background-color))}button.chatMessage_codeCopyButton__Y_Ujv{cursor:pointer;float:right;border-radius:8px}button.chatMessage_codeCopyButton__Y_Ujv:hover{color:hsla(var(--frosted-background-color))}button.chatMessage_codeCopyButton__Y_Ujv img,button.chatMessage_copyButton__jd7q7 img,div.chatMessage_feedbackButtons___Brdy img{width:24px}div.chatMessage_trainOfThought__mR2Gg strong{font-weight:500}div.chatMessage_trainOfThought__mR2Gg.chatMessage_primary__WYPEb strong{font-weight:500;color:hsla(var(--secondary-foreground))}div.chatMessage_trainOfThought__mR2Gg.chatMessage_primary__WYPEb p{color:inherit}div.chatMessage_trainOfThoughtElement__le_bC{display:grid;grid-template-columns:auto 1fr;align-items:start}div.chatMessage_trainOfThoughtElement__le_bC ol,div.chatMessage_trainOfThoughtElement__le_bC ul{margin:auto;word-break:break-word}@media screen and (max-width:768px){div.chatMessage_youfullHistory__ioyfH{max-width:90%}div.chatMessage_khoj__cjWON div.chatMessage_imageWrapper__DF92M img{width:100%;height:auto}}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_AMS-Regular.a79f1c31.woff2) format("woff2"),url(/_next/static/media/KaTeX_AMS-Regular.1608a09b.woff) format("woff"),url(/_next/static/media/KaTeX_AMS-Regular.4aafdb68.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/_next/static/media/KaTeX_Caligraphic-Bold.ec17d132.woff2) format("woff2"),url(/_next/static/media/KaTeX_Caligraphic-Bold.b6770918.woff) format("woff"),url(/_next/static/media/KaTeX_Caligraphic-Bold.cce5b8ec.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Caligraphic-Regular.55fac258.woff2) format("woff2"),url(/_next/static/media/KaTeX_Caligraphic-Regular.dad44a7f.woff) format("woff"),url(/_next/static/media/KaTeX_Caligraphic-Regular.07ef19e7.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/_next/static/media/KaTeX_Fraktur-Bold.d42a5579.woff2) format("woff2"),url(/_next/static/media/KaTeX_Fraktur-Bold.9f256b85.woff) format("woff"),url(/_next/static/media/KaTeX_Fraktur-Bold.b18f59e1.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Fraktur-Regular.d3c882a6.woff2) format("woff2"),url(/_next/static/media/KaTeX_Fraktur-Regular.7c187121.woff) format("woff"),url(/_next/static/media/KaTeX_Fraktur-Regular.ed38e79f.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/_next/static/media/KaTeX_Main-Bold.c3fb5ac2.woff2) format("woff2"),url(/_next/static/media/KaTeX_Main-Bold.d181c465.woff) format("woff"),url(/_next/static/media/KaTeX_Main-Bold.b74a1a8b.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/_next/static/media/KaTeX_Main-BoldItalic.6f2bb1df.woff2) format("woff2"),url(/_next/static/media/KaTeX_Main-BoldItalic.e3f82f9d.woff) format("woff"),url(/_next/static/media/KaTeX_Main-BoldItalic.70d8b0a5.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/_next/static/media/KaTeX_Main-Italic.8916142b.woff2) format("woff2"),url(/_next/static/media/KaTeX_Main-Italic.9024d815.woff) format("woff"),url(/_next/static/media/KaTeX_Main-Italic.47373d1e.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Main-Regular.0462f03b.woff2) format("woff2"),url(/_next/static/media/KaTeX_Main-Regular.7f51fe03.woff) format("woff"),url(/_next/static/media/KaTeX_Main-Regular.b7f8fe9b.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/_next/static/media/KaTeX_Math-BoldItalic.572d331f.woff2) format("woff2"),url(/_next/static/media/KaTeX_Math-BoldItalic.f1035d8d.woff) format("woff"),url(/_next/static/media/KaTeX_Math-BoldItalic.a879cf83.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/_next/static/media/KaTeX_Math-Italic.f28c23ac.woff2) format("woff2"),url(/_next/static/media/KaTeX_Math-Italic.5295ba48.woff) format("woff"),url(/_next/static/media/KaTeX_Math-Italic.939bc644.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(/_next/static/media/KaTeX_SansSerif-Bold.8c5b5494.woff2) format("woff2"),url(/_next/static/media/KaTeX_SansSerif-Bold.bf59d231.woff) format("woff"),url(/_next/static/media/KaTeX_SansSerif-Bold.94e1e8dc.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(/_next/static/media/KaTeX_SansSerif-Italic.3b1e59b3.woff2) format("woff2"),url(/_next/static/media/KaTeX_SansSerif-Italic.7c9bc82b.woff) format("woff"),url(/_next/static/media/KaTeX_SansSerif-Italic.b4c20c84.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_SansSerif-Regular.ba21ed5f.woff2) format("woff2"),url(/_next/static/media/KaTeX_SansSerif-Regular.74048478.woff) format("woff"),url(/_next/static/media/KaTeX_SansSerif-Regular.d4d7ba48.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Script-Regular.03e9641d.woff2) format("woff2"),url(/_next/static/media/KaTeX_Script-Regular.07505710.woff) format("woff"),url(/_next/static/media/KaTeX_Script-Regular.fe9cbbe1.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Size1-Regular.eae34984.woff2) format("woff2"),url(/_next/static/media/KaTeX_Size1-Regular.e1e279cb.woff) format("woff"),url(/_next/static/media/KaTeX_Size1-Regular.fabc004a.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Size2-Regular.5916a24f.woff2) format("woff2"),url(/_next/static/media/KaTeX_Size2-Regular.57727022.woff) format("woff"),url(/_next/static/media/KaTeX_Size2-Regular.d6b476ec.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Size3-Regular.b4230e7e.woff2) format("woff2"),url(/_next/static/media/KaTeX_Size3-Regular.9acaf01c.woff) format("woff"),url(/_next/static/media/KaTeX_Size3-Regular.a144ef58.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Size4-Regular.10d95fd3.woff2) format("woff2"),url(/_next/static/media/KaTeX_Size4-Regular.7a996c9d.woff) format("woff"),url(/_next/static/media/KaTeX_Size4-Regular.fbccdabe.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/_next/static/media/KaTeX_Typewriter-Regular.a8709e36.woff2) format("woff2"),url(/_next/static/media/KaTeX_Typewriter-Regular.6258592b.woff) format("woff"),url(/_next/static/media/KaTeX_Typewriter-Regular.d97aaf4a.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.21"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.suggestions_card__fbiZo{border-radius:.5rem}.suggestions_title__vNozc{font-size:1rem}.suggestions_text__J_IfY{padding-top:.2rem;font-size:.9rem;white-space:wrap;padding-right:4px;color:#000}