@copilotkit/react-ui 1.1.3-feat-runtime-remote-actions.2 → 1.2.0

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 (212) hide show
  1. package/CHANGELOG.md +7 -24
  2. package/dist/components/chat/Button.d.mts +7 -0
  3. package/dist/components/chat/Button.js.map +1 -1
  4. package/dist/components/chat/Button.mjs +30 -6
  5. package/dist/components/chat/Button.mjs.map +1 -1
  6. package/dist/components/chat/Chat.d.mts +87 -0
  7. package/dist/components/chat/Chat.d.ts +2 -2
  8. package/dist/components/chat/Chat.js +8 -107
  9. package/dist/components/chat/Chat.js.map +1 -1
  10. package/dist/components/chat/Chat.mjs +1754 -20
  11. package/dist/components/chat/Chat.mjs.map +1 -1
  12. package/dist/components/chat/ChatContext.d.mts +105 -0
  13. package/dist/components/chat/ChatContext.d.ts +1 -1
  14. package/dist/components/chat/ChatContext.mjs +228 -7
  15. package/dist/components/chat/ChatContext.mjs.map +1 -1
  16. package/dist/components/chat/CodeBlock.d.mts +14 -0
  17. package/dist/components/chat/CodeBlock.js +1 -2
  18. package/dist/components/chat/CodeBlock.js.map +1 -1
  19. package/dist/components/chat/CodeBlock.mjs +482 -8
  20. package/dist/components/chat/CodeBlock.mjs.map +1 -1
  21. package/dist/components/chat/Header.d.mts +7 -0
  22. package/dist/components/chat/Header.mjs +23 -6
  23. package/dist/components/chat/Header.mjs.map +1 -1
  24. package/dist/components/chat/Icons.d.mts +18 -0
  25. package/dist/components/chat/Icons.mjs +271 -16
  26. package/dist/components/chat/Icons.mjs.map +1 -1
  27. package/dist/components/chat/Input.d.mts +7 -0
  28. package/dist/components/chat/Input.js +2 -4
  29. package/dist/components/chat/Input.js.map +1 -1
  30. package/dist/components/chat/Input.mjs +255 -8
  31. package/dist/components/chat/Input.mjs.map +1 -1
  32. package/dist/components/chat/Markdown.d.mts +8 -0
  33. package/dist/components/chat/Markdown.js +1 -2
  34. package/dist/components/chat/Markdown.js.map +1 -1
  35. package/dist/components/chat/Markdown.mjs +546 -7
  36. package/dist/components/chat/Markdown.mjs.map +1 -1
  37. package/dist/components/chat/Messages.d.mts +7 -0
  38. package/dist/components/chat/Messages.js +3 -48
  39. package/dist/components/chat/Messages.js.map +1 -1
  40. package/dist/components/chat/Messages.mjs +678 -8
  41. package/dist/components/chat/Messages.mjs.map +1 -1
  42. package/dist/components/chat/Modal.d.mts +51 -0
  43. package/dist/components/chat/Modal.d.ts +1 -1
  44. package/dist/components/chat/Modal.js +9 -107
  45. package/dist/components/chat/Modal.js.map +1 -1
  46. package/dist/components/chat/Modal.mjs +1956 -22
  47. package/dist/components/chat/Modal.mjs.map +1 -1
  48. package/dist/components/chat/Popup.d.mts +13 -0
  49. package/dist/components/chat/Popup.js +9 -107
  50. package/dist/components/chat/Popup.js.map +1 -1
  51. package/dist/components/chat/Popup.mjs +1965 -23
  52. package/dist/components/chat/Popup.mjs.map +1 -1
  53. package/dist/components/chat/Response.d.mts +7 -0
  54. package/dist/components/chat/Response.mjs +23 -6
  55. package/dist/components/chat/Response.mjs.map +1 -1
  56. package/dist/components/chat/Sidebar.d.mts +13 -0
  57. package/dist/components/chat/Sidebar.js +10 -107
  58. package/dist/components/chat/Sidebar.js.map +1 -1
  59. package/dist/components/chat/Sidebar.mjs +1977 -23
  60. package/dist/components/chat/Sidebar.mjs.map +1 -1
  61. package/dist/components/chat/Suggestion.d.mts +14 -0
  62. package/dist/components/chat/Suggestion.js.map +1 -1
  63. package/dist/components/chat/Suggestion.mjs +152 -5
  64. package/dist/components/chat/Suggestion.mjs.map +1 -1
  65. package/dist/components/chat/Textarea.d.mts +13 -0
  66. package/dist/components/chat/Textarea.js.map +1 -1
  67. package/dist/components/chat/Textarea.mjs +48 -4
  68. package/dist/components/chat/Textarea.mjs.map +1 -1
  69. package/dist/components/chat/Window.d.mts +7 -0
  70. package/dist/components/chat/Window.js.map +1 -1
  71. package/dist/components/chat/Window.mjs +125 -6
  72. package/dist/components/chat/Window.mjs.map +1 -1
  73. package/dist/components/chat/index.d.mts +11 -0
  74. package/dist/components/chat/index.js +10 -107
  75. package/dist/components/chat/index.js.map +1 -1
  76. package/dist/components/chat/index.mjs +1983 -31
  77. package/dist/components/chat/index.mjs.map +1 -1
  78. package/dist/components/chat/props.d.mts +35 -0
  79. package/dist/components/chat/props.d.ts +1 -1
  80. package/dist/components/chat/props.mjs +0 -1
  81. package/dist/components/dev-console/console.d.mts +10 -0
  82. package/dist/components/dev-console/console.js +0 -52
  83. package/dist/components/dev-console/console.js.map +1 -1
  84. package/dist/components/dev-console/console.mjs +426 -8
  85. package/dist/components/dev-console/console.mjs.map +1 -1
  86. package/dist/components/dev-console/icons.d.mts +9 -0
  87. package/dist/components/dev-console/icons.mjs +83 -8
  88. package/dist/components/dev-console/icons.mjs.map +1 -1
  89. package/dist/components/dev-console/index.d.mts +5 -0
  90. package/dist/components/dev-console/index.js +0 -52
  91. package/dist/components/dev-console/index.js.map +1 -1
  92. package/dist/components/dev-console/index.mjs +424 -10
  93. package/dist/components/dev-console/index.mjs.map +1 -1
  94. package/dist/components/dev-console/types.d.mts +9 -0
  95. package/dist/components/dev-console/types.d.ts +1 -1
  96. package/dist/components/dev-console/utils.d.mts +9 -0
  97. package/dist/components/dev-console/utils.d.ts +1 -2
  98. package/dist/components/dev-console/utils.js +0 -53
  99. package/dist/components/dev-console/utils.js.map +1 -1
  100. package/dist/components/dev-console/utils.mjs +103 -9
  101. package/dist/components/dev-console/utils.mjs.map +1 -1
  102. package/dist/components/index.d.mts +11 -0
  103. package/dist/components/index.js +10 -107
  104. package/dist/components/index.js.map +1 -1
  105. package/dist/components/index.mjs +1983 -32
  106. package/dist/components/index.mjs.map +1 -1
  107. package/dist/context/index.d.mts +2 -0
  108. package/dist/context/index.d.ts +1 -1
  109. package/dist/context/index.mjs +0 -1
  110. package/dist/hooks/index.d.mts +1 -0
  111. package/dist/hooks/index.mjs +24 -5
  112. package/dist/hooks/index.mjs.map +1 -1
  113. package/dist/hooks/use-copilot-chat-suggestions.d.mts +83 -0
  114. package/dist/hooks/use-copilot-chat-suggestions.mjs +24 -4
  115. package/dist/hooks/use-copilot-chat-suggestions.mjs.map +1 -1
  116. package/dist/hooks/use-copy-to-clipboard.d.mts +9 -0
  117. package/dist/hooks/use-copy-to-clipboard.d.ts +1 -1
  118. package/dist/hooks/use-copy-to-clipboard.mjs +21 -4
  119. package/dist/hooks/use-copy-to-clipboard.mjs.map +1 -1
  120. package/dist/hooks/use-push-to-talk.d.mts +19 -0
  121. package/dist/hooks/use-push-to-talk.d.ts +1 -1
  122. package/dist/hooks/use-push-to-talk.js.map +1 -1
  123. package/dist/hooks/use-push-to-talk.mjs +148 -6
  124. package/dist/hooks/use-push-to-talk.mjs.map +1 -1
  125. package/dist/index.css +1 -747
  126. package/dist/index.d.mts +13 -0
  127. package/dist/index.js +17 -107
  128. package/dist/index.js.map +1 -1
  129. package/dist/index.mjs +2015 -38
  130. package/dist/index.mjs.map +1 -1
  131. package/dist/lib/utils.d.mts +4 -0
  132. package/dist/lib/utils.mjs +20 -3
  133. package/dist/lib/utils.mjs.map +1 -1
  134. package/dist/lib/utils.test.d.mts +2 -0
  135. package/dist/lib/utils.test.d.ts +1 -1
  136. package/dist/types/css.d.mts +16 -0
  137. package/dist/types/css.d.ts +1 -1
  138. package/dist/types/index.d.mts +2 -0
  139. package/dist/types/index.mjs +0 -1
  140. package/dist/types/suggestions.d.mts +8 -0
  141. package/dist/types/suggestions.d.ts +1 -1
  142. package/package.json +19 -11
  143. package/src/components/chat/Chat.tsx +2 -5
  144. package/src/components/chat/Messages.tsx +2 -83
  145. package/src/components/chat/Modal.tsx +1 -0
  146. package/src/components/chat/Popup.tsx +1 -4
  147. package/src/components/chat/Sidebar.tsx +2 -3
  148. package/src/components/chat/Suggestion.tsx +0 -2
  149. package/src/components/dev-console/console.tsx +0 -6
  150. package/src/components/dev-console/utils.ts +0 -56
  151. package/tsup.config.ts +59 -15
  152. package/dist/chunk-54JAUBUJ.mjs +0 -26
  153. package/dist/chunk-54JAUBUJ.mjs.map +0 -1
  154. package/dist/chunk-5HHVL5WK.mjs +0 -29
  155. package/dist/chunk-5HHVL5WK.mjs.map +0 -1
  156. package/dist/chunk-B2KQEX2R.mjs +0 -91
  157. package/dist/chunk-B2KQEX2R.mjs.map +0 -1
  158. package/dist/chunk-BJPGMY3I.mjs +0 -70
  159. package/dist/chunk-BJPGMY3I.mjs.map +0 -1
  160. package/dist/chunk-EFZPSZWO.mjs +0 -1
  161. package/dist/chunk-EFZPSZWO.mjs.map +0 -1
  162. package/dist/chunk-FL4ETWFB.mjs +0 -21
  163. package/dist/chunk-FL4ETWFB.mjs.map +0 -1
  164. package/dist/chunk-FLV3J3VX.mjs +0 -18
  165. package/dist/chunk-FLV3J3VX.mjs.map +0 -1
  166. package/dist/chunk-FO7Z5LAL.mjs +0 -118
  167. package/dist/chunk-FO7Z5LAL.mjs.map +0 -1
  168. package/dist/chunk-FOZVHL73.mjs +0 -171
  169. package/dist/chunk-FOZVHL73.mjs.map +0 -1
  170. package/dist/chunk-FZC7X5PK.mjs +0 -262
  171. package/dist/chunk-FZC7X5PK.mjs.map +0 -1
  172. package/dist/chunk-H7TM5JE6.mjs +0 -146
  173. package/dist/chunk-H7TM5JE6.mjs.map +0 -1
  174. package/dist/chunk-HR36Y2FQ.mjs +0 -167
  175. package/dist/chunk-HR36Y2FQ.mjs.map +0 -1
  176. package/dist/chunk-I4QG2ZZU.mjs +0 -220
  177. package/dist/chunk-I4QG2ZZU.mjs.map +0 -1
  178. package/dist/chunk-IU3WTXLQ.mjs +0 -1
  179. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  180. package/dist/chunk-JD7BAH7U.mjs +0 -1
  181. package/dist/chunk-JD7BAH7U.mjs.map +0 -1
  182. package/dist/chunk-MRFF7GSQ.mjs +0 -1
  183. package/dist/chunk-MRFF7GSQ.mjs.map +0 -1
  184. package/dist/chunk-MRXNTQOX.mjs +0 -59
  185. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  186. package/dist/chunk-OTPAZXVR.mjs +0 -92
  187. package/dist/chunk-OTPAZXVR.mjs.map +0 -1
  188. package/dist/chunk-QOEAEMUQ.mjs +0 -30
  189. package/dist/chunk-QOEAEMUQ.mjs.map +0 -1
  190. package/dist/chunk-T26KLXLH.mjs +0 -1
  191. package/dist/chunk-T26KLXLH.mjs.map +0 -1
  192. package/dist/chunk-U6J5DGOE.mjs +0 -83
  193. package/dist/chunk-U6J5DGOE.mjs.map +0 -1
  194. package/dist/chunk-UPTB2MVO.mjs +0 -395
  195. package/dist/chunk-UPTB2MVO.mjs.map +0 -1
  196. package/dist/chunk-V7W6IM2V.mjs +0 -1
  197. package/dist/chunk-V7W6IM2V.mjs.map +0 -1
  198. package/dist/chunk-VOBX4JOA.mjs +0 -138
  199. package/dist/chunk-VOBX4JOA.mjs.map +0 -1
  200. package/dist/chunk-WB3YULQ4.mjs +0 -1
  201. package/dist/chunk-WB3YULQ4.mjs.map +0 -1
  202. package/dist/chunk-WCPLXRZX.mjs +0 -106
  203. package/dist/chunk-WCPLXRZX.mjs.map +0 -1
  204. package/dist/chunk-XSUSSWDS.mjs +0 -18
  205. package/dist/chunk-XSUSSWDS.mjs.map +0 -1
  206. package/dist/chunk-YOH25I6N.mjs +0 -25
  207. package/dist/chunk-YOH25I6N.mjs.map +0 -1
  208. package/dist/chunk-YQ3D5IQV.mjs +0 -75
  209. package/dist/chunk-YQ3D5IQV.mjs.map +0 -1
  210. package/dist/chunk-YQFVRDNC.mjs +0 -53
  211. package/dist/chunk-YQFVRDNC.mjs.map +0 -1
  212. package/dist/index.css.map +0 -1
@@ -1,106 +0,0 @@
1
- import {
2
- SmallSpinnerIcon
3
- } from "./chunk-FZC7X5PK.mjs";
4
- import {
5
- __async
6
- } from "./chunk-MRXNTQOX.mjs";
7
-
8
- // src/components/chat/Suggestion.tsx
9
- import {
10
- extract
11
- } from "@copilotkit/react-core";
12
- import { actionParametersToJsonSchema } from "@copilotkit/shared";
13
- import { CopilotRequestType } from "@copilotkit/runtime-client-gql";
14
- import { jsx, jsxs } from "react/jsx-runtime";
15
- function Suggestion({ title, message, onClick, partial, className }) {
16
- return /* @__PURE__ */ jsxs(
17
- "button",
18
- {
19
- disabled: partial,
20
- onClick: (e) => {
21
- e.preventDefault();
22
- onClick(message);
23
- },
24
- className: className || "suggestion",
25
- children: [
26
- partial && SmallSpinnerIcon,
27
- /* @__PURE__ */ jsx("span", { children: title })
28
- ]
29
- }
30
- );
31
- }
32
- var reloadSuggestions = (context, chatSuggestionConfiguration, setCurrentSuggestions, abortControllerRef) => __async(void 0, null, function* () {
33
- const abortController = abortControllerRef.current;
34
- const tools = JSON.stringify(
35
- Object.values(context.actions).map((action) => ({
36
- name: action.name,
37
- description: action.description,
38
- jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
39
- }))
40
- );
41
- const allSuggestions = [];
42
- for (const config of Object.values(chatSuggestionConfiguration)) {
43
- try {
44
- const numOfSuggestionsInstructions = config.minSuggestions === 0 ? `Produce up to ${config.maxSuggestions} suggestions. If there are no highly relevant suggestions you can think of, provide an empty array.` : `Produce between ${config.minSuggestions} and ${config.maxSuggestions} suggestions.`;
45
- const result = yield extract({
46
- context,
47
- instructions: "Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. " + config.instructions + "\n\n" + numOfSuggestionsInstructions,
48
- data: "Available tools: " + tools + "\n\n",
49
- requestType: CopilotRequestType.Task,
50
- parameters: [
51
- {
52
- name: "suggestions",
53
- type: "object[]",
54
- attributes: [
55
- {
56
- name: "title",
57
- description: "The title of the suggestion. This is shown as a button and should be short.",
58
- type: "string"
59
- },
60
- {
61
- name: "message",
62
- description: "The message to send when the suggestion is clicked. This should be a clear, complete sentence and will be sent as an instruction to the AI.",
63
- type: "string"
64
- }
65
- ]
66
- }
67
- ],
68
- include: {
69
- messages: true,
70
- readable: true
71
- },
72
- abortSignal: abortController == null ? void 0 : abortController.signal,
73
- stream: ({ status, args }) => {
74
- const suggestions = args.suggestions || [];
75
- const newSuggestions = [];
76
- for (let i = 0; i < suggestions.length; i++) {
77
- if (config.maxSuggestions !== void 0 && i >= config.maxSuggestions) {
78
- break;
79
- }
80
- const { title, message } = suggestions[i];
81
- const partial = i == suggestions.length - 1 && status !== "complete";
82
- newSuggestions.push({
83
- title,
84
- message,
85
- partial,
86
- className: config.className
87
- });
88
- }
89
- setCurrentSuggestions([...allSuggestions, ...newSuggestions]);
90
- }
91
- });
92
- allSuggestions.push(...result.suggestions);
93
- } catch (error) {
94
- console.error("Error loading suggestions", error);
95
- }
96
- }
97
- if (abortControllerRef.current === abortController) {
98
- abortControllerRef.current = null;
99
- }
100
- });
101
-
102
- export {
103
- Suggestion,
104
- reloadSuggestions
105
- };
106
- //# sourceMappingURL=chunk-WCPLXRZX.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/Suggestion.tsx"],"sourcesContent":["import {\n CopilotContextParams,\n extract,\n CopilotChatSuggestionConfiguration,\n useCopilotContext,\n} from \"@copilotkit/react-core\";\nimport { SuggestionsProps } from \"./props\";\nimport { SmallSpinnerIcon } from \"./Icons\";\nimport { CopilotChatSuggestion } from \"../../types/suggestions\";\nimport { actionParametersToJsonSchema } from \"@copilotkit/shared\";\nimport { CopilotRequestType } from \"@copilotkit/runtime-client-gql\";\n\nexport function Suggestion({ title, message, onClick, partial, className }: SuggestionsProps) {\n return (\n <button\n disabled={partial}\n onClick={(e) => {\n e.preventDefault();\n onClick(message);\n }}\n className={className || \"suggestion\"}\n >\n {partial && SmallSpinnerIcon}\n <span>{title}</span>\n </button>\n );\n}\n\nexport const reloadSuggestions = async (\n context: CopilotContextParams,\n chatSuggestionConfiguration: { [key: string]: CopilotChatSuggestionConfiguration },\n setCurrentSuggestions: (suggestions: { title: string; message: string }[]) => void,\n abortControllerRef: React.MutableRefObject<AbortController | null>,\n) => {\n const abortController = abortControllerRef.current;\n\n const tools = JSON.stringify(\n Object.values(context.actions).map((action) => ({\n name: action.name,\n description: action.description,\n jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters)),\n })),\n );\n\n const allSuggestions: CopilotChatSuggestion[] = [];\n\n for (const config of Object.values(chatSuggestionConfiguration)) {\n try {\n const numOfSuggestionsInstructions =\n config.minSuggestions === 0\n ? `Produce up to ${config.maxSuggestions} suggestions. ` +\n `If there are no highly relevant suggestions you can think of, provide an empty array.`\n : `Produce between ${config.minSuggestions} and ${config.maxSuggestions} suggestions.`;\n\n const result = await extract({\n context,\n instructions:\n \"Suggest what the user could say next. Provide clear, highly relevant suggestions. Do not literally suggest function calls. \" +\n config.instructions +\n \"\\n\\n\" +\n numOfSuggestionsInstructions,\n data: \"Available tools: \" + tools + \"\\n\\n\",\n requestType: CopilotRequestType.Task,\n parameters: [\n {\n name: \"suggestions\",\n type: \"object[]\",\n attributes: [\n {\n name: \"title\",\n description:\n \"The title of the suggestion. This is shown as a button and should be short.\",\n type: \"string\",\n },\n {\n name: \"message\",\n description:\n \"The message to send when the suggestion is clicked. This should be a clear, complete sentence and will be sent as an instruction to the AI.\",\n type: \"string\",\n },\n ],\n },\n ],\n include: {\n messages: true,\n readable: true,\n },\n abortSignal: abortController?.signal,\n stream: ({ status, args }) => {\n const suggestions = args.suggestions || [];\n const newSuggestions: CopilotChatSuggestion[] = [];\n for (let i = 0; i < suggestions.length; i++) {\n // if GPT provides too many suggestions, limit the number of suggestions\n if (config.maxSuggestions !== undefined && i >= config.maxSuggestions) {\n break;\n }\n const { title, message } = suggestions[i];\n\n // If this is the last suggestion and the status is not complete, mark it as partial\n const partial = i == suggestions.length - 1 && status !== \"complete\";\n\n newSuggestions.push({\n title,\n message,\n partial,\n className: config.className,\n });\n }\n setCurrentSuggestions([...allSuggestions, ...newSuggestions]);\n },\n });\n allSuggestions.push(...result.suggestions);\n } catch (error) {\n console.error(\"Error loading suggestions\", error);\n }\n }\n\n if (abortControllerRef.current === abortController) {\n abortControllerRef.current = null;\n }\n};\n"],"mappings":";;;;;;;;AAAA;AAAA,EAEE;AAAA,OAGK;AAIP,SAAS,oCAAoC;AAC7C,SAAS,0BAA0B;AAI/B,SASE,KATF;AAFG,SAAS,WAAW,EAAE,OAAO,SAAS,SAAS,SAAS,UAAU,GAAqB;AAC5F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,UAAU;AAAA,MACV,SAAS,CAAC,MAAM;AACd,UAAE,eAAe;AACjB,gBAAQ,OAAO;AAAA,MACjB;AAAA,MACA,WAAW,aAAa;AAAA,MAEvB;AAAA,mBAAW;AAAA,QACZ,oBAAC,UAAM,iBAAM;AAAA;AAAA;AAAA,EACf;AAEJ;AAEO,IAAM,oBAAoB,CAC/B,SACA,6BACA,uBACA,uBACG;AACH,QAAM,kBAAkB,mBAAmB;AAE3C,QAAM,QAAQ,KAAK;AAAA,IACjB,OAAO,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,YAAY;AAAA,MAC9C,MAAM,OAAO;AAAA,MACb,aAAa,OAAO;AAAA,MACpB,YAAY,KAAK,UAAU,6BAA6B,OAAO,UAAU,CAAC;AAAA,IAC5E,EAAE;AAAA,EACJ;AAEA,QAAM,iBAA0C,CAAC;AAEjD,aAAW,UAAU,OAAO,OAAO,2BAA2B,GAAG;AAC/D,QAAI;AACF,YAAM,+BACJ,OAAO,mBAAmB,IACtB,iBAAiB,OAAO,sHAExB,mBAAmB,OAAO,sBAAsB,OAAO;AAE7D,YAAM,SAAS,MAAM,QAAQ;AAAA,QAC3B;AAAA,QACA,cACE,gIACA,OAAO,eACP,SACA;AAAA,QACF,MAAM,sBAAsB,QAAQ;AAAA,QACpC,aAAa,mBAAmB;AAAA,QAChC,YAAY;AAAA,UACV;AAAA,YACE,MAAM;AAAA,YACN,MAAM;AAAA,YACN,YAAY;AAAA,cACV;AAAA,gBACE,MAAM;AAAA,gBACN,aACE;AAAA,gBACF,MAAM;AAAA,cACR;AAAA,cACA;AAAA,gBACE,MAAM;AAAA,gBACN,aACE;AAAA,gBACF,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP,UAAU;AAAA,UACV,UAAU;AAAA,QACZ;AAAA,QACA,aAAa,mDAAiB;AAAA,QAC9B,QAAQ,CAAC,EAAE,QAAQ,KAAK,MAAM;AAC5B,gBAAM,cAAc,KAAK,eAAe,CAAC;AACzC,gBAAM,iBAA0C,CAAC;AACjD,mBAAS,IAAI,GAAG,IAAI,YAAY,QAAQ,KAAK;AAE3C,gBAAI,OAAO,mBAAmB,UAAa,KAAK,OAAO,gBAAgB;AACrE;AAAA,YACF;AACA,kBAAM,EAAE,OAAO,QAAQ,IAAI,YAAY,CAAC;AAGxC,kBAAM,UAAU,KAAK,YAAY,SAAS,KAAK,WAAW;AAE1D,2BAAe,KAAK;AAAA,cAClB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW,OAAO;AAAA,YACpB,CAAC;AAAA,UACH;AACA,gCAAsB,CAAC,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAAA,QAC9D;AAAA,MACF,CAAC;AACD,qBAAe,KAAK,GAAG,OAAO,WAAW;AAAA,IAC3C,SAAS,OAAP;AACA,cAAQ,MAAM,6BAA6B,KAAK;AAAA,IAClD;AAAA,EACF;AAEA,MAAI,mBAAmB,YAAY,iBAAiB;AAClD,uBAAmB,UAAU;AAAA,EAC/B;AACF;","names":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- useChatContext
3
- } from "./chunk-BJPGMY3I.mjs";
4
-
5
- // src/components/chat/Response.tsx
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- var ResponseButton = ({ onClick, inProgress }) => {
8
- const context = useChatContext();
9
- return /* @__PURE__ */ jsxs("button", { onClick, className: "copilotKitResponseButton", children: [
10
- /* @__PURE__ */ jsx("span", { children: inProgress ? context.icons.stopIcon : context.icons.regenerateIcon }),
11
- inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse
12
- ] });
13
- };
14
-
15
- export {
16
- ResponseButton
17
- };
18
- //# sourceMappingURL=chunk-XSUSSWDS.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/Response.tsx"],"sourcesContent":["import { useChatContext } from \"./ChatContext\";\nimport { ResponseButtonProps } from \"./props\";\n\nexport const ResponseButton = ({ onClick, inProgress }: ResponseButtonProps) => {\n const context = useChatContext();\n return (\n <button onClick={onClick} className=\"copilotKitResponseButton\">\n <span>{inProgress ? context.icons.stopIcon : context.icons.regenerateIcon}</span>\n {inProgress ? context.labels.stopGenerating : context.labels.regenerateResponse}\n </button>\n );\n};\n"],"mappings":";;;;;AAMI,SACE,KADF;AAHG,IAAM,iBAAiB,CAAC,EAAE,SAAS,WAAW,MAA2B;AAC9E,QAAM,UAAU,eAAe;AAC/B,SACE,qBAAC,YAAO,SAAkB,WAAU,4BAClC;AAAA,wBAAC,UAAM,uBAAa,QAAQ,MAAM,WAAW,QAAQ,MAAM,gBAAe;AAAA,IACzE,aAAa,QAAQ,OAAO,iBAAiB,QAAQ,OAAO;AAAA,KAC/D;AAEJ;","names":[]}
@@ -1,25 +0,0 @@
1
- import {
2
- useChatContext
3
- } from "./chunk-BJPGMY3I.mjs";
4
-
5
- // src/components/chat/Button.tsx
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- var Button = ({}) => {
8
- const { open, setOpen, icons } = useChatContext();
9
- return /* @__PURE__ */ jsx("div", { onClick: () => setOpen(!open), children: /* @__PURE__ */ jsxs(
10
- "button",
11
- {
12
- className: `copilotKitButton ${open ? "open" : ""}`,
13
- "aria-label": open ? "Close Chat" : "Open Chat",
14
- children: [
15
- /* @__PURE__ */ jsx("div", { className: "copilotKitButtonIcon copilotKitButtonIconOpen", children: icons.openIcon }),
16
- /* @__PURE__ */ jsx("div", { className: "copilotKitButtonIcon copilotKitButtonIconClose", children: icons.closeIcon })
17
- ]
18
- }
19
- ) });
20
- };
21
-
22
- export {
23
- Button
24
- };
25
- //# sourceMappingURL=chunk-YOH25I6N.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/Button.tsx"],"sourcesContent":["import { ButtonProps } from \"./props\";\nimport { useChatContext } from \"./ChatContext\";\n\nexport const Button = ({}: ButtonProps) => {\n const { open, setOpen, icons } = useChatContext();\n\n return (\n <div onClick={() => setOpen(!open)}>\n <button\n className={`copilotKitButton ${open ? \"open\" : \"\"}`}\n aria-label={open ? \"Close Chat\" : \"Open Chat\"}\n >\n <div className=\"copilotKitButtonIcon copilotKitButtonIconOpen\">{icons.openIcon}</div>\n <div className=\"copilotKitButtonIcon copilotKitButtonIconClose\">{icons.closeIcon}</div>\n </button>\n </div>\n );\n};\n"],"mappings":";;;;;AAQM,SAIE,KAJF;AALC,IAAM,SAAS,CAAC,CAAC,MAAmB;AACzC,QAAM,EAAE,MAAM,SAAS,MAAM,IAAI,eAAe;AAEhD,SACE,oBAAC,SAAI,SAAS,MAAM,QAAQ,CAAC,IAAI,GAC/B;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,oBAAoB,OAAO,SAAS;AAAA,MAC/C,cAAY,OAAO,eAAe;AAAA,MAElC;AAAA,4BAAC,SAAI,WAAU,iDAAiD,gBAAM,UAAS;AAAA,QAC/E,oBAAC,SAAI,WAAU,kDAAkD,gBAAM,WAAU;AAAA;AAAA;AAAA,EACnF,GACF;AAEJ;","names":[]}
@@ -1,75 +0,0 @@
1
- import {
2
- CodeBlock
3
- } from "./chunk-UPTB2MVO.mjs";
4
- import {
5
- __objRest,
6
- __spreadProps,
7
- __spreadValues
8
- } from "./chunk-MRXNTQOX.mjs";
9
-
10
- // src/components/chat/Markdown.tsx
11
- import { memo } from "react";
12
- import ReactMarkdown from "react-markdown";
13
- import remarkGfm from "remark-gfm";
14
- import remarkMath from "remark-math";
15
- import { jsx } from "react/jsx-runtime";
16
- var MemoizedReactMarkdown = memo(
17
- ReactMarkdown,
18
- (prevProps, nextProps) => prevProps.children === nextProps.children && prevProps.className === nextProps.className
19
- );
20
- var Markdown = ({ content }) => {
21
- return /* @__PURE__ */ jsx("div", { className: "copilotKitMarkdown", children: /* @__PURE__ */ jsx(MemoizedReactMarkdown, { components, remarkPlugins: [remarkGfm, remarkMath], children: content }) });
22
- };
23
- var components = {
24
- p({ children }) {
25
- return /* @__PURE__ */ jsx("p", { children });
26
- },
27
- a(_a) {
28
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
29
- return /* @__PURE__ */ jsx(
30
- "a",
31
- __spreadProps(__spreadValues({
32
- style: { color: "blue", textDecoration: "underline" }
33
- }, props), {
34
- target: "_blank",
35
- rel: "noopener noreferrer",
36
- children
37
- })
38
- );
39
- },
40
- code(_c) {
41
- var _d = _c, { children, className, inline } = _d, props = __objRest(_d, ["children", "className", "inline"]);
42
- if (children.length) {
43
- if (children[0] == "\u258D") {
44
- return /* @__PURE__ */ jsx(
45
- "span",
46
- {
47
- style: {
48
- animation: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",
49
- marginTop: "0.25rem"
50
- },
51
- children: "\u258D"
52
- }
53
- );
54
- }
55
- children[0] = children[0].replace("`\u258D`", "\u258D");
56
- }
57
- const match = /language-(\w+)/.exec(className || "");
58
- if (inline) {
59
- return /* @__PURE__ */ jsx("code", __spreadProps(__spreadValues({ className }, props), { children }));
60
- }
61
- return /* @__PURE__ */ jsx(
62
- CodeBlock,
63
- __spreadValues({
64
- language: match && match[1] || "",
65
- value: String(children).replace(/\n$/, "")
66
- }, props),
67
- Math.random()
68
- );
69
- }
70
- };
71
-
72
- export {
73
- Markdown
74
- };
75
- //# sourceMappingURL=chunk-YQ3D5IQV.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/Markdown.tsx"],"sourcesContent":["import { FC, memo } from \"react\";\nimport ReactMarkdown, { Options, Components } from \"react-markdown\";\nimport { CodeBlock } from \"./CodeBlock\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkMath from \"remark-math\";\n\nconst MemoizedReactMarkdown: FC<Options> = memo(\n ReactMarkdown,\n (prevProps, nextProps) =>\n prevProps.children === nextProps.children && prevProps.className === nextProps.className,\n);\n\ntype MarkdownProps = {\n content: string;\n};\n\nexport const Markdown = ({ content }: MarkdownProps) => {\n return (\n <div className=\"copilotKitMarkdown\">\n <MemoizedReactMarkdown components={components} remarkPlugins={[remarkGfm, remarkMath]}>\n {content}\n </MemoizedReactMarkdown>\n </div>\n );\n};\n\nconst components: Components = {\n p({ children }) {\n return <p>{children}</p>;\n },\n a({ children, ...props }) {\n return (\n <a\n style={{ color: \"blue\", textDecoration: \"underline\" }}\n {...props}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {children}\n </a>\n );\n },\n code({ children, className, inline, ...props }) {\n if (children.length) {\n if (children[0] == \"▍\") {\n return (\n <span\n style={{\n animation: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\",\n marginTop: \"0.25rem\",\n }}\n >\n ▍\n </span>\n );\n }\n\n children[0] = (children[0] as string).replace(\"`▍`\", \"▍\");\n }\n\n const match = /language-(\\w+)/.exec(className || \"\");\n\n if (inline) {\n return (\n <code className={className} {...props}>\n {children}\n </code>\n );\n }\n\n return (\n <CodeBlock\n key={Math.random()}\n language={(match && match[1]) || \"\"}\n value={String(children).replace(/\\n$/, \"\")}\n {...props}\n />\n );\n },\n};\n"],"mappings":";;;;;;;;;;AAAA,SAAa,YAAY;AACzB,OAAO,mBAA4C;AAEnD,OAAO,eAAe;AACtB,OAAO,gBAAgB;AAejB;AAbN,IAAM,wBAAqC;AAAA,EACzC;AAAA,EACA,CAAC,WAAW,cACV,UAAU,aAAa,UAAU,YAAY,UAAU,cAAc,UAAU;AACnF;AAMO,IAAM,WAAW,CAAC,EAAE,QAAQ,MAAqB;AACtD,SACE,oBAAC,SAAI,WAAU,sBACb,8BAAC,yBAAsB,YAAwB,eAAe,CAAC,WAAW,UAAU,GACjF,mBACH,GACF;AAEJ;AAEA,IAAM,aAAyB;AAAA,EAC7B,EAAE,EAAE,SAAS,GAAG;AACd,WAAO,oBAAC,OAAG,UAAS;AAAA,EACtB;AAAA,EACA,EAAE,IAAwB;AAAxB,iBAAE,WA9BN,IA8BI,IAAe,kBAAf,IAAe,CAAb;AACF,WACE;AAAA,MAAC;AAAA;AAAA,QACC,OAAO,EAAE,OAAO,QAAQ,gBAAgB,YAAY;AAAA,SAChD,QAFL;AAAA,QAGC,QAAO;AAAA,QACP,KAAI;AAAA,QAEH;AAAA;AAAA,IACH;AAAA,EAEJ;AAAA,EACA,KAAK,IAA2C;AAA3C,iBAAE,YAAU,WAAW,OA1C9B,IA0CO,IAAkC,kBAAlC,IAAkC,CAAhC,YAAU,aAAW;AAC1B,QAAI,SAAS,QAAQ;AACnB,UAAI,SAAS,CAAC,KAAK,UAAK;AACtB,eACE;AAAA,UAAC;AAAA;AAAA,YACC,OAAO;AAAA,cACL,WAAW;AAAA,cACX,WAAW;AAAA,YACb;AAAA,YACD;AAAA;AAAA,QAED;AAAA,MAEJ;AAEA,eAAS,CAAC,IAAK,SAAS,CAAC,EAAa,QAAQ,YAAO,QAAG;AAAA,IAC1D;AAEA,UAAM,QAAQ,iBAAiB,KAAK,aAAa,EAAE;AAEnD,QAAI,QAAQ;AACV,aACE,oBAAC,uCAAK,aAA0B,QAA/B,EACE,WACH;AAAA,IAEJ;AAEA,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,UAAW,SAAS,MAAM,CAAC,KAAM;AAAA,QACjC,OAAO,OAAO,QAAQ,EAAE,QAAQ,OAAO,EAAE;AAAA,SACrC;AAAA,MAHC,KAAK,OAAO;AAAA,IAInB;AAAA,EAEJ;AACF;","names":[]}
@@ -1,53 +0,0 @@
1
- // src/components/chat/Textarea.tsx
2
- import { useState, useRef, useEffect, forwardRef, useImperativeHandle } from "react";
3
- import { jsx } from "react/jsx-runtime";
4
- var AutoResizingTextarea = forwardRef(
5
- ({ maxRows = 1, placeholder, value, onChange, onKeyDown, autoFocus }, ref) => {
6
- const internalTextareaRef = useRef(null);
7
- const [maxHeight, setMaxHeight] = useState(0);
8
- useImperativeHandle(ref, () => internalTextareaRef.current);
9
- useEffect(() => {
10
- const calculateMaxHeight = () => {
11
- const textarea = internalTextareaRef.current;
12
- if (textarea) {
13
- textarea.style.height = "auto";
14
- const singleRowHeight = textarea.scrollHeight;
15
- setMaxHeight(singleRowHeight * maxRows);
16
- if (autoFocus) {
17
- textarea.focus();
18
- }
19
- }
20
- };
21
- calculateMaxHeight();
22
- }, [maxRows]);
23
- useEffect(() => {
24
- const textarea = internalTextareaRef.current;
25
- if (textarea) {
26
- textarea.style.height = "auto";
27
- textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeight)}px`;
28
- }
29
- }, [value, maxHeight]);
30
- return /* @__PURE__ */ jsx(
31
- "textarea",
32
- {
33
- ref: internalTextareaRef,
34
- value,
35
- onChange,
36
- onKeyDown,
37
- placeholder,
38
- style: {
39
- overflow: "auto",
40
- resize: "none",
41
- maxHeight: `${maxHeight}px`
42
- },
43
- rows: 1
44
- }
45
- );
46
- }
47
- );
48
- var Textarea_default = AutoResizingTextarea;
49
-
50
- export {
51
- Textarea_default
52
- };
53
- //# sourceMappingURL=chunk-YQFVRDNC.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/chat/Textarea.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, forwardRef, useImperativeHandle } from \"react\";\n\ninterface AutoResizingTextareaProps {\n maxRows?: number;\n placeholder?: string;\n value: string;\n onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLTextAreaElement>) => void;\n autoFocus?: boolean;\n}\n\nconst AutoResizingTextarea = forwardRef<HTMLTextAreaElement, AutoResizingTextareaProps>(\n ({ maxRows = 1, placeholder, value, onChange, onKeyDown, autoFocus }, ref) => {\n const internalTextareaRef = useRef<HTMLTextAreaElement>(null);\n const [maxHeight, setMaxHeight] = useState<number>(0);\n\n useImperativeHandle(ref, () => internalTextareaRef.current as HTMLTextAreaElement);\n\n useEffect(() => {\n const calculateMaxHeight = () => {\n const textarea = internalTextareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n const singleRowHeight = textarea.scrollHeight;\n setMaxHeight(singleRowHeight * maxRows);\n if (autoFocus) {\n textarea.focus();\n }\n }\n };\n\n calculateMaxHeight();\n }, [maxRows]);\n\n useEffect(() => {\n const textarea = internalTextareaRef.current;\n if (textarea) {\n textarea.style.height = \"auto\";\n textarea.style.height = `${Math.min(textarea.scrollHeight, maxHeight)}px`;\n }\n }, [value, maxHeight]);\n\n return (\n <textarea\n ref={internalTextareaRef}\n value={value}\n onChange={onChange}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n style={{\n overflow: \"auto\",\n resize: \"none\",\n maxHeight: `${maxHeight}px`,\n }}\n rows={1}\n />\n );\n },\n);\n\nexport default AutoResizingTextarea;\n"],"mappings":";AAAA,SAAgB,UAAU,QAAQ,WAAW,YAAY,2BAA2B;AA2C9E;AAhCN,IAAM,uBAAuB;AAAA,EAC3B,CAAC,EAAE,UAAU,GAAG,aAAa,OAAO,UAAU,WAAW,UAAU,GAAG,QAAQ;AAC5E,UAAM,sBAAsB,OAA4B,IAAI;AAC5D,UAAM,CAAC,WAAW,YAAY,IAAI,SAAiB,CAAC;AAEpD,wBAAoB,KAAK,MAAM,oBAAoB,OAA8B;AAEjF,cAAU,MAAM;AACd,YAAM,qBAAqB,MAAM;AAC/B,cAAM,WAAW,oBAAoB;AACrC,YAAI,UAAU;AACZ,mBAAS,MAAM,SAAS;AACxB,gBAAM,kBAAkB,SAAS;AACjC,uBAAa,kBAAkB,OAAO;AACtC,cAAI,WAAW;AACb,qBAAS,MAAM;AAAA,UACjB;AAAA,QACF;AAAA,MACF;AAEA,yBAAmB;AAAA,IACrB,GAAG,CAAC,OAAO,CAAC;AAEZ,cAAU,MAAM;AACd,YAAM,WAAW,oBAAoB;AACrC,UAAI,UAAU;AACZ,iBAAS,MAAM,SAAS;AACxB,iBAAS,MAAM,SAAS,GAAG,KAAK,IAAI,SAAS,cAAc,SAAS;AAAA,MACtE;AAAA,IACF,GAAG,CAAC,OAAO,SAAS,CAAC;AAErB,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,OAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,WAAW,GAAG;AAAA,QAChB;AAAA,QACA,MAAM;AAAA;AAAA,IACR;AAAA,EAEJ;AACF;AAEA,IAAO,mBAAQ;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/css/colors.css","../src/css/popup.css","../src/css/sidebar.css","../src/css/button.css","../src/css/header.css","../src/css/input.css","../src/css/messages.css","../src/css/window.css","../src/css/animations.css","../src/css/response.css","../src/css/markdown.css","../src/css/suggestions.css","../src/css/panel.css","../src/css/console.css"],"sourcesContent":["html {\n --copilot-kit-primary-color: rgb(59 130 246);\n --copilot-kit-contrast-color: rgb(255 255 255);\n --copilot-kit-secondary-color: rgb(243 244 246);\n --copilot-kit-secondary-contrast-color: rgb(0 0 0);\n --copilot-kit-background-color: rgb(255 255 255);\n --copilot-kit-muted-color: rgb(106 106 106);\n --copilot-kit-separator-color: rgba(0, 0, 0, 0.08);\n --copilot-kit-scrollbar-color: rgba(0, 0, 0, 0.2);\n --copilot-kit-response-button-color: #333;\n --copilot-kit-response-button-background-color: #fff;\n}\n",".copilotKitPopup {\n position: fixed;\n bottom: 1rem;\n right: 1rem;\n z-index: 30;\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto,\n \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-feature-settings: normal;\n font-variation-settings: normal;\n touch-action: manipulation;\n}\n\n.copilotKitPopup svg {\n display: inline-block;\n vertical-align: middle;\n}\n",".copilotKitSidebar {\n position: fixed;\n bottom: 1rem;\n right: 1rem;\n z-index: 30;\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto,\n \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n font-feature-settings: normal;\n font-variation-settings: normal;\n touch-action: manipulation;\n}\n\n.copilotKitSidebar svg {\n display: inline-block;\n vertical-align: middle;\n}\n\n.copilotKitSidebarContentWrapper {\n overflow: visible;\n margin-right: 0px;\n transition: margin-right 0.3s ease;\n}\n\n@media (min-width: 640px) {\n .copilotKitSidebarContentWrapper.sidebarExpanded {\n margin-right: 28rem;\n }\n}\n",".copilotKitButton {\n width: 3.5rem;\n height: 3.5rem;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n border: 1px solid rgba(255, 255, 255, 0.2);\n outline: none;\n position: relative;\n transform: scale(1);\n transition: transform 200ms;\n background-color: var(--copilot-kit-primary-color);\n color: var(--copilot-kit-contrast-color);\n cursor: pointer;\n}\n\n.copilotKitButton:hover {\n transform: scale(1.1);\n}\n\n.copilotKitButton:active {\n transform: scale(0.75);\n}\n\n.copilotKitButtonIcon {\n transition:\n opacity 100ms,\n transform 300ms;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n}\n\n/* State when the chat is open */\n.copilotKitButton.open .copilotKitButtonIconOpen {\n transform: translate(-50%, -50%) scale(0) rotate(90deg);\n opacity: 0;\n}\n\n.copilotKitButton.open .copilotKitButtonIconClose {\n transform: translate(-50%, -50%) scale(1) rotate(0deg);\n opacity: 1;\n}\n\n/* State when the chat is closed */\n.copilotKitButton:not(.open) .copilotKitButtonIconOpen {\n transform: translate(-50%, -50%) scale(1) rotate(0deg);\n opacity: 1;\n}\n\n.copilotKitButton:not(.open) .copilotKitButtonIconClose {\n transform: translate(-50%, -50%) scale(0) rotate(-90deg);\n opacity: 0;\n}\n",".copilotKitHeader {\n height: 56px;\n font-weight: 500;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n background-color: var(--copilot-kit-primary-color);\n color: var(--copilot-kit-contrast-color);\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom: 1px solid var(--copilot-kit-separator-color);\n}\n\n.copilotKitSidebar .copilotKitHeader {\n border-radius: 0;\n}\n\n@media (min-width: 640px) {\n .copilotKitHeader {\n padding-left: 24px;\n padding-right: 24px;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n}\n\n.copilotKitHeader > button {\n border: 0;\n padding: 0px;\n position: absolute;\n top: 50%;\n right: 16px;\n transform: translateY(-50%);\n outline: none;\n color: var(--copilot-kit-contrast-color);\n background-color: transparent;\n cursor: pointer;\n}\n\n.copilotKitHeader > button:focus {\n outline: none;\n}\n",".copilotKitInput {\n border-top: 1px solid var(--copilot-kit-separator-color);\n padding-left: 2rem;\n padding-right: 1rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n display: flex;\n align-items: center;\n cursor: text;\n position: relative;\n border-bottom-left-radius: 0.75rem;\n border-bottom-right-radius: 0.75rem;\n background-color: var(--copilot-kit-background-color);\n}\n\n.copilotKitInput > .copilotKitInputControls > button {\n padding: 0.25rem;\n cursor: pointer;\n transition-property: transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 200ms;\n transform: scale(1);\n color: rgba(0, 0, 0, 0.25);\n -webkit-appearance: button;\n appearance: button;\n background-color: transparent;\n background-image: none;\n text-transform: none;\n font-family: inherit;\n font-size: 100%;\n font-weight: inherit;\n line-height: inherit;\n border: 0;\n margin: 0;\n text-indent: 0px;\n text-shadow: none;\n display: inline-block;\n text-align: center;\n margin-left: 0.5rem; /* Add margin to separate button from textarea */\n}\n\n.copilotKitInput > .copilotKitInputControls > button:not([disabled]) {\n color: var(--copilot-kit-primary-color);\n}\n\n.copilotKitInput > .copilotKitInputControls > button:not([disabled]):hover {\n transform: scale(1.1);\n}\n\n.copilotKitInput > .copilotKitInputControls > button[disabled] {\n color: var(--copilot-kit-muted-color);\n}\n\n.copilotKitInputControls {\n display: flex;\n}\n\n.copilotKitInput > textarea {\n flex: 1; /* Allow textarea to take up remaining space */\n outline: 2px solid transparent;\n outline-offset: 2px;\n resize: none;\n white-space: pre-wrap;\n overflow-wrap: break-word;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n cursor: text;\n font-size: 0.875rem;\n line-height: 1.25rem;\n margin: 0;\n padding: 0;\n font-family: inherit;\n font-weight: inherit;\n color: var(--copilot-kit-secondary-contrast-color);\n border: 0px;\n background-color: var(--copilot-kit-background-color);\n}\n\n.copilotKitInput > textarea::placeholder {\n color: var(--copilot-kit-muted-color);\n opacity: 1;\n}\n\n.copilotKitInput > .copilotKitInputControls > button.copilotKitPushToTalkRecording {\n background-color: red;\n color: white;\n border-radius: 50%;\n animation: copilotKitPulseAnimation 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n",".copilotKitMessages {\n overflow-y: scroll;\n flex: 1;\n padding: 1rem 2rem;\n display: flex;\n flex-direction: column;\n background-color: var(--copilot-kit-background-color);\n}\n\n.copilotKitMessages::-webkit-scrollbar {\n width: 9px;\n}\n\n.copilotKitMessages::-webkit-scrollbar-thumb {\n background-color: var(--copilot-kit-scrollbar-color);\n border-radius: 10rem;\n border: 2px solid var(--copilot-kit-background-color);\n}\n\n.copilotKitMessages::-webkit-scrollbar-track-piece:start {\n background: transparent;\n}\n\n.copilotKitMessages::-webkit-scrollbar-track-piece:end {\n background: transparent;\n}\n\n.copilotKitMessage {\n border-radius: 0.5rem;\n padding: 1rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n overflow-wrap: break-word;\n max-width: 80%;\n margin-bottom: 0.5rem;\n}\n\n.copilotKitMessage.copilotKitUserMessage {\n background: var(--copilot-kit-primary-color);\n color: var(--copilot-kit-contrast-color);\n margin-left: auto;\n white-space: pre-wrap;\n}\n\n.copilotKitMessage.copilotKitAssistantMessage {\n background: var(--copilot-kit-secondary-color);\n color: var(--copilot-kit-secondary-contrast-color);\n margin-right: auto;\n}\n\n.copilotKitMessage.copilotKitUserMessage + .copilotKitMessage.copilotKitAssistantMessage {\n margin-top: 1.5rem;\n}\n\n.copilotKitMessage.copilotKitAssistantMessage + .copilotKitMessage.copilotKitUserMessage {\n margin-top: 1.5rem;\n}\n\n.copilotKitCustomAssistantMessage {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem;\n}\n\n.copilotKitMessage .inProgressLabel {\n margin-left: 10px;\n}\n\n.copilotKitMessages footer {\n flex-grow: 1;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n}\n",".copilotKitWindow {\n position: fixed;\n inset: 0px;\n transform-origin: bottom;\n border-color: rgb(229 231 235);\n background-color: rgb(255 255 255);\n border-radius: 0.75rem;\n box-shadow: rgba(0, 0, 0, 0.16) 0px 5px 40px;\n flex-direction: column;\n transition:\n opacity 100ms ease-out,\n transform 200ms ease-out;\n opacity: 0;\n transform: scale(0.95) translateY(20px);\n display: flex;\n pointer-events: none;\n}\n\n.copilotKitSidebar .copilotKitWindow {\n border-radius: 0;\n opacity: 1;\n transform: translateX(100%);\n}\n\n.copilotKitWindow.open {\n opacity: 1;\n transform: scale(1) translateY(0);\n pointer-events: auto;\n}\n\n.copilotKitSidebar .copilotKitWindow.open {\n transform: translateX(0);\n}\n\n@media (min-width: 640px) {\n .copilotKitWindow {\n transform-origin: bottom right;\n bottom: 5rem;\n right: 1rem;\n top: auto;\n left: auto;\n border-width: 0px;\n margin-bottom: 1rem;\n width: 24rem;\n height: 600px;\n min-height: 200px;\n max-height: calc(100% - 6rem);\n }\n\n .copilotKitSidebar .copilotKitWindow {\n bottom: 0;\n right: 0;\n top: auto;\n left: auto;\n width: 28rem;\n min-height: 100%;\n margin-bottom: 0;\n max-height: none;\n }\n}\n",".copilotKitActivityDot1 {\n animation: copilotKitActivityDotsAnimation 1.05s infinite;\n}\n.copilotKitActivityDot2 {\n animation-delay: 0.1s;\n}\n.copilotKitActivityDot3 {\n animation-delay: 0.2s;\n}\n@keyframes copilotKitActivityDotsAnimation {\n 0%,\n 57.14% {\n animation-timing-function: cubic-bezier(0.33, 0.66, 0.66, 1);\n transform: translate(0);\n }\n 28.57% {\n animation-timing-function: cubic-bezier(0.33, 0, 0.66, 0.33);\n transform: translateY(-6px);\n }\n 100% {\n transform: translate(0);\n }\n}\n\n@keyframes copilotKitSpinAnimation {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes copilotKitPulseAnimation {\n 50% {\n opacity: 0.5;\n }\n}\n",".copilotKitResponseButton {\n background-color: var(--copilot-kit-response-button-background-color);\n border: 1px solid var(--copilot-kit-separator-color);\n border-radius: 4px;\n color: var(--copilot-kit-response-button-color);\n cursor: pointer;\n font-size: 14px;\n font-weight: 500;\n height: 32px;\n line-height: 30px;\n margin: 0;\n padding: 0 16px;\n text-align: center;\n text-decoration: none;\n text-transform: none;\n white-space: nowrap;\n margin-top: 15px;\n}\n\n.copilotKitResponseButton:hover {\n filter: brightness(95%);\n}\n\n.copilotKitResponseButton > span {\n margin-right: 0.5rem;\n}\n",".copilotKitMarkdown h1,\n.copilotKitMarkdown h2,\n.copilotKitMarkdown h3,\n.copilotKitMarkdown h4,\n.copilotKitMarkdown h5,\n.copilotKitMarkdown h6 {\n font-weight: bold;\n line-height: 1.2;\n}\n\n.copilotKitMarkdown h1:not(:last-child),\n.copilotKitMarkdown h2:not(:last-child),\n.copilotKitMarkdown h3:not(:last-child),\n.copilotKitMarkdown h4:not(:last-child),\n.copilotKitMarkdown h5:not(:last-child),\n.copilotKitMarkdown h6:not(:last-child) {\n margin-bottom: 1rem;\n}\n\n.copilotKitMarkdown h1 {\n font-size: 1.5em;\n}\n\n.copilotKitMarkdown h2 {\n font-size: 1.25em;\n font-weight: 600;\n}\n\n.copilotKitMarkdown h3 {\n font-size: 1.1em;\n}\n\n.copilotKitMarkdown h4 {\n font-size: 1em;\n}\n\n.copilotKitMarkdown h5 {\n font-size: 0.9em;\n}\n\n.copilotKitMarkdown h6 {\n font-size: 0.8em;\n}\n\n.copilotKitMarkdown p:not(:last-child),\n.copilotKitMarkdown pre:not(:last-child),\n.copilotKitMarkdown ol:not(:last-child),\n.copilotKitMarkdown ul:not(:last-child),\n.copilotKitMarkdown blockquote:not(:last-child) {\n margin-bottom: 1.25em;\n}\n\n.copilotKitMarkdown blockquote {\n border-color: rgb(142, 142, 160);\n border-left-width: 2px;\n border-left-style: solid;\n line-height: 1.2;\n padding-left: 10px;\n}\n\n.copilotKitMarkdown blockquote p {\n padding: 0.7em 0;\n}\n\n.copilotKitMarkdown ul {\n list-style-type: disc;\n padding-left: 20px;\n overflow: visible;\n}\n\n.copilotKitMarkdown li {\n list-style-type: inherit;\n list-style-position: outside;\n margin-left: 0;\n padding-left: 0;\n position: relative;\n overflow: visible;\n}\n\n.copilotKitCodeBlock {\n position: relative;\n width: 100%;\n background-color: rgb(9 9 11);\n border-radius: 0.375rem;\n}\n\n.copilotKitCodeBlockToolbar {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n background-color: rgb(39 39 42);\n padding-left: 1rem;\n padding-top: 0.09rem;\n padding-bottom: 0.09rem;\n color: rgb(228, 228, 228);\n border-top-left-radius: 0.375rem;\n border-top-right-radius: 0.375rem;\n font-family: sans-serif;\n}\n\n.copilotKitCodeBlockToolbarLanguage {\n font-size: 0.75rem;\n line-height: 1rem;\n text-transform: lowercase;\n}\n\n.copilotKitCodeBlockToolbarButtons {\n display: flex;\n align-items: center;\n margin-right: 0.25rem;\n margin-left: 0.25rem;\n}\n\n.copilotKitCodeBlockToolbarButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 0.375rem;\n font-size: 0.875rem;\n line-height: 1.25rem;\n font-weight: 500;\n height: 2.5rem;\n width: 2.5rem;\n padding: 3px;\n margin: 2px;\n}\n\n.copilotKitCodeBlockToolbarButton:hover {\n background-color: rgb(55, 55, 58);\n}\n",".copilotKitMessages footer .suggestions {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.copilotKitMessages footer h6 {\n font-weight: 500;\n font-size: 0.7rem;\n margin-bottom: 8px;\n}\n\n.copilotKitMessages footer .suggestions .suggestion {\n padding: 8px 12px;\n font-size: 0.7rem;\n border-radius: 0.5rem;\n background: var(--copilot-kit-primary-color);\n color: var(--copilot-kit-contrast-color);\n}\n\n.copilotKitMessages footer .suggestions button {\n transition: transform 0.3s ease;\n}\n\n.copilotKitMessages footer .suggestions button:not(:disabled):hover {\n transform: scale(1.05);\n}\n\n.copilotKitMessages footer .suggestions button:disabled {\n cursor: wait;\n}\n\n.copilotKitMessages footer .suggestions button svg {\n margin-right: 6px;\n}\n",".copilotKitChat {\n z-index: 30;\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n font-family:\n ui-sans-serif,\n system-ui,\n -apple-system,\n BlinkMacSystemFont,\n \"Segoe UI\",\n Roboto,\n \"Helvetica Neue\",\n Arial,\n \"Noto Sans\",\n sans-serif,\n \"Apple Color Emoji\",\n \"Segoe UI Emoji\",\n \"Segoe UI Symbol\",\n \"Noto Color Emoji\";\n font-feature-settings: normal;\n font-variation-settings: normal;\n touch-action: manipulation;\n display: flex;\n flex-direction: column;\n /* height: 100%; */\n}\n\n.copilotKitChat svg {\n display: inline-block;\n vertical-align: middle;\n}\n\n.copilotKitChat .copilotKitMessages {\n flex-grow: 1;\n}\n",".copilotKitDevConsole {\n background-color: #f3f4f6;\n padding-left: 10px;\n padding-right: 10px;\n display: flex;\n align-items: center;\n border-bottom: 1px solid #cecece;\n padding-top: 10px;\n padding-bottom: 10px;\n}\n\n.copilotKitDevConsole.copilotKitDevConsoleWarnOutdated {\n background-color: #f9caca;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo {\n flex: 1;\n margin-left: 18px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo header {\n font-size: 11px;\n font-weight: bold;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo footer {\n margin-top: 10px;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo footer button {\n font-size: 11px;\n font-weight: normal;\n font-family: monospace;\n background-color: white;\n border: 1px solid #979797;\n padding: 1px 12px;\n padding-left: 5px;\n border-radius: 4px;\n display: inline-block;\n text-align: left;\n overflow: hidden;\n white-space: nowrap;\n width: 260px;\n text-overflow: ellipsis;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo header aside {\n display: inline;\n font-weight: normal;\n color: #7f7a7a;\n margin-left: 5px;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo section {\n font-size: 11px;\n}\n\n.copilotKitDevConsole .copilotKitVersionInfo section svg {\n margin-left: 3px;\n margin-top: -3px;\n}\n\n.copilotKitDevConsole .copilotKitDebugMenuButton {\n font-size: 11px;\n font-weight: bold;\n display: flex;\n width: 90px;\n height: 30px;\n background-color: #d8d8d8;\n border: 1px solid #979797;\n border-radius: 6px;\n align-items: center;\n justify-content: center;\n outline: none;\n}\n\n.copilotKitDebugMenuButton.compact {\n width: 35px;\n color: black;\n justify-content: center;\n outline: none;\n font-size: 8px;\n}\n\n.copilotKitDevConsole .copilotKitDebugMenuButton:hover {\n background-color: #c7c7c7;\n}\n\n.copilotKitDevConsole .copilotKitDebugMenuButton > svg {\n margin-left: 10px;\n}\n\n.copilotKitDebugMenu {\n background-color: #d8d8d8;\n margin-top: 2px;\n border-radius: 6px;\n border: 1px solid #979797;\n padding: 0.25rem;\n outline: none;\n font-size: 13px;\n}\n\n.copilotKitDebugMenuItem {\n padding-top: 3px;\n padding-bottom: 3px;\n padding-left: 10px;\n padding-right: 10px;\n display: block;\n width: 100%;\n text-align: left;\n background: none;\n border: none;\n cursor: pointer;\n}\n\n.copilotKitDebugMenuItem:hover {\n background-color: #c7c7c7;\n border-radius: 4px;\n}\n\n.copilotKitDebugMenu[data-closed] {\n transform: scale(0.95); /* data-[closed]:scale-95 */\n opacity: 0; /* data-[closed]:opacity-0 */\n}\n\n.copilotKitDebugMenu hr {\n height: 1px;\n border: none; /* Remove 3D look */\n background-color: #979797; /* Set color */\n margin: 0.25rem;\n}\n"],"mappings":";AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;ACVF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;;;ACpBF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACE;AAAA;AAAA;;;AC/BJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAGA;AACA;AACA;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAGF;AACE;AACA;AAAA;;;ACtDF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACE;AACA;AACA;AACA;AAAA;AAAA;AAIJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;;;ACzCF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;;;ACvFF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;;;ACvEF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;;;ACzDJ;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AACE;AAAA;AAEF;AAAA;AAGI;AACA;AAAA;AAAA;AAGA;AACA;AAAA;AAAA;AAGA;AAAA;AAAA;AAIJ;AAAA;AAEI;AAAA;AAAA;AAIJ;AAAA;AAEI;AAAA;AAAA;;;AChCJ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;;;ACxBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAME;AACA;AAAA;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAME;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AAAA;AAAA;AAAA;AAAA;AAKE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;;;ACjIF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;;;ACjCF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA;AACA;AACA;AACA;AACA;AAAA;AAIF;AACE;AACA;AAAA;AAGF;AACE;AAAA;;;ACpCF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AAAA;","names":[]}