From b570f9695db12d4fb15ef730dcd11b9f03a19daf Mon Sep 17 00:00:00 2001 From: Cezar Vasconcelos <97035956+vasconceloscezar@users.noreply.github.com> Date: Fri, 13 Sep 2024 13:17:52 -0300 Subject: [PATCH] feat: notion-documentation (#3767) * docs: add notion category and setup file * docs: Add Notion Agent Meeting Notes documentation * docs: Remove unused anchors in Notion guide * docs(Notion): Add guide for Conversational Notion Agent * feat: add notion example flows * cleanup * build and run * align-pages --------- Co-authored-by: Mendon Kissling <59585235+mendonk@users.noreply.github.com> --- .../Notion/Conversational_Notion_Agent.json | 1 + .../Notion/Meeting_Notes_Agent.json | 1 + docs/docs/Integrations/Notion/_category_.json | 1 + .../Notion/integrations-notion.md | 89 +++++++++ .../Notion/notion-agent-conversational.md | 145 +++++++++++++++ .../Notion/notion-agent-meeting-notes.md | 176 ++++++++++++++++++ .../notion_conversational_agent_tools.png | Bin 0 -> 134025 bytes .../Notion/notion_meeting_agent_part_1.png | Bin 0 -> 115417 bytes .../Notion/notion_meeting_agent_part_2.png | Bin 0 -> 181004 bytes 9 files changed, 413 insertions(+) create mode 100644 docs/docs/Integrations/Notion/Conversational_Notion_Agent.json create mode 100644 docs/docs/Integrations/Notion/Meeting_Notes_Agent.json create mode 100644 docs/docs/Integrations/Notion/_category_.json create mode 100644 docs/docs/Integrations/Notion/integrations-notion.md create mode 100644 docs/docs/Integrations/Notion/notion-agent-conversational.md create mode 100644 docs/docs/Integrations/Notion/notion-agent-meeting-notes.md create mode 100644 docs/docs/Integrations/Notion/notion_conversational_agent_tools.png create mode 100644 docs/docs/Integrations/Notion/notion_meeting_agent_part_1.png create mode 100644 docs/docs/Integrations/Notion/notion_meeting_agent_part_2.png diff --git a/docs/docs/Integrations/Notion/Conversational_Notion_Agent.json b/docs/docs/Integrations/Notion/Conversational_Notion_Agent.json new file mode 100644 index 000000000..3afbcc35c --- /dev/null +++ b/docs/docs/Integrations/Notion/Conversational_Notion_Agent.json @@ -0,0 +1 @@ +{"id":"e070f0be-edc4-4512-bb0f-e53307062a26","data":{"nodes":[{"id":"AddContentToPage-ZezUn","type":"genericNode","position":{"x":1416.217259177943,"y":1709.6205867919527},"data":{"type":"AddContentToPage","node":{"template":{"_type":"Component","block_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"block_id","value":"","display_name":"Page/Block ID","advanced":true,"dynamic":false,"info":"The ID of the page/block to add the content.","title_case":false,"type":"str","_input_type":"StrInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nfrom typing import Dict, Any, Union\nfrom markdown import markdown\nfrom bs4 import BeautifulSoup\nimport requests\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom pydantic import BaseModel, Field\n\n\nclass AddContentToPage(LCToolComponent):\n display_name: str = \"Add Content to Page \"\n description: str = \"Convert markdown text to Notion blocks and append them to a Notion page.\"\n documentation: str = \"https://developers.notion.com/reference/patch-block-children\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n MultilineInput(\n name=\"markdown_text\",\n display_name=\"Markdown Text\",\n info=\"The markdown text to convert to Notion blocks.\",\n ),\n StrInput(\n name=\"block_id\",\n display_name=\"Page/Block ID\",\n info=\"The ID of the page/block to add the content.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class AddContentToPageSchema(BaseModel):\n markdown_text: str = Field(..., description=\"The markdown text to convert to Notion blocks.\")\n block_id: str = Field(..., description=\"The ID of the page/block to add the content.\")\n\n def run_model(self) -> Data:\n result = self._add_content_to_page(self.markdown_text, self.block_id)\n return Data(data=result, text=json.dumps(result))\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"add_content_to_notion_page\",\n description=\"Convert markdown text to Notion blocks and append them to a Notion page.\",\n func=self._add_content_to_page,\n args_schema=self.AddContentToPageSchema,\n )\n\n def _add_content_to_page(self, markdown_text: str, block_id: str) -> Union[Dict[str, Any], str]:\n try:\n html_text = markdown(markdown_text)\n soup = BeautifulSoup(html_text, \"html.parser\")\n blocks = self.process_node(soup)\n\n url = f\"https://api.notion.com/v1/blocks/{block_id}/children\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"children\": blocks,\n }\n\n response = requests.patch(url, headers=headers, json=data)\n response.raise_for_status()\n\n return response.json()\n except requests.exceptions.RequestException as e:\n error_message = f\"Error: Failed to add content to Notion page. {str(e)}\"\n if hasattr(e, \"response\") and e.response is not None:\n error_message += f\" Status code: {e.response.status_code}, Response: {e.response.text}\"\n return error_message\n except Exception as e:\n return f\"Error: An unexpected error occurred while adding content to Notion page. {str(e)}\"\n\n def process_node(self, node):\n blocks = []\n if isinstance(node, str):\n text = node.strip()\n if text:\n if text.startswith(\"#\"):\n heading_level = text.count(\"#\", 0, 6)\n heading_text = text[heading_level:].strip()\n if heading_level == 1:\n blocks.append(self.create_block(\"heading_1\", heading_text))\n elif heading_level == 2:\n blocks.append(self.create_block(\"heading_2\", heading_text))\n elif heading_level == 3:\n blocks.append(self.create_block(\"heading_3\", heading_text))\n else:\n blocks.append(self.create_block(\"paragraph\", text))\n elif node.name == \"h1\":\n blocks.append(self.create_block(\"heading_1\", node.get_text(strip=True)))\n elif node.name == \"h2\":\n blocks.append(self.create_block(\"heading_2\", node.get_text(strip=True)))\n elif node.name == \"h3\":\n blocks.append(self.create_block(\"heading_3\", node.get_text(strip=True)))\n elif node.name == \"p\":\n code_node = node.find(\"code\")\n if code_node:\n code_text = code_node.get_text()\n language, code = self.extract_language_and_code(code_text)\n blocks.append(self.create_block(\"code\", code, language=language))\n elif self.is_table(str(node)):\n blocks.extend(self.process_table(node))\n else:\n blocks.append(self.create_block(\"paragraph\", node.get_text(strip=True)))\n elif node.name == \"ul\":\n blocks.extend(self.process_list(node, \"bulleted_list_item\"))\n elif node.name == \"ol\":\n blocks.extend(self.process_list(node, \"numbered_list_item\"))\n elif node.name == \"blockquote\":\n blocks.append(self.create_block(\"quote\", node.get_text(strip=True)))\n elif node.name == \"hr\":\n blocks.append(self.create_block(\"divider\", \"\"))\n elif node.name == \"img\":\n blocks.append(self.create_block(\"image\", \"\", image_url=node.get(\"src\")))\n elif node.name == \"a\":\n blocks.append(self.create_block(\"bookmark\", node.get_text(strip=True), link_url=node.get(\"href\")))\n elif node.name == \"table\":\n blocks.extend(self.process_table(node))\n\n for child in node.children:\n if isinstance(child, str):\n continue\n blocks.extend(self.process_node(child))\n\n return blocks\n\n def extract_language_and_code(self, code_text):\n lines = code_text.split(\"\\n\")\n language = lines[0].strip()\n code = \"\\n\".join(lines[1:]).strip()\n return language, code\n\n def is_code_block(self, text):\n return text.startswith(\"```\")\n\n def extract_code_block(self, text):\n lines = text.split(\"\\n\")\n language = lines[0].strip(\"`\").strip()\n code = \"\\n\".join(lines[1:]).strip(\"`\").strip()\n return language, code\n\n def is_table(self, text):\n rows = text.split(\"\\n\")\n if len(rows) < 2:\n return False\n\n has_separator = False\n for i, row in enumerate(rows):\n if \"|\" in row:\n cells = [cell.strip() for cell in row.split(\"|\")]\n cells = [cell for cell in cells if cell] # Remove empty cells\n if i == 1 and all(set(cell) <= set(\"-|\") for cell in cells):\n has_separator = True\n elif not cells:\n return False\n\n return has_separator and len(rows) >= 3\n\n def process_list(self, node, list_type):\n blocks = []\n for item in node.find_all(\"li\"):\n item_text = item.get_text(strip=True)\n checked = item_text.startswith(\"[x]\")\n is_checklist = item_text.startswith(\"[ ]\") or checked\n\n if is_checklist:\n item_text = item_text.replace(\"[x]\", \"\").replace(\"[ ]\", \"\").strip()\n blocks.append(self.create_block(\"to_do\", item_text, checked=checked))\n else:\n blocks.append(self.create_block(list_type, item_text))\n return blocks\n\n def process_table(self, node):\n blocks = []\n header_row = node.find(\"thead\").find(\"tr\") if node.find(\"thead\") else None\n body_rows = node.find(\"tbody\").find_all(\"tr\") if node.find(\"tbody\") else []\n\n if header_row or body_rows:\n table_width = max(\n len(header_row.find_all([\"th\", \"td\"])) if header_row else 0,\n max(len(row.find_all([\"th\", \"td\"])) for row in body_rows),\n )\n\n table_block = self.create_block(\"table\", \"\", table_width=table_width, has_column_header=bool(header_row))\n blocks.append(table_block)\n\n if header_row:\n header_cells = [cell.get_text(strip=True) for cell in header_row.find_all([\"th\", \"td\"])]\n header_row_block = self.create_block(\"table_row\", header_cells)\n blocks.append(header_row_block)\n\n for row in body_rows:\n cells = [cell.get_text(strip=True) for cell in row.find_all([\"th\", \"td\"])]\n row_block = self.create_block(\"table_row\", cells)\n blocks.append(row_block)\n\n return blocks\n\n def create_block(self, block_type: str, content: str, **kwargs) -> Dict[str, Any]:\n block: dict[str, Any] = {\n \"object\": \"block\",\n \"type\": block_type,\n block_type: {},\n }\n\n if block_type in [\n \"paragraph\",\n \"heading_1\",\n \"heading_2\",\n \"heading_3\",\n \"bulleted_list_item\",\n \"numbered_list_item\",\n \"quote\",\n ]:\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n elif block_type == \"to_do\":\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n block[block_type][\"checked\"] = kwargs.get(\"checked\", False)\n elif block_type == \"code\":\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n block[block_type][\"language\"] = kwargs.get(\"language\", \"plain text\")\n elif block_type == \"image\":\n block[block_type] = {\"type\": \"external\", \"external\": {\"url\": kwargs.get(\"image_url\", \"\")}}\n elif block_type == \"divider\":\n pass\n elif block_type == \"bookmark\":\n block[block_type][\"url\"] = kwargs.get(\"link_url\", \"\")\n elif block_type == \"table\":\n block[block_type][\"table_width\"] = kwargs.get(\"table_width\", 0)\n block[block_type][\"has_column_header\"] = kwargs.get(\"has_column_header\", False)\n block[block_type][\"has_row_header\"] = kwargs.get(\"has_row_header\", False)\n elif block_type == \"table_row\":\n block[block_type][\"cells\"] = [[{\"type\": \"text\", \"text\": {\"content\": cell}} for cell in content]]\n\n return block\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"markdown_text":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"markdown_text","value":"","display_name":"Markdown Text","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The markdown text to convert to Notion blocks.","title_case":false,"type":"str","_input_type":"MultilineInput"},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Convert markdown text to Notion blocks and append them to a Notion page.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Add Content to Page ","documentation":"https://developers.notion.com/reference/patch-block-children","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["markdown_text","block_id","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"AddContentToPage-ZezUn","description":"Convert markdown text to Notion blocks and append them to a Notion page.","display_name":"Add Content to Page "},"selected":false,"width":384,"height":330,"dragging":false,"positionAbsolute":{"x":1416.217259177943,"y":1709.6205867919527}},{"id":"NotionPageCreator-6SCB5","type":"genericNode","position":{"x":1413.9782390799146,"y":2051.645785494985},"data":{"type":"NotionPageCreator","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nfrom typing import Dict, Any, Union\nimport requests\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom langflow.io import Output\n\nclass NotionPageCreator(LCToolComponent):\n display_name: str = \"Create Page \"\n description: str = \"A component for creating Notion pages.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/page-create\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"database_id\",\n display_name=\"Database ID\",\n info=\"The ID of the Notion database.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n MultilineInput(\n name=\"properties_json\",\n display_name=\"Properties (JSON)\",\n info=\"The properties of the new page as a JSON string.\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionPageCreatorSchema(BaseModel):\n database_id: str = Field(..., description=\"The ID of the Notion database.\")\n properties_json: str = Field(..., description=\"The properties of the new page as a JSON string.\")\n\n def run_model(self) -> Data:\n result = self._create_notion_page(self.database_id, self.properties_json)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the created page data\n output = \"Created page properties:\\n\"\n for prop_name, prop_value in result.get(\"properties\", {}).items():\n output += f\"{prop_name}: {prop_value}\\n\"\n return Data(text=output, data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"create_notion_page\",\n description=\"Create a new page in a Notion database. IMPORTANT: Use the tool to check the Database properties for more details before using this tool.\",\n func=self._create_notion_page,\n args_schema=self.NotionPageCreatorSchema,\n )\n\n def _create_notion_page(self, database_id: str, properties_json: str) -> Union[Dict[str, Any], str]:\n if not database_id or not properties_json:\n return \"Invalid input. Please provide 'database_id' and 'properties_json'.\"\n\n try:\n properties = json.loads(properties_json)\n except json.JSONDecodeError as e:\n return f\"Invalid properties format. Please provide a valid JSON string. Error: {str(e)}\"\n\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"parent\": {\"database_id\": database_id},\n \"properties\": properties,\n }\n\n try:\n response = requests.post(\"https://api.notion.com/v1/pages\", headers=headers, json=data)\n response.raise_for_status()\n result = response.json()\n return result\n except requests.exceptions.RequestException as e:\n error_message = f\"Failed to create Notion page. Error: {str(e)}\"\n if hasattr(e, \"response\") and e.response is not None:\n error_message += f\" Status code: {e.response.status_code}, Response: {e.response.text}\"\n return error_message\n\n def __call__(self, *args, **kwargs):\n return self._create_notion_page(*args, **kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"database_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"database_id","value":"","display_name":"Database ID","advanced":true,"dynamic":false,"info":"The ID of the Notion database.","title_case":false,"type":"str","_input_type":"StrInput"},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"properties_json":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"properties_json","value":"","display_name":"Properties (JSON)","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The properties of the new page as a JSON string.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"A component for creating Notion pages.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Create Page ","documentation":"https://docs.langflow.org/integrations/notion/page-create","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["database_id","notion_secret","properties_json"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionPageCreator-6SCB5","description":"A component for creating Notion pages.","display_name":"Create Page "},"selected":false,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":1413.9782390799146,"y":2051.645785494985}},{"id":"NotionDatabaseProperties-aeWil","type":"genericNode","position":{"x":1004.5753613670959,"y":1713.914531491452},"data":{"type":"NotionDatabaseProperties","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import Dict, Union\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom langflow.io import Output\n\nclass NotionDatabaseProperties(LCToolComponent):\n display_name: str = \"List Database Properties \"\n description: str = \"Retrieve properties of a Notion database.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/list-database-properties\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"database_id\",\n display_name=\"Database ID\",\n info=\"The ID of the Notion database.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionDatabasePropertiesSchema(BaseModel):\n database_id: str = Field(..., description=\"The ID of the Notion database.\")\n\n def run_model(self) -> Data:\n result = self._fetch_database_properties(self.database_id)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the properties\n return Data(text=str(result), data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_database_properties\",\n description=\"Retrieve properties of a Notion database. Input should include the database ID.\",\n func=self._fetch_database_properties,\n args_schema=self.NotionDatabasePropertiesSchema,\n )\n\n def _fetch_database_properties(self, database_id: str) -> Union[Dict, str]:\n url = f\"https://api.notion.com/v1/databases/{database_id}\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\", # Use the latest supported version\n }\n try:\n response = requests.get(url, headers=headers)\n response.raise_for_status()\n data = response.json()\n properties = data.get(\"properties\", {})\n return properties\n except requests.exceptions.RequestException as e:\n return f\"Error fetching Notion database properties: {str(e)}\"\n except ValueError as e:\n return f\"Error parsing Notion API response: {str(e)}\"\n except Exception as e:\n return f\"An unexpected error occurred: {str(e)}\"\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"database_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"database_id","value":"","display_name":"Database ID","advanced":true,"dynamic":false,"info":"The ID of the Notion database.","title_case":false,"type":"str","_input_type":"StrInput"},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Retrieve properties of a Notion database.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Database Properties ","documentation":"https://docs.langflow.org/integrations/notion/list-database-properties","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["database_id","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionDatabaseProperties-aeWil","description":"Retrieve properties of a Notion database.","display_name":"List Database Properties "},"selected":false,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":1004.5753613670959,"y":1713.914531491452}},{"id":"NotionListPages-znA3w","type":"genericNode","position":{"x":1006.1848442547046,"y":2022.7880909242833},"data":{"type":"NotionListPages","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nimport json\nfrom typing import Dict, Any, List, Optional\nfrom pydantic import BaseModel, Field\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionListPages(LCToolComponent):\n display_name: str = \"List Pages \"\n description: str = (\n \"Query a Notion database with filtering and sorting. \"\n \"The input should be a JSON string containing the 'filter' and 'sorts' objects. \"\n \"Example input:\\n\"\n '{\"filter\": {\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}, \"sorts\": [{\"timestamp\": \"created_time\", \"direction\": \"descending\"}]}'\n )\n documentation: str = \"https://docs.langflow.org/integrations/notion/list-pages\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n StrInput(\n name=\"database_id\",\n display_name=\"Database ID\",\n info=\"The ID of the Notion database to query.\",\n ),\n MultilineInput(\n name=\"query_json\",\n display_name=\"Database query (JSON)\",\n info=\"A JSON string containing the filters and sorts that will be used for querying the database. Leave empty for no filters or sorts.\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n class NotionListPagesSchema(BaseModel):\n database_id: str = Field(..., description=\"The ID of the Notion database to query.\")\n query_json: Optional[str] = Field(\n default=\"\",\n description=\"A JSON string containing the filters and sorts for querying the database. Leave empty for no filters or sorts.\",\n )\n\n def run_model(self) -> List[Data]:\n result = self._query_notion_database(self.database_id, self.query_json)\n\n if isinstance(result, str):\n # An error occurred, return it as a single record\n return [Data(text=result)]\n\n records = []\n combined_text = f\"Pages found: {len(result)}\\n\\n\"\n\n for page in result:\n page_data = {\n \"id\": page[\"id\"],\n \"url\": page[\"url\"],\n \"created_time\": page[\"created_time\"],\n \"last_edited_time\": page[\"last_edited_time\"],\n \"properties\": page[\"properties\"],\n }\n\n text = (\n f\"id: {page['id']}\\n\"\n f\"url: {page['url']}\\n\"\n f\"created_time: {page['created_time']}\\n\"\n f\"last_edited_time: {page['last_edited_time']}\\n\"\n f\"properties: {json.dumps(page['properties'], indent=2)}\\n\\n\"\n )\n\n combined_text += text\n records.append(Data(text=text, **page_data))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_list_pages\",\n description=self.description,\n func=self._query_notion_database,\n args_schema=self.NotionListPagesSchema,\n )\n\n def _query_notion_database(self, database_id: str, query_json: Optional[str] = None) -> List[Dict[str, Any]] | str:\n url = f\"https://api.notion.com/v1/databases/{database_id}/query\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n query_payload = {}\n if query_json and query_json.strip():\n try:\n query_payload = json.loads(query_json)\n except json.JSONDecodeError as e:\n return f\"Invalid JSON format for query: {str(e)}\"\n\n try:\n response = requests.post(url, headers=headers, json=query_payload)\n response.raise_for_status()\n results = response.json()\n return results[\"results\"]\n except requests.exceptions.RequestException as e:\n return f\"Error querying Notion database: {str(e)}\"\n except KeyError:\n return \"Unexpected response format from Notion API\"\n except Exception as e:\n return f\"An unexpected error occurred: {str(e)}\"\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"database_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"database_id","value":"","display_name":"Database ID","advanced":true,"dynamic":false,"info":"The ID of the Notion database to query.","title_case":false,"type":"str","_input_type":"StrInput"},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"query_json":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"query_json","value":"","display_name":"Database query (JSON)","advanced":true,"input_types":["Message"],"dynamic":false,"info":"A JSON string containing the filters and sorts that will be used for querying the database. Leave empty for no filters or sorts.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Query a Notion database with filtering and sorting. The input should be a JSON string containing the 'filter' and 'sorts' objects. Example input:\n{\"filter\": {\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}, \"sorts\": [{\"timestamp\": \"created_time\", \"direction\": \"descending\"}]}","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Pages ","documentation":"https://docs.langflow.org/integrations/notion/list-pages","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["notion_secret","database_id","query_json"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionListPages-znA3w","description":"Query a Notion database with filtering and sorting. The input should be a JSON string containing the 'filter' and 'sorts' objects. Example input:\n{\"filter\": {\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}, \"sorts\": [{\"timestamp\": \"created_time\", \"direction\": \"descending\"}]}","display_name":"List Pages "},"selected":false,"width":384,"height":470,"dragging":false,"positionAbsolute":{"x":1006.1848442547046,"y":2022.7880909242833}},{"id":"NotionUserList-C3eGn","type":"genericNode","position":{"x":2260.15497405973,"y":1717.4551881467207},"data":{"type":"NotionUserList","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import List, Dict\nfrom pydantic import BaseModel\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionUserList(LCToolComponent):\n display_name = \"List Users \"\n description = \"Retrieve users from Notion.\"\n documentation = \"https://docs.langflow.org/integrations/notion/list-users\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionUserListSchema(BaseModel):\n pass\n\n def run_model(self) -> List[Data]:\n users = self._list_users()\n records = []\n combined_text = \"\"\n\n for user in users:\n output = \"User:\\n\"\n for key, value in user.items():\n output += f\"{key.replace('_', ' ').title()}: {value}\\n\"\n output += \"________________________\\n\"\n\n combined_text += output\n records.append(Data(text=output, data=user))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_list_users\",\n description=\"Retrieve users from Notion.\",\n func=self._list_users,\n args_schema=self.NotionUserListSchema,\n )\n\n def _list_users(self) -> List[Dict]:\n url = \"https://api.notion.com/v1/users\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n response = requests.get(url, headers=headers)\n response.raise_for_status()\n\n data = response.json()\n results = data[\"results\"]\n\n users = []\n for user in results:\n user_data = {\n \"id\": user[\"id\"],\n \"type\": user[\"type\"],\n \"name\": user.get(\"name\", \"\"),\n \"avatar_url\": user.get(\"avatar_url\", \"\"),\n }\n users.append(user_data)\n\n return users\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Retrieve users from Notion.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Users ","documentation":"https://docs.langflow.org/integrations/notion/list-users","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionUserList-C3eGn","description":"Retrieve users from Notion.","display_name":"List Users "},"selected":true,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":2260.15497405973,"y":1717.4551881467207}},{"id":"NotionPageContent-SlL21","type":"genericNode","position":{"x":1826.4242329724448,"y":1715.6365113286927},"data":{"type":"NotionPageContent","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom langflow.io import Output\n\nclass NotionPageContent(LCToolComponent):\n display_name = \"Page Content Viewer \"\n description = \"Retrieve the content of a Notion page as plain text.\"\n documentation = \"https://docs.langflow.org/integrations/notion/page-content-viewer\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"page_id\",\n display_name=\"Page ID\",\n info=\"The ID of the Notion page to retrieve.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionPageContentSchema(BaseModel):\n page_id: str = Field(..., description=\"The ID of the Notion page to retrieve.\")\n\n def run_model(self) -> Data:\n result = self._retrieve_page_content(self.page_id)\n if isinstance(result, str) and result.startswith(\"Error:\"):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the content\n return Data(text=result, data={\"content\": result})\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_page_content\",\n description=\"Retrieve the content of a Notion page as plain text.\",\n func=self._retrieve_page_content,\n args_schema=self.NotionPageContentSchema,\n )\n\n def _retrieve_page_content(self, page_id: str) -> str:\n blocks_url = f\"https://api.notion.com/v1/blocks/{page_id}/children?page_size=100\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\",\n }\n try:\n blocks_response = requests.get(blocks_url, headers=headers)\n blocks_response.raise_for_status()\n blocks_data = blocks_response.json()\n return self.parse_blocks(blocks_data.get(\"results\", []))\n except requests.exceptions.RequestException as e:\n error_message = f\"Error: Failed to retrieve Notion page content. {str(e)}\"\n if hasattr(e, \"response\") and e.response is not None:\n error_message += f\" Status code: {e.response.status_code}, Response: {e.response.text}\"\n return error_message\n except Exception as e:\n return f\"Error: An unexpected error occurred while retrieving Notion page content. {str(e)}\"\n\n def parse_blocks(self, blocks: list) -> str:\n content = \"\"\n for block in blocks:\n block_type = block.get(\"type\")\n if block_type in [\"paragraph\", \"heading_1\", \"heading_2\", \"heading_3\", \"quote\"]:\n content += self.parse_rich_text(block[block_type].get(\"rich_text\", [])) + \"\\n\\n\"\n elif block_type in [\"bulleted_list_item\", \"numbered_list_item\"]:\n content += self.parse_rich_text(block[block_type].get(\"rich_text\", [])) + \"\\n\"\n elif block_type == \"to_do\":\n content += self.parse_rich_text(block[\"to_do\"].get(\"rich_text\", [])) + \"\\n\"\n elif block_type == \"code\":\n content += self.parse_rich_text(block[\"code\"].get(\"rich_text\", [])) + \"\\n\\n\"\n elif block_type == \"image\":\n content += f\"[Image: {block['image'].get('external', {}).get('url', 'No URL')}]\\n\\n\"\n elif block_type == \"divider\":\n content += \"---\\n\\n\"\n return content.strip()\n\n def parse_rich_text(self, rich_text: list) -> str:\n return \"\".join(segment.get(\"plain_text\", \"\") for segment in rich_text)\n\n def __call__(self, *args, **kwargs):\n return self._retrieve_page_content(*args, **kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"page_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"page_id","value":"","display_name":"Page ID","advanced":true,"dynamic":false,"info":"The ID of the Notion page to retrieve.","title_case":false,"type":"str","_input_type":"StrInput"}},"description":"Retrieve the content of a Notion page as plain text.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Page Content Viewer ","documentation":"https://docs.langflow.org/integrations/notion/page-content-viewer","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["page_id","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionPageContent-SlL21","description":"Retrieve the content of a Notion page as plain text.","display_name":"Page Content Viewer "},"selected":false,"width":384,"height":330,"dragging":false,"positionAbsolute":{"x":1826.4242329724448,"y":1715.6365113286927}},{"id":"NotionSearch-VS2mI","type":"genericNode","position":{"x":2258.1166047519732,"y":2034.3959294952945},"data":{"type":"NotionSearch","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import Dict, Any, List\nfrom pydantic import BaseModel, Field\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, DropdownInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionSearch(LCToolComponent):\n display_name: str = \"Search \"\n description: str = \"Searches all pages and databases that have been shared with an integration. The search field can be an empty value to show all values from that search\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/search\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n StrInput(\n name=\"query\",\n display_name=\"Search Query\",\n info=\"The text that the API compares page and database titles against.\",\n ),\n DropdownInput(\n name=\"filter_value\",\n display_name=\"Filter Type\",\n info=\"Limits the results to either only pages or only databases.\",\n options=[\"page\", \"database\"],\n value=\"page\",\n ),\n DropdownInput(\n name=\"sort_direction\",\n display_name=\"Sort Direction\",\n info=\"The direction to sort the results.\",\n options=[\"ascending\", \"descending\"],\n value=\"descending\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionSearchSchema(BaseModel):\n query: str = Field(..., description=\"The search query text.\")\n filter_value: str = Field(default=\"page\", description=\"Filter type: 'page' or 'database'.\")\n sort_direction: str = Field(default=\"descending\", description=\"Sort direction: 'ascending' or 'descending'.\")\n\n def run_model(self) -> List[Data]:\n results = self._search_notion(self.query, self.filter_value, self.sort_direction)\n records = []\n combined_text = f\"Results found: {len(results)}\\n\\n\"\n\n for result in results:\n result_data = {\n \"id\": result[\"id\"],\n \"type\": result[\"object\"],\n \"last_edited_time\": result[\"last_edited_time\"],\n }\n\n if result[\"object\"] == \"page\":\n result_data[\"title_or_url\"] = result[\"url\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['url']}\\n\"\n elif result[\"object\"] == \"database\":\n if \"title\" in result and isinstance(result[\"title\"], list) and len(result[\"title\"]) > 0:\n result_data[\"title_or_url\"] = result[\"title\"][0][\"plain_text\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['title'][0]['plain_text']}\\n\"\n else:\n result_data[\"title_or_url\"] = \"N/A\"\n text = f\"id: {result['id']}\\ntitle_or_url: N/A\\n\"\n\n text += f\"type: {result['object']}\\nlast_edited_time: {result['last_edited_time']}\\n\\n\"\n combined_text += text\n records.append(Data(text=text, data=result_data))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_search\",\n description=\"Search Notion pages and databases. Input should include the search query and optionally filter type and sort direction.\",\n func=self._search_notion,\n args_schema=self.NotionSearchSchema,\n )\n\n def _search_notion(\n self, query: str, filter_value: str = \"page\", sort_direction: str = \"descending\"\n ) -> List[Dict[str, Any]]:\n url = \"https://api.notion.com/v1/search\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"query\": query,\n \"filter\": {\"value\": filter_value, \"property\": \"object\"},\n \"sort\": {\"direction\": sort_direction, \"timestamp\": \"last_edited_time\"},\n }\n\n response = requests.post(url, headers=headers, json=data)\n response.raise_for_status()\n\n results = response.json()\n return results[\"results\"]\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"filter_value":{"trace_as_metadata":true,"options":["page","database"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"filter_value","value":"page","display_name":"Filter Type","advanced":true,"dynamic":false,"info":"Limits the results to either only pages or only databases.","title_case":false,"type":"str","_input_type":"DropdownInput"},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"query":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"query","value":"","display_name":"Search Query","advanced":true,"dynamic":false,"info":"The text that the API compares page and database titles against.","title_case":false,"type":"str","_input_type":"StrInput"},"sort_direction":{"trace_as_metadata":true,"options":["ascending","descending"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sort_direction","value":"descending","display_name":"Sort Direction","advanced":true,"dynamic":false,"info":"The direction to sort the results.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"Searches all pages and databases that have been shared with an integration. The search field can be an empty value to show all values from that search","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Search ","documentation":"https://docs.langflow.org/integrations/notion/search","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["notion_secret","query","filter_value","sort_direction"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionSearch-VS2mI","description":"Searches all pages and databases that have been shared with an integration.","display_name":"Search "},"selected":false,"width":384,"height":386,"dragging":false,"positionAbsolute":{"x":2258.1166047519732,"y":2034.3959294952945}},{"id":"NotionPageUpdate-6FyYd","type":"genericNode","position":{"x":1827.0574354713603,"y":2055.9948126656136},"data":{"type":"NotionPageUpdate","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nimport requests\nfrom typing import Dict, Any, Union\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom loguru import logger\nfrom langflow.io import Output\n\nclass NotionPageUpdate(LCToolComponent):\n display_name: str = \"Update Page Property \"\n description: str = \"Update the properties of a Notion page.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/page-update\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"page_id\",\n display_name=\"Page ID\",\n info=\"The ID of the Notion page to update.\",\n ),\n MultilineInput(\n name=\"properties\",\n display_name=\"Properties\",\n info=\"The properties to update on the page (as a JSON string or a dictionary).\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionPageUpdateSchema(BaseModel):\n page_id: str = Field(..., description=\"The ID of the Notion page to update.\")\n properties: Union[str, Dict[str, Any]] = Field(\n ..., description=\"The properties to update on the page (as a JSON string or a dictionary).\"\n )\n\n def run_model(self) -> Data:\n result = self._update_notion_page(self.page_id, self.properties)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the updated page data\n output = \"Updated page properties:\\n\"\n for prop_name, prop_value in result.get(\"properties\", {}).items():\n output += f\"{prop_name}: {prop_value}\\n\"\n return Data(text=output, data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"update_notion_page\",\n description=\"Update the properties of a Notion page. IMPORTANT: Use the tool to check the Database properties for more details before using this tool.\",\n func=self._update_notion_page,\n args_schema=self.NotionPageUpdateSchema,\n )\n\n def _update_notion_page(self, page_id: str, properties: Union[str, Dict[str, Any]]) -> Union[Dict[str, Any], str]:\n url = f\"https://api.notion.com/v1/pages/{page_id}\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\", # Use the latest supported version\n }\n\n # Parse properties if it's a string\n if isinstance(properties, str):\n try:\n parsed_properties = json.loads(properties)\n except json.JSONDecodeError as e:\n error_message = f\"Invalid JSON format for properties: {str(e)}\"\n logger.error(error_message)\n return error_message\n\n else:\n parsed_properties = properties\n\n data = {\"properties\": parsed_properties}\n\n try:\n logger.info(f\"Sending request to Notion API: URL: {url}, Data: {json.dumps(data)}\")\n response = requests.patch(url, headers=headers, json=data)\n response.raise_for_status()\n updated_page = response.json()\n\n logger.info(f\"Successfully updated Notion page. Response: {json.dumps(updated_page)}\")\n return updated_page\n except requests.exceptions.HTTPError as e:\n error_message = f\"HTTP Error occurred: {str(e)}\"\n if e.response is not None:\n error_message += f\"\\nStatus code: {e.response.status_code}\"\n error_message += f\"\\nResponse body: {e.response.text}\"\n logger.error(error_message)\n return error_message\n except requests.exceptions.RequestException as e:\n error_message = f\"An error occurred while making the request: {str(e)}\"\n logger.error(error_message)\n return error_message\n except Exception as e:\n error_message = f\"An unexpected error occurred: {str(e)}\"\n logger.error(error_message)\n return error_message\n\n def __call__(self, *args, **kwargs):\n return self._update_notion_page(*args, **kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":true,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"page_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"page_id","value":"","display_name":"Page ID","advanced":true,"dynamic":false,"info":"The ID of the Notion page to update.","title_case":false,"type":"str","_input_type":"StrInput"},"properties":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"properties","value":"","display_name":"Properties","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The properties to update on the page (as a JSON string or a dictionary).","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Update the properties of a Notion page.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Update Page Property ","documentation":"https://docs.langflow.org/integrations/notion/page-update","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["page_id","properties","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionPageUpdate-6FyYd","description":"Update the properties of a Notion page.","display_name":"Update Page Property "},"selected":false,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":1827.0574354713603,"y":2055.9948126656136}},{"id":"ToolCallingAgent-50Gcd","type":"genericNode","position":{"x":2186.0530739759893,"y":612.1744804997304},"data":{"type":"ToolCallingAgent","node":{"template":{"_type":"Component","chat_history":{"trace_as_metadata":true,"list":true,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"chat_history","value":"","display_name":"Chat History","advanced":false,"input_types":["Data"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"DataInput"},"llm":{"trace_as_metadata":true,"list":false,"required":true,"placeholder":"","show":true,"name":"llm","value":"","display_name":"Language Model","advanced":false,"input_types":["LanguageModel"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"tools":{"trace_as_metadata":true,"list":true,"required":false,"placeholder":"","show":true,"name":"tools","value":"","display_name":"Tools","advanced":false,"input_types":["Tool","BaseTool"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from typing import Optional, List\n\nfrom langchain.agents import create_tool_calling_agent\nfrom langchain_core.prompts import ChatPromptTemplate, PromptTemplate, HumanMessagePromptTemplate\nfrom langflow.base.agents.agent import LCToolsAgentComponent\nfrom langflow.inputs import MultilineInput\nfrom langflow.inputs.inputs import HandleInput, DataInput\nfrom langflow.schema import Data\n\n\nclass ToolCallingAgentComponent(LCToolsAgentComponent):\n display_name: str = \"Tool Calling Agent\"\n description: str = \"Agent that uses tools\"\n icon = \"LangChain\"\n beta = True\n name = \"ToolCallingAgent\"\n\n inputs = LCToolsAgentComponent._base_inputs + [\n HandleInput(name=\"llm\", display_name=\"Language Model\", input_types=[\"LanguageModel\"], required=True),\n MultilineInput(\n name=\"system_prompt\",\n display_name=\"System Prompt\",\n info=\"System prompt for the agent.\",\n value=\"You are a helpful assistant\",\n ),\n MultilineInput(\n name=\"user_prompt\", display_name=\"Prompt\", info=\"This prompt must contain 'input' key.\", value=\"{input}\"\n ),\n DataInput(name=\"chat_history\", display_name=\"Chat History\", is_list=True, advanced=True),\n ]\n\n def get_chat_history_data(self) -> Optional[List[Data]]:\n return self.chat_history\n\n def create_agent_runnable(self):\n if \"input\" not in self.user_prompt:\n raise ValueError(\"Prompt must contain 'input' key.\")\n messages = [\n (\"system\", self.system_prompt),\n (\"placeholder\", \"{chat_history}\"),\n HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=[\"input\"], template=self.user_prompt)),\n (\"placeholder\", \"{agent_scratchpad}\"),\n ]\n prompt = ChatPromptTemplate.from_messages(messages)\n return create_tool_calling_agent(self.llm, self.tools, prompt)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"handle_parsing_errors":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"handle_parsing_errors","value":true,"display_name":"Handle Parse Errors","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Input","advanced":false,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageTextInput"},"max_iterations":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"max_iterations","value":15,"display_name":"Max Iterations","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"int","_input_type":"IntInput"},"system_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_prompt","value":"","display_name":"System Prompt","advanced":false,"input_types":["Message"],"dynamic":false,"info":"System prompt for the agent.","title_case":false,"type":"str","_input_type":"MultilineInput"},"user_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"user_prompt","value":"{input}","display_name":"Prompt","advanced":true,"input_types":["Message"],"dynamic":false,"info":"This prompt must contain 'input' key.","title_case":false,"type":"str","_input_type":"MultilineInput"},"verbose":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"verbose","value":true,"display_name":"Verbose","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Agent that uses tools","icon":"LangChain","base_classes":["AgentExecutor","Message"],"display_name":"Tool Calling Agent","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["AgentExecutor"],"selected":"AgentExecutor","name":"agent","display_name":"Agent","method":"build_agent","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Message"],"selected":"Message","name":"response","display_name":"Response","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","handle_parsing_errors","verbose","max_iterations","tools","llm","system_prompt","user_prompt","chat_history"],"beta":true,"edited":false,"lf_version":"1.0.17"},"id":"ToolCallingAgent-50Gcd"},"selected":false,"width":384,"height":532,"dragging":false,"positionAbsolute":{"x":2186.0530739759893,"y":612.1744804997304}},{"id":"ChatOutput-TSCup","type":"genericNode","position":{"x":2649.190603849412,"y":841.0466487848925},"data":{"type":"ChatOutput","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, MessageTextInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI, MESSAGE_SENDER_USER\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n name = \"ChatOutput\"\n\n inputs = [\n MessageTextInput(\n name=\"input_value\",\n display_name=\"Text\",\n info=\"Message to be passed as output.\",\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_AI,\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_AI,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if (\n self.session_id\n and isinstance(message, Message)\n and isinstance(message.text, str)\n and self.should_store_message\n ):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"data_template":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"data_template","value":"{text}","display_name":"Data Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Text","advanced":false,"input_types":["Message"],"dynamic":false,"info":"Message to be passed as output.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"sender":{"trace_as_metadata":true,"options":["Machine","User"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sender","value":"Machine","display_name":"Sender Type","advanced":true,"dynamic":false,"info":"Type of sender.","title_case":false,"type":"str","_input_type":"DropdownInput"},"sender_name":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sender_name","value":"AI","display_name":"Sender Name","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Name of the sender.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"session_id":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"session_id","value":"","display_name":"Session ID","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The session ID of the chat. If empty, the current session ID parameter will be used.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"should_store_message":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"should_store_message","value":true,"display_name":"Store Messages","advanced":true,"dynamic":false,"info":"Store the message in the history.","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Display a chat message in the Playground.","icon":"ChatOutput","base_classes":["Message"],"display_name":"Chat Output","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"message","display_name":"Message","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","should_store_message","sender","sender_name","session_id","data_template"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ChatOutput-TSCup"},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":2649.190603849412,"y":841.0466487848925},"dragging":false},{"id":"ChatInput-bcq6D","type":"genericNode","position":{"x":557.6262725075026,"y":724.8518930903978},"data":{"type":"ChatInput","node":{"template":{"_type":"Component","files":{"trace_as_metadata":true,"file_path":"","fileTypes":["txt","md","mdx","csv","json","yaml","yml","xml","html","htm","pdf","docx","py","sh","sql","js","ts","tsx","jpg","jpeg","png","bmp","image"],"list":true,"required":false,"placeholder":"","show":true,"name":"files","value":"","display_name":"Files","advanced":true,"dynamic":false,"info":"Files to be sent with the message.","title_case":false,"type":"file","_input_type":"FileInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES\nfrom langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, FileInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, MESSAGE_SENDER_NAME_USER\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n icon = \"ChatInput\"\n name = \"ChatInput\"\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Text\",\n value=\"\",\n info=\"Message to be passed as input.\",\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_USER,\n info=\"Type of sender.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_USER,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n FileInput(\n name=\"files\",\n display_name=\"Files\",\n file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES,\n info=\"Files to be sent with the message.\",\n advanced=True,\n is_list=True,\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n files=self.files,\n )\n\n if (\n self.session_id\n and isinstance(message, Message)\n and isinstance(message.text, str)\n and self.should_store_message\n ):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"input_value":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"list users","display_name":"Text","advanced":false,"input_types":["Message"],"dynamic":false,"info":"Message to be passed as input.","title_case":false,"type":"str","_input_type":"MultilineInput"},"sender":{"trace_as_metadata":true,"options":["Machine","User"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sender","value":"User","display_name":"Sender Type","advanced":true,"dynamic":false,"info":"Type of sender.","title_case":false,"type":"str","_input_type":"DropdownInput"},"sender_name":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sender_name","value":"User","display_name":"Sender Name","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Name of the sender.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"session_id":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"session_id","value":"","display_name":"Session ID","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The session ID of the chat. If empty, the current session ID parameter will be used.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"should_store_message":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"should_store_message","value":true,"display_name":"Store Messages","advanced":true,"dynamic":false,"info":"Store the message in the history.","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Get chat inputs from the Playground.","icon":"ChatInput","base_classes":["Message"],"display_name":"Chat Input","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"message","display_name":"Message","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","should_store_message","sender","sender_name","session_id","files"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ChatInput-bcq6D"},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":557.6262725075026,"y":724.8518930903978},"dragging":false},{"id":"ToolkitComponent-2lNG0","type":"genericNode","position":{"x":1731.8884789245508,"y":1378.7846304343796},"data":{"type":"ToolkitComponent","node":{"template":{"_type":"Component","tools":{"trace_as_metadata":true,"list":true,"required":false,"placeholder":"","show":true,"name":"tools","value":"","display_name":"Tools","advanced":false,"input_types":["Tool"],"dynamic":false,"info":"List of tools to combine.","title_case":false,"type":"other","_input_type":"HandleInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from typing import List\r\nfrom langflow.custom import Component\r\nfrom langflow.inputs import HandleInput, MessageTextInput\r\nfrom langflow.template import Output\r\nfrom langflow.field_typing import Tool, Embeddings\r\nfrom langchain.tools.base import BaseTool, StructuredTool\r\nfrom langflow.schema import Data\r\n\r\nclass ToolkitComponent(Component):\r\n display_name = \"Toolkit\"\r\n description = \"Combines multiple tools into a single list of tools.\"\r\n icon = \"pocket-knife\"\r\n\r\n inputs = [\r\n HandleInput(\r\n name=\"tools\",\r\n display_name=\"Tools\",\r\n input_types=[\"Tool\"],\r\n info=\"List of tools to combine.\",\r\n is_list=True,\r\n ),\r\n ]\r\n\r\n outputs = [\r\n Output(display_name=\"Tools\", name=\"generated_tools\", method=\"generate_toolkit\"),\r\n Output(display_name=\"Tool Data\", name=\"tool_data\", method=\"generate_tool_data\"),\r\n ]\r\n\r\n def generate_toolkit(self) -> List[BaseTool]:\r\n combined_tools = []\r\n name_count = {}\r\n for index, tool in enumerate(self.tools):\r\n self.log(f\"Processing tool {index}: {type(tool)}\")\r\n if isinstance(tool, (BaseTool, StructuredTool)):\r\n processed_tool = tool\r\n elif hasattr(tool, 'build_tool'):\r\n processed_tool = tool.build_tool()\r\n else:\r\n self.log(f\"Unsupported tool type: {type(tool)}. Attempting to process anyway.\")\r\n processed_tool = tool\r\n\r\n original_name = getattr(processed_tool, 'name', f\"UnnamedTool_{index}\")\r\n self.log(f\"Original tool name: {original_name}\")\r\n\r\n if original_name not in name_count:\r\n name_count[original_name] = 0\r\n final_name = original_name\r\n else:\r\n name_count[original_name] += 1\r\n final_name = f\"{original_name}_{name_count[original_name]}\"\r\n\r\n if hasattr(processed_tool, 'name'):\r\n processed_tool.name = final_name\r\n\r\n self.log(f\"Final tool name: {final_name}\")\r\n\r\n if isinstance(processed_tool, StructuredTool) and hasattr(processed_tool, 'args_schema'):\r\n processed_tool.args_schema.name = f\"{final_name}_Schema\"\r\n\r\n combined_tools.append(processed_tool)\r\n\r\n debug_info = \"\\n\".join([f\"Tool {i}: {getattr(tool, 'name', f'UnnamedTool_{i}')} (Original: {getattr(tool, '_original_name', 'N/A')}) - Type: {type(tool)}\" for i, tool in enumerate(combined_tools)])\r\n self.log(\"Final toolkit composition:\")\r\n self.log(debug_info)\r\n\r\n\r\n self.status = combined_tools\r\n return combined_tools\r\n\r\n def generate_tool_data(self) -> List[Data]:\r\n tool_data = []\r\n for tool in self.generate_toolkit():\r\n tool_data.append(Data(\r\n data={\r\n \"name\": getattr(tool, 'name', 'Unnamed Tool'),\r\n \"description\": getattr(tool, 'description', 'No description available')\r\n }\r\n ))\r\n return tool_data","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false}},"description":"Combines multiple tools into a single list of tools.","icon":"pocket-knife","base_classes":["BaseTool","Data"],"display_name":"Toolkit","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["BaseTool"],"selected":"BaseTool","name":"generated_tools","display_name":"Tools","method":"generate_toolkit","value":"__UNDEFINED__","cache":true},{"types":["Data"],"selected":"Data","name":"tool_data","display_name":"Tool Data","method":"generate_tool_data","value":"__UNDEFINED__","cache":true,"hidden":true}],"field_order":["tools"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"ToolkitComponent-2lNG0"},"selected":false,"width":384,"height":292,"dragging":false,"positionAbsolute":{"x":1731.8884789245508,"y":1378.7846304343796}},{"id":"OpenAIModel-BJWIg","type":"genericNode","position":{"x":1718.9773974162958,"y":603.4642741725065},"data":{"type":"OpenAIModel","node":{"template":{"_type":"Component","api_key":{"load_from_db":true,"required":false,"placeholder":"","show":true,"name":"api_key","value":"","display_name":"OpenAI API Key","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The OpenAI API Key to use for the OpenAI model.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import operator\nfrom functools import reduce\n\nfrom langflow.field_typing.range_spec import RangeSpec\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.base.models.openai_constants import OPENAI_MODEL_NAMES\nfrom langflow.field_typing import LanguageModel\nfrom langflow.inputs import (\n BoolInput,\n DictInput,\n DropdownInput,\n FloatInput,\n IntInput,\n SecretStrInput,\n StrInput,\n)\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n name = \"OpenAIModel\"\n\n inputs = LCModelComponent._base_inputs + [\n IntInput(\n name=\"max_tokens\",\n display_name=\"Max Tokens\",\n advanced=True,\n info=\"The maximum number of tokens to generate. Set to 0 for unlimited tokens.\",\n range_spec=RangeSpec(min=0, max=128000),\n ),\n DictInput(name=\"model_kwargs\", display_name=\"Model Kwargs\", advanced=True),\n BoolInput(\n name=\"json_mode\",\n display_name=\"JSON Mode\",\n advanced=True,\n info=\"If True, it will output JSON regardless of passing a schema.\",\n ),\n DictInput(\n name=\"output_schema\",\n is_list=True,\n display_name=\"Schema\",\n advanced=True,\n info=\"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.\",\n ),\n DropdownInput(\n name=\"model_name\",\n display_name=\"Model Name\",\n advanced=False,\n options=OPENAI_MODEL_NAMES,\n value=OPENAI_MODEL_NAMES[0],\n ),\n StrInput(\n name=\"openai_api_base\",\n display_name=\"OpenAI API Base\",\n advanced=True,\n info=\"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.\",\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"The OpenAI API Key to use for the OpenAI model.\",\n advanced=False,\n value=\"OPENAI_API_KEY\",\n ),\n FloatInput(name=\"temperature\", display_name=\"Temperature\", value=0.1),\n IntInput(\n name=\"seed\",\n display_name=\"Seed\",\n info=\"The seed controls the reproducibility of the job.\",\n advanced=True,\n value=1,\n ),\n ]\n\n def build_model(self) -> LanguageModel: # type: ignore[type-var]\n # self.output_schema is a list of dictionaries\n # let's convert it to a dictionary\n output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})\n openai_api_key = self.api_key\n temperature = self.temperature\n model_name: str = self.model_name\n max_tokens = self.max_tokens\n model_kwargs = self.model_kwargs or {}\n openai_api_base = self.openai_api_base or \"https://api.openai.com/v1\"\n json_mode = bool(output_schema_dict) or self.json_mode\n seed = self.seed\n\n if openai_api_key:\n api_key = SecretStr(openai_api_key)\n else:\n api_key = None\n output = ChatOpenAI(\n max_tokens=max_tokens or None,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=api_key,\n temperature=temperature if temperature is not None else 0.1,\n seed=seed,\n )\n if json_mode:\n if output_schema_dict:\n output = output.with_structured_output(schema=output_schema_dict, method=\"json_mode\") # type: ignore\n else:\n output = output.bind(response_format={\"type\": \"json_object\"}) # type: ignore\n\n return output # type: ignore\n\n def _get_exception_message(self, e: Exception):\n \"\"\"\n Get a message from an OpenAI exception.\n\n Args:\n exception (Exception): The exception to get the message from.\n\n Returns:\n str: The message from the exception.\n \"\"\"\n\n try:\n from openai import BadRequestError\n except ImportError:\n return\n if isinstance(e, BadRequestError):\n message = e.body.get(\"message\") # type: ignore\n if message:\n return message\n return\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Input","advanced":true,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageInput"},"json_mode":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"json_mode","value":false,"display_name":"JSON Mode","advanced":true,"dynamic":false,"info":"If True, it will output JSON regardless of passing a schema.","title_case":false,"type":"bool","_input_type":"BoolInput"},"max_tokens":{"trace_as_metadata":true,"range_spec":{"step_type":"float","min":0,"max":128000,"step":0.1},"list":false,"required":false,"placeholder":"","show":true,"name":"max_tokens","value":"","display_name":"Max Tokens","advanced":true,"dynamic":false,"info":"The maximum number of tokens to generate. Set to 0 for unlimited tokens.","title_case":false,"type":"int","_input_type":"IntInput"},"model_kwargs":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"model_kwargs","value":{},"display_name":"Model Kwargs","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"dict","_input_type":"DictInput"},"model_name":{"trace_as_metadata":true,"options":["gpt-4o-mini","gpt-4o","gpt-4-turbo","gpt-4-turbo-preview","gpt-4","gpt-3.5-turbo","gpt-3.5-turbo-0125"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"model_name","value":"gpt-4o","display_name":"Model Name","advanced":false,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"DropdownInput"},"openai_api_base":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"openai_api_base","value":"","display_name":"OpenAI API Base","advanced":true,"dynamic":false,"info":"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.","title_case":false,"type":"str","_input_type":"StrInput"},"output_schema":{"trace_as_input":true,"list":true,"required":false,"placeholder":"","show":true,"name":"output_schema","value":{},"display_name":"Schema","advanced":true,"dynamic":false,"info":"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.","title_case":false,"type":"dict","_input_type":"DictInput"},"seed":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"seed","value":1,"display_name":"Seed","advanced":true,"dynamic":false,"info":"The seed controls the reproducibility of the job.","title_case":false,"type":"int","_input_type":"IntInput"},"stream":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"stream","value":false,"display_name":"Stream","advanced":true,"dynamic":false,"info":"Stream the response from the model. Streaming works only in Chat.","title_case":false,"type":"bool","_input_type":"BoolInput"},"system_message":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_message","value":"","display_name":"System Message","advanced":true,"input_types":["Message"],"dynamic":false,"info":"System message to pass to the model.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"temperature":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"temperature","value":"0.2","display_name":"Temperature","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"float","_input_type":"FloatInput"}},"description":"Generates text using OpenAI LLMs.","icon":"OpenAI","base_classes":["LanguageModel","Message"],"display_name":"OpenAI","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text_output","display_name":"Text","method":"text_response","value":"__UNDEFINED__","cache":true},{"types":["LanguageModel"],"selected":"LanguageModel","name":"model_output","display_name":"Language Model","method":"build_model","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","system_message","stream","max_tokens","model_kwargs","json_mode","output_schema","model_name","openai_api_base","api_key","temperature","seed"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"OpenAIModel-BJWIg"},"selected":false,"width":384,"height":433,"positionAbsolute":{"x":1718.9773974162958,"y":603.4642741725065},"dragging":false},{"id":"Memory-CTQWu","type":"genericNode","position":{"x":1240.7186213296432,"y":1059.5754404393747},"data":{"type":"Memory","node":{"template":{"_type":"Component","memory":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"memory","value":"","display_name":"External Memory","advanced":true,"input_types":["BaseChatMessageHistory"],"dynamic":false,"info":"Retrieve messages from an external memory. If empty, it will use the Langflow tables.","title_case":false,"type":"other","_input_type":"HandleInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langchain.memory import ConversationBufferMemory\n\nfrom langflow.custom import Component\nfrom langflow.field_typing import BaseChatMemory\nfrom langflow.helpers.data import data_to_text\nfrom langflow.inputs import HandleInput\nfrom langflow.io import DropdownInput, IntInput, MessageTextInput, MultilineInput, Output\nfrom langflow.memory import LCBuiltinChatMemory, get_messages\nfrom langflow.schema import Data\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_USER\n\n\nclass MemoryComponent(Component):\n display_name = \"Chat Memory\"\n description = \"Retrieves stored chat messages from Langflow tables or an external memory.\"\n icon = \"message-square-more\"\n name = \"Memory\"\n\n inputs = [\n HandleInput(\n name=\"memory\",\n display_name=\"External Memory\",\n input_types=[\"BaseChatMessageHistory\"],\n info=\"Retrieve messages from an external memory. If empty, it will use the Langflow tables.\",\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER, \"Machine and User\"],\n value=\"Machine and User\",\n info=\"Filter by sender type.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Filter by sender name.\",\n advanced=True,\n ),\n IntInput(\n name=\"n_messages\",\n display_name=\"Number of Messages\",\n value=100,\n info=\"Number of messages to retrieve.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"order\",\n display_name=\"Order\",\n options=[\"Ascending\", \"Descending\"],\n value=\"Ascending\",\n info=\"Order of the messages.\",\n advanced=True,\n ),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. It can contain the keys {text}, {sender} or any other key in the message data.\",\n value=\"{sender_name}: {text}\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Messages (Data)\", name=\"messages\", method=\"retrieve_messages\"),\n Output(display_name=\"Messages (Text)\", name=\"messages_text\", method=\"retrieve_messages_as_text\"),\n Output(display_name=\"Memory\", name=\"lc_memory\", method=\"build_lc_memory\"),\n ]\n\n def retrieve_messages(self) -> Data:\n sender = self.sender\n sender_name = self.sender_name\n session_id = self.session_id\n n_messages = self.n_messages\n order = \"DESC\" if self.order == \"Descending\" else \"ASC\"\n\n if sender == \"Machine and User\":\n sender = None\n\n if self.memory:\n # override session_id\n self.memory.session_id = session_id\n\n stored = self.memory.messages\n # langchain memories are supposed to return messages in ascending order\n if order == \"DESC\":\n stored = stored[::-1]\n if n_messages:\n stored = stored[:n_messages]\n stored = [Message.from_lc_message(m) for m in stored]\n if sender:\n expected_type = MESSAGE_SENDER_AI if sender == MESSAGE_SENDER_AI else MESSAGE_SENDER_USER\n stored = [m for m in stored if m.type == expected_type]\n else:\n stored = get_messages(\n sender=sender,\n sender_name=sender_name,\n session_id=session_id,\n limit=n_messages,\n order=order,\n )\n self.status = stored\n return stored\n\n def retrieve_messages_as_text(self) -> Message:\n stored_text = data_to_text(self.template, self.retrieve_messages())\n self.status = stored_text\n return Message(text=stored_text)\n\n def build_lc_memory(self) -> BaseChatMemory:\n if self.memory:\n chat_memory = self.memory\n else:\n chat_memory = LCBuiltinChatMemory(flow_id=self.flow_id, session_id=self.session_id)\n return ConversationBufferMemory(chat_memory=chat_memory)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"n_messages":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"n_messages","value":100,"display_name":"Number of Messages","advanced":true,"dynamic":false,"info":"Number of messages to retrieve.","title_case":false,"type":"int","_input_type":"IntInput"},"order":{"trace_as_metadata":true,"options":["Ascending","Descending"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"order","value":"Ascending","display_name":"Order","advanced":true,"dynamic":false,"info":"Order of the messages.","title_case":false,"type":"str","_input_type":"DropdownInput"},"sender":{"trace_as_metadata":true,"options":["Machine","User","Machine and User"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sender","value":"Machine and User","display_name":"Sender Type","advanced":true,"dynamic":false,"info":"Filter by sender type.","title_case":false,"type":"str","_input_type":"DropdownInput"},"sender_name":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sender_name","value":"","display_name":"Sender Name","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Filter by sender name.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"session_id":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"session_id","value":"","display_name":"Session ID","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The session ID of the chat. If empty, the current session ID parameter will be used.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"template":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"{sender_name}: {text}","display_name":"Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The template to use for formatting the data. It can contain the keys {text}, {sender} or any other key in the message data.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Retrieves stored chat messages from Langflow tables or an external memory.","icon":"message-square-more","base_classes":["BaseChatMemory","Data","Message"],"display_name":"Chat Memory","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"messages","display_name":"Messages (Data)","method":"retrieve_messages","value":"__UNDEFINED__","cache":true},{"types":["Message"],"selected":"Message","name":"messages_text","display_name":"Messages (Text)","method":"retrieve_messages_as_text","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["BaseChatMemory"],"selected":"BaseChatMemory","name":"lc_memory","display_name":"Memory","method":"build_lc_memory","value":"__UNDEFINED__","cache":true,"hidden":true}],"field_order":["memory","sender","sender_name","n_messages","session_id","order","template"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"Memory-CTQWu"},"selected":false,"width":384,"height":244,"dragging":false,"positionAbsolute":{"x":1240.7186213296432,"y":1059.5754404393747}},{"id":"Prompt-0dWZu","type":"genericNode","position":{"x":1227.4862876736101,"y":616.3826667128244},"data":{"type":"Prompt","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.prompts.api_utils import process_prompt_template\nfrom langflow.custom import Component\nfrom langflow.inputs.inputs import DefaultPromptField\nfrom langflow.io import Output, PromptInput\nfrom langflow.schema.message import Message\nfrom langflow.template.utils import update_template_values\n\n\nclass PromptComponent(Component):\n display_name: str = \"Prompt\"\n description: str = \"Create a prompt template with dynamic variables.\"\n icon = \"prompts\"\n trace_type = \"prompt\"\n name = \"Prompt\"\n\n inputs = [\n PromptInput(name=\"template\", display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt Message\", name=\"prompt\", method=\"build_prompt\"),\n ]\n\n async def build_prompt(\n self,\n ) -> Message:\n prompt = await Message.from_template_and_variables(**self._attributes)\n self.status = prompt.text\n return prompt\n\n def _update_template(self, frontend_node: dict):\n prompt_template = frontend_node[\"template\"][\"template\"][\"value\"]\n custom_fields = frontend_node[\"custom_fields\"]\n frontend_node_template = frontend_node[\"template\"]\n _ = process_prompt_template(\n template=prompt_template,\n name=\"template\",\n custom_fields=custom_fields,\n frontend_node_template=frontend_node_template,\n )\n return frontend_node\n\n def post_code_processing(self, new_frontend_node: dict, current_frontend_node: dict):\n \"\"\"\n This function is called after the code validation is done.\n \"\"\"\n frontend_node = super().post_code_processing(new_frontend_node, current_frontend_node)\n template = frontend_node[\"template\"][\"template\"][\"value\"]\n # Kept it duplicated for backwards compatibility\n _ = process_prompt_template(\n template=template,\n name=\"template\",\n custom_fields=frontend_node[\"custom_fields\"],\n frontend_node_template=frontend_node[\"template\"],\n )\n # Now that template is updated, we need to grab any values that were set in the current_frontend_node\n # and update the frontend_node with those values\n update_template_values(new_template=frontend_node, previous_template=current_frontend_node[\"template\"])\n return frontend_node\n\n def _get_fallback_input(self, **kwargs):\n return DefaultPromptField(**kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"template":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"\nYou are a Notion Agent, an AI assistant designed to help users interact with their Notion workspace. Your role is to understand user requests, utilize the appropriate Notion tools to fulfill these requests, and communicate clearly with the user throughout the process.\n\nGeneral Guidelines:\n\n1. Carefully analyze each user request to determine which tool(s) you need to use.\n\n2. Before using any tool, ensure you have all the necessary information. If you need more details, ask the user clear and concise questions.\n\n3. When using a tool, provide a brief explanation to the user about what you're doing and why.\n\n4. After using a tool, interpret the results for the user in a clear, concise manner.\n\n5. If a task requires multiple steps, outline your plan to the user before proceeding.\n\n6. If you encounter an error or limitation, explain it to the user and suggest possible solutions or alternative approaches.\n\n7. Always maintain a helpful and professional tone in your interactions.\n\n8. Be proactive in offering suggestions or alternatives if the user's initial request can't be fulfilled exactly as stated.\n\n9. When providing information or results, focus on relevance and clarity. Summarize when necessary, but provide details when they're important.\n\n10. If a user's request is unclear or could be interpreted in multiple ways, ask for clarification before proceeding.\n\n11. After completing a task, summarize what was accomplished and suggest any relevant next steps or additional actions the user might want to take.\n\n12. If a user asks about capabilities you don't have or tools you can't access, clearly explain your limitations and suggest alternative ways to assist if possible.\n\nRemember, your primary goal is to assist the user effectively with their Notion-related tasks using the provided tools. Always strive for clarity, accuracy, and helpfulness in your interactions. Adapt your communication style to the user's level of technical understanding and familiarity with Notion.\n\nNow, you're ready to assist the user\n\nToday is: {CURRENT_DATE}\n","display_name":"Template","advanced":false,"dynamic":false,"info":"","title_case":false,"type":"prompt","_input_type":"PromptInput"},"CURRENT_DATE":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"CURRENT_DATE","display_name":"CURRENT_DATE","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"}},"description":"Create a prompt template with dynamic variables.","icon":"prompts","is_input":null,"is_output":null,"is_composition":null,"base_classes":["Message"],"name":"","display_name":"Prompt","documentation":"","custom_fields":{"template":["CURRENT_DATE"]},"output_types":[],"full_path":null,"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"prompt","hidden":null,"display_name":"Prompt Message","method":"build_prompt","value":"__UNDEFINED__","cache":true}],"field_order":["template"],"beta":false,"error":null,"edited":false,"lf_version":"1.0.17"},"id":"Prompt-0dWZu"},"selected":false,"width":384,"height":416,"positionAbsolute":{"x":1227.4862876736101,"y":616.3826667128244},"dragging":false},{"id":"CurrentDateComponent-NSNQ8","type":"genericNode","position":{"x":1092.5108512311297,"y":868.3249850335523},"data":{"type":"CurrentDateComponent","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from datetime import datetime\r\nfrom zoneinfo import ZoneInfo\r\nfrom typing import List\r\n\r\nfrom langflow.custom import Component\r\nfrom langflow.io import DropdownInput, Output\r\nfrom langflow.schema.message import Message\r\n\r\nclass CurrentDateComponent(Component):\r\n display_name = \"Current Date 🕰️\"\r\n description = \"Returns the current date and time in the selected timezone.\"\r\n icon = \"clock\"\r\n\r\n inputs = [\r\n DropdownInput(\r\n name=\"timezone\",\r\n display_name=\"Timezone\",\r\n options=[\r\n \"UTC\",\r\n \"US/Eastern\",\r\n \"US/Central\",\r\n \"US/Mountain\",\r\n \"US/Pacific\",\r\n \"Europe/London\",\r\n \"Europe/Paris\",\r\n \"Asia/Tokyo\",\r\n \"Australia/Sydney\",\r\n \"America/Sao_Paulo\",\r\n \"America/Cuiaba\",\r\n ],\r\n value=\"UTC\",\r\n info=\"Select the timezone for the current date and time.\",\r\n ),\r\n ]\r\n\r\n outputs = [\r\n Output(display_name=\"Current Date\", name=\"current_date\", method=\"get_current_date\"),\r\n ]\r\n\r\n def get_current_date(self) -> Message:\r\n try:\r\n tz = ZoneInfo(self.timezone)\r\n current_date = datetime.now(tz).strftime(\"%Y-%m-%d %H:%M:%S %Z\")\r\n result = f\"Current date and time in {self.timezone}: {current_date}\"\r\n self.status = result\r\n return Message(text=result)\r\n except Exception as e:\r\n error_message = f\"Error: {str(e)}\"\r\n self.status = error_message\r\n return Message(text=error_message)","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"timezone":{"trace_as_metadata":true,"options":["UTC","US/Eastern","US/Central","US/Mountain","US/Pacific","Europe/London","Europe/Paris","Asia/Tokyo","Australia/Sydney","America/Sao_Paulo","America/Cuiaba"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"timezone","value":"UTC","display_name":"Timezone","advanced":false,"dynamic":false,"info":"Select the timezone for the current date and time.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"Returns the current date and time in the selected timezone.","icon":"clock","base_classes":["Message"],"display_name":"Current Date","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"current_date","display_name":"Current Date","method":"get_current_date","value":"__UNDEFINED__","cache":true}],"field_order":["timezone"],"beta":false,"edited":true,"official":false,"lf_version":"1.0.17"},"id":"CurrentDateComponent-NSNQ8","showNode":false},"selected":false,"width":96,"height":96,"dragging":false,"positionAbsolute":{"x":1092.5108512311297,"y":868.3249850335523}}],"edges":[{"source":"ChatInput-bcq6D","target":"ToolCallingAgent-50Gcd","sourceHandle":"{œdataTypeœ:œChatInputœ,œidœ:œChatInput-bcq6Dœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}","targetHandle":"{œfieldNameœ:œinput_valueœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","id":"reactflow__edge-ChatInput-bcq6D{œdataTypeœ:œChatInputœ,œidœ:œChatInput-bcq6Dœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-ToolCallingAgent-50Gcd{œfieldNameœ:œinput_valueœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"input_value","id":"ToolCallingAgent-50Gcd","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"ChatInput","id":"ChatInput-bcq6D","name":"message","output_types":["Message"]}},"selected":false,"className":""},{"source":"ToolCallingAgent-50Gcd","target":"ChatOutput-TSCup","sourceHandle":"{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-50Gcdœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}","targetHandle":"{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-TSCupœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","id":"reactflow__edge-ToolCallingAgent-50Gcd{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-50Gcdœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}-ChatOutput-TSCup{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-TSCupœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"input_value","id":"ChatOutput-TSCup","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"ToolCallingAgent","id":"ToolCallingAgent-50Gcd","name":"response","output_types":["Message"]}},"selected":false,"className":""},{"source":"ToolkitComponent-2lNG0","target":"ToolCallingAgent-50Gcd","sourceHandle":"{œdataTypeœ:œToolkitComponentœ,œidœ:œToolkitComponent-2lNG0œ,œnameœ:œgenerated_toolsœ,œoutput_typesœ:[œBaseToolœ]}","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","id":"reactflow__edge-ToolkitComponent-2lNG0{œdataTypeœ:œToolkitComponentœ,œidœ:œToolkitComponent-2lNG0œ,œnameœ:œgenerated_toolsœ,œoutput_typesœ:[œBaseToolœ]}-ToolCallingAgent-50Gcd{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-50Gcd","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"ToolkitComponent","id":"ToolkitComponent-2lNG0","name":"generated_tools","output_types":["BaseTool"]}},"selected":false,"className":""},{"source":"NotionPageUpdate-6FyYd","sourceHandle":"{œdataTypeœ:œNotionPageUpdateœ,œidœ:œNotionPageUpdate-6FyYdœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionPageUpdate","id":"NotionPageUpdate-6FyYd","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionPageUpdate-6FyYd{œdataTypeœ:œNotionPageUpdateœ,œidœ:œNotionPageUpdate-6FyYdœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionPageCreator-6SCB5","sourceHandle":"{œdataTypeœ:œNotionPageCreatorœ,œidœ:œNotionPageCreator-6SCB5œ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionPageCreator","id":"NotionPageCreator-6SCB5","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionPageCreator-6SCB5{œdataTypeœ:œNotionPageCreatorœ,œidœ:œNotionPageCreator-6SCB5œ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"AddContentToPage-ZezUn","sourceHandle":"{œdataTypeœ:œAddContentToPageœ,œidœ:œAddContentToPage-ZezUnœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"AddContentToPage","id":"AddContentToPage-ZezUn","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-AddContentToPage-ZezUn{œdataTypeœ:œAddContentToPageœ,œidœ:œAddContentToPage-ZezUnœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionDatabaseProperties-aeWil","sourceHandle":"{œdataTypeœ:œNotionDatabasePropertiesœ,œidœ:œNotionDatabaseProperties-aeWilœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionDatabaseProperties","id":"NotionDatabaseProperties-aeWil","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionDatabaseProperties-aeWil{œdataTypeœ:œNotionDatabasePropertiesœ,œidœ:œNotionDatabaseProperties-aeWilœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionListPages-znA3w","sourceHandle":"{œdataTypeœ:œNotionListPagesœ,œidœ:œNotionListPages-znA3wœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionListPages","id":"NotionListPages-znA3w","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionListPages-znA3w{œdataTypeœ:œNotionListPagesœ,œidœ:œNotionListPages-znA3wœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionPageContent-SlL21","sourceHandle":"{œdataTypeœ:œNotionPageContentœ,œidœ:œNotionPageContent-SlL21œ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionPageContent","id":"NotionPageContent-SlL21","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionPageContent-SlL21{œdataTypeœ:œNotionPageContentœ,œidœ:œNotionPageContent-SlL21œ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionUserList-C3eGn","sourceHandle":"{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-C3eGnœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionUserList","id":"NotionUserList-C3eGn","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionUserList-C3eGn{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-C3eGnœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"NotionSearch-VS2mI","sourceHandle":"{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-VS2mIœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolkitComponent-2lNG0","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolkitComponent-2lNG0","inputTypes":["Tool"],"type":"other"},"sourceHandle":{"dataType":"NotionSearch","id":"NotionSearch-VS2mI","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionSearch-VS2mI{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-VS2mIœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolkitComponent-2lNG0{œfieldNameœ:œtoolsœ,œidœ:œToolkitComponent-2lNG0œ,œinputTypesœ:[œToolœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"OpenAIModel-BJWIg","sourceHandle":"{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-BJWIgœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}","target":"ToolCallingAgent-50Gcd","targetHandle":"{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"llm","id":"ToolCallingAgent-50Gcd","inputTypes":["LanguageModel"],"type":"other"},"sourceHandle":{"dataType":"OpenAIModel","id":"OpenAIModel-BJWIg","name":"model_output","output_types":["LanguageModel"]}},"id":"reactflow__edge-OpenAIModel-BJWIg{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-BJWIgœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}-ToolCallingAgent-50Gcd{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"Memory-CTQWu","sourceHandle":"{œdataTypeœ:œMemoryœ,œidœ:œMemory-CTQWuœ,œnameœ:œmessagesœ,œoutput_typesœ:[œDataœ]}","target":"ToolCallingAgent-50Gcd","targetHandle":"{œfieldNameœ:œchat_historyœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"chat_history","id":"ToolCallingAgent-50Gcd","inputTypes":["Data"],"type":"other"},"sourceHandle":{"dataType":"Memory","id":"Memory-CTQWu","name":"messages","output_types":["Data"]}},"id":"reactflow__edge-Memory-CTQWu{œdataTypeœ:œMemoryœ,œidœ:œMemory-CTQWuœ,œnameœ:œmessagesœ,œoutput_typesœ:[œDataœ]}-ToolCallingAgent-50Gcd{œfieldNameœ:œchat_historyœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","className":"","selected":false},{"source":"Prompt-0dWZu","sourceHandle":"{œdataTypeœ:œPromptœ,œidœ:œPrompt-0dWZuœ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}","target":"ToolCallingAgent-50Gcd","targetHandle":"{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"system_prompt","id":"ToolCallingAgent-50Gcd","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"Prompt","id":"Prompt-0dWZu","name":"prompt","output_types":["Message"]}},"id":"reactflow__edge-Prompt-0dWZu{œdataTypeœ:œPromptœ,œidœ:œPrompt-0dWZuœ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}-ToolCallingAgent-50Gcd{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-50Gcdœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","className":"","selected":false},{"source":"CurrentDateComponent-NSNQ8","sourceHandle":"{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-NSNQ8œ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-0dWZu","targetHandle":"{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-0dWZuœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"CURRENT_DATE","id":"Prompt-0dWZu","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"CurrentDateComponent","id":"CurrentDateComponent-NSNQ8","name":"current_date","output_types":["Message"]}},"id":"reactflow__edge-CurrentDateComponent-NSNQ8{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-NSNQ8œ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}-Prompt-0dWZu{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-0dWZuœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","className":"","selected":false}],"viewport":{"x":97.72528949998423,"y":-211.85229348429561,"zoom":0.41621432461249197}},"description":"This flow creates an AI assistant that interacts with your Notion workspace. It understands natural language requests, performs actions in Notion (like creating pages or searching for information), and provides helpful responses. To use it, simply start a conversation by asking the agent to perform a Notion-related task, and it will guide you through the process, making it easy to manage your Notion workspace through chat.","name":"Conversational Notion Agent","last_tested_version":"1.0.17","endpoint_name":null,"is_component":false} \ No newline at end of file diff --git a/docs/docs/Integrations/Notion/Meeting_Notes_Agent.json b/docs/docs/Integrations/Notion/Meeting_Notes_Agent.json new file mode 100644 index 000000000..9b46f64ee --- /dev/null +++ b/docs/docs/Integrations/Notion/Meeting_Notes_Agent.json @@ -0,0 +1 @@ +{"id":"b6de0fdb-31a2-40bf-b921-719bc0890a0e","data":{"nodes":[{"id":"TextInput-iJPEJ","type":"genericNode","position":{"x":94.43614181571661,"y":387.24602783243165},"data":{"type":"TextInput","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.io.text import TextComponent\nfrom langflow.io import MultilineInput, Output\nfrom langflow.schema.message import Message\n\n\nclass TextInputComponent(TextComponent):\n display_name = \"Text Input\"\n description = \"Get text inputs from the Playground.\"\n icon = \"type\"\n name = \"TextInput\"\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Text\",\n info=\"Text to be passed as input.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"text_response\"),\n ]\n\n def text_response(self) -> Message:\n message = Message(\n text=self.input_value,\n )\n return message\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"input_value":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"Good morning. Thanks for joining this project review meeting. We've got quite a few tasks to discuss, especially some Notion-related ones. Shall we get started?\n\nMorning, Felipe. Absolutely, let's dive in. I see we have several projects and tasks on our plate.\n\nGreat. Let's begin with the AI Content Gen project. I'm currently working on \"Montar base agente seletor de cortes.\" It's in progress, and I'm aiming to complete it by June 14th. Have you had a chance to look at this task, Cezar?\n\nI haven't been directly involved with that one. Can you give me an overview of what it entails?\n\nOf course. Essentially, we're building a base agent that can intelligently select and edit content. It's part of our larger AI-driven content generation initiative. The challenge is creating an algorithm that can understand context and make smart editing decisions.\n\nInteresting. How's the progress so far?\n\nIt's coming along. I've set up the basic framework, but fine-tuning the selection criteria is proving to be more complex than initially anticipated. I might need an extra day or two beyond the June 14th deadline.\n\nUnderstood, Felipe. Keep me posted if you need any resources or if the deadline needs to be adjusted. By the way, I've been meaning to ask - have you had a chance to look into that new NLP library I mentioned last week? I think it could be useful for this project.\n\nActually, Cezar, I haven't gotten to that yet. Should we add it as a new task? Maybe \"Evaluate NLP library for content selection\"?\n\nGood idea. Let's add that to our task list with a due date of next Friday. Now, moving on to the next task in this project - \"Create Notion Task Automation.\" It's assigned to you and set for June 19th, but you haven't started it yet, right? This is where I'd like to focus our discussion today.\n\nThat's correct. So, the goal is to streamline our workflow by automating certain tasks within Notion. I'm thinking we could create scripts or use Notion's API to automatically create, assign, and update tasks based on certain triggers or schedules.\n\nThat sounds like it could save us a lot of time. What specific automations are you considering?\n\nI'm glad you asked, Cezar. I'm thinking of a few key areas:\n1. Automatic task creation based on project milestones\n2. Assigning tasks to team members based on their expertise and current workload\n3. Updating task statuses based on linked database entries\n4. Generating weekly progress reports\n5. Setting up reminders for overdue tasks\n\nThose all sound valuable. Have you looked into the technical requirements for implementing these?\n\nI've done some initial research. Notion's API seems robust enough to handle these automations. We'll likely need to use a combination of Notion's API and a server to run our scripts. I'm thinking of using Node.js for this.\n\nGood thinking. Do you foresee any challenges?\n\nThe main challenge will be ensuring our automations are flexible enough to handle different project structures and team dynamics. We'll need to build in some configurability.\n\nAgreed. Let's make sure we involve the team in defining these automations. Their input will be crucial for making this truly useful. Oh, and speaking of team input, I think we should add a task for \"Conduct team survey on Notion pain points.\" This could help us prioritize which automations to tackle first.\n\nThat's an excellent idea, Cezar. I'll create that task and aim to complete the survey by next Wednesday. Now, I see we have another Notion-related task: \"Subir Notion Agent no Langflow Prod.\" Can you remind me what this entails?\n\nYes, this task is about deploying our Notion integration agent to the Langflow production environment. It's not started yet, but it's a crucial step in making our Notion automations available to the whole team.\n\nI see. What's the timeline for this?\n\nWe haven't set a specific deadline yet, but I think we should aim to complete this shortly after the automation task. Let's tentatively say by the end of June?\n\nSounds reasonable. Make sure to coordinate with the DevOps team for a smooth deployment. And while we're on the topic of deployment, we should probably add a task for \"Create documentation for Notion Agent usage.\" We want to make sure the team knows how to use these new tools once they're available.\n\nYou're right, Felipe. I'll add that to our task list. Now, switching gears a bit, let's talk about the Internal Projects. I see you're working on \"Crypto Links\" - it's in progress.\n\nAh yes, our blockchain initiative. It's moving forward. I'm researching various blockchain platforms and their potential applications for our projects. I'm particularly interested in smart contract capabilities.\n\nInteresting. Keep me updated on any promising findings. By the way, have you considered reaching out to any blockchain experts for consultation? It might be worth adding a task for \"Schedule blockchain expert consultation.\"\n\nThat's a great suggestion, Cezar. I'll add it to my to-do list. Now, for the Internal Tasks, I see you're assigned to \"Revisar modos do Charlinho, preparar para open source.\" What's the status on that?\n\nI haven't started yet, but it's on my radar. The deadline is June 7th, so I'll be diving into it this week. Essentially, we need to review and refine Charlinho's modes before we open-source the project.\n\nSounds good. Let me know if you need any assistance with that. Oh, and don't forget we need to add a task for \"Prepare Charlinho documentation for open source.\" We want to make sure our project is well-documented when we release it.\n\nYou're right, Felipe. I'll make sure to include that in our task list. Now, I see you have several tasks assigned to you in the Internal Tasks section. Can you give me a quick rundown?\n\nOf course. I'm working on finding a freelancer to create flows in ComfyUI - that's in progress and due May 28th. I'm also handling the conception of the Agent UI, due May 30th. Both are moving along well.\n\nThere's also a task to \"Check, install and test Gladia to use a bot in Google Meet.\" That's in progress, and I'm collaborating with C on it.\n\nThat's quite a workload. How are you managing all these tasks?\n\nIt's challenging, but I'm prioritizing based on deadlines and dependencies. The Notion automation project is a high priority because it'll help us manage tasks more efficiently in the long run.\n\nGood strategy, Felipe. Is there anything you need from me or the team to help move these tasks forward?\n\nActually, yes. For the \"pegar os arquivos necessários para tentarmos montar um stinger com ffmpeg\" task, I could use some input on which files are critical for this. It's a low-priority task due June 2nd, but any insights would be helpful.\n\nI'll review our asset library and send you a list of potential files by tomorrow. Oh, and let's add a task for \"Create ffmpeg stinger tutorial\" once we figure out the process. It could be useful for the team in the future.\n\nGreat idea, Cezar. I'll add that to our backlog. Anything else we should discuss?\n\nI think we've covered the major points. Oh, one last thing - for the \"Create Notion Task Automation\" project, I was thinking of setting up a series of short daily meetings next week to keep everyone aligned. What do you think?\n\nThat's a good idea. Maybe 15-minute stand-ups? We can use those to address any roadblocks quickly. And let's add a task for \"Set up Notion Automation progress tracking board\" to help visualize our progress during these stand-ups.\n\nPerfect. I'll send out calendar invites this afternoon and create that tracking board task. Any final thoughts or concerns, Cezar?\n\nNot from my side. I think we have a clear path forward, especially with the Notion-related tasks and the new items we've added to our list.\n\nAgreed. Let's plan to reconvene next week to check on progress, particularly for the Notion automation project and these new tasks we've discussed. Thanks for the comprehensive update, Felipe.\n\nThank you, Cezar. I'll send out a summary of our discussion and action items shortly, including all the new tasks we've identified during this meeting.\n","display_name":"Text","advanced":false,"input_types":["Message"],"dynamic":false,"info":"Text to be passed as input.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Get text inputs from the Playground.","icon":"type","base_classes":["Message"],"display_name":"Meeting Transcript","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text","display_name":"Text","method":"text_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"TextInput-iJPEJ"},"selected":false,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":94.43614181571661,"y":387.24602783243165}},{"id":"NotionUserList-TvIKS","type":"genericNode","position":{"x":80.49204196902156,"y":741.0568511678105},"data":{"type":"NotionUserList","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import List, Dict\nfrom pydantic import BaseModel\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionUserList(LCToolComponent):\n display_name = \"List Users \"\n description = \"Retrieve users from Notion.\"\n documentation = \"https://docs.langflow.org/integrations/notion/list-users\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionUserListSchema(BaseModel):\n pass\n\n def run_model(self) -> List[Data]:\n users = self._list_users()\n records = []\n combined_text = \"\"\n\n for user in users:\n output = \"User:\\n\"\n for key, value in user.items():\n output += f\"{key.replace('_', ' ').title()}: {value}\\n\"\n output += \"________________________\\n\"\n\n combined_text += output\n records.append(Data(text=output, data=user))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_list_users\",\n description=\"Retrieve users from Notion.\",\n func=self._list_users,\n args_schema=self.NotionUserListSchema,\n )\n\n def _list_users(self) -> List[Dict]:\n url = \"https://api.notion.com/v1/users\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n response = requests.get(url, headers=headers)\n response.raise_for_status()\n\n data = response.json()\n results = data[\"results\"]\n\n users = []\n for user in results:\n user_data = {\n \"id\": user[\"id\"],\n \"type\": user[\"type\"],\n \"name\": user.get(\"name\", \"\"),\n \"avatar_url\": user.get(\"avatar_url\", \"\"),\n }\n users.append(user_data)\n\n return users\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Retrieve users from Notion.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Users ","documentation":"https://docs.langflow.org/integrations/notion/list-users","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true,"hidden":true}],"field_order":["notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionUserList-TvIKS","description":"Retrieve users from Notion.","display_name":"List Users "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":80.49204196902156,"y":741.0568511678105},"dragging":false},{"id":"NotionSearch-M66HF","type":"genericNode","position":{"x":1095.6934863134345,"y":407.8718765800806},"data":{"type":"NotionSearch","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import Dict, Any, List\nfrom pydantic import BaseModel, Field\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, DropdownInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionSearch(LCToolComponent):\n display_name: str = \"Search \"\n description: str = \"Searches all pages and databases that have been shared with an integration. The search field can be an empty value to show all values from that search\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/search\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n StrInput(\n name=\"query\",\n display_name=\"Search Query\",\n info=\"The text that the API compares page and database titles against.\",\n ),\n DropdownInput(\n name=\"filter_value\",\n display_name=\"Filter Type\",\n info=\"Limits the results to either only pages or only databases.\",\n options=[\"page\", \"database\"],\n value=\"page\",\n ),\n DropdownInput(\n name=\"sort_direction\",\n display_name=\"Sort Direction\",\n info=\"The direction to sort the results.\",\n options=[\"ascending\", \"descending\"],\n value=\"descending\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionSearchSchema(BaseModel):\n query: str = Field(..., description=\"The search query text.\")\n filter_value: str = Field(default=\"page\", description=\"Filter type: 'page' or 'database'.\")\n sort_direction: str = Field(default=\"descending\", description=\"Sort direction: 'ascending' or 'descending'.\")\n\n def run_model(self) -> List[Data]:\n results = self._search_notion(self.query, self.filter_value, self.sort_direction)\n records = []\n combined_text = f\"Results found: {len(results)}\\n\\n\"\n\n for result in results:\n result_data = {\n \"id\": result[\"id\"],\n \"type\": result[\"object\"],\n \"last_edited_time\": result[\"last_edited_time\"],\n }\n\n if result[\"object\"] == \"page\":\n result_data[\"title_or_url\"] = result[\"url\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['url']}\\n\"\n elif result[\"object\"] == \"database\":\n if \"title\" in result and isinstance(result[\"title\"], list) and len(result[\"title\"]) > 0:\n result_data[\"title_or_url\"] = result[\"title\"][0][\"plain_text\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['title'][0]['plain_text']}\\n\"\n else:\n result_data[\"title_or_url\"] = \"N/A\"\n text = f\"id: {result['id']}\\ntitle_or_url: N/A\\n\"\n\n text += f\"type: {result['object']}\\nlast_edited_time: {result['last_edited_time']}\\n\\n\"\n combined_text += text\n records.append(Data(text=text, data=result_data))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_search\",\n description=\"Search Notion pages and databases. Input should include the search query and optionally filter type and sort direction.\",\n func=self._search_notion,\n args_schema=self.NotionSearchSchema,\n )\n\n def _search_notion(\n self, query: str, filter_value: str = \"page\", sort_direction: str = \"descending\"\n ) -> List[Dict[str, Any]]:\n url = \"https://api.notion.com/v1/search\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"query\": query,\n \"filter\": {\"value\": filter_value, \"property\": \"object\"},\n \"sort\": {\"direction\": sort_direction, \"timestamp\": \"last_edited_time\"},\n }\n\n response = requests.post(url, headers=headers, json=data)\n response.raise_for_status()\n\n results = response.json()\n return results[\"results\"]\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"filter_value":{"trace_as_metadata":true,"options":["page","database"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"filter_value","value":"database","display_name":"Filter Type","advanced":true,"dynamic":false,"info":"Limits the results to either only pages or only databases.","title_case":false,"type":"str","_input_type":"DropdownInput"},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"query":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"query","value":"","display_name":"Search Query","advanced":true,"dynamic":false,"info":"The text that the API compares page and database titles against.","title_case":false,"type":"str","_input_type":"StrInput"},"sort_direction":{"trace_as_metadata":true,"options":["ascending","descending"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sort_direction","value":"descending","display_name":"Sort Direction","advanced":true,"dynamic":false,"info":"The direction to sort the results.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"Searches all pages and databases that have been shared with an integration. The search field can be an empty value to show all values from that search","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Search ","documentation":"https://docs.langflow.org/integrations/notion/search","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true,"hidden":false}],"field_order":["notion_secret","query","filter_value","sort_direction"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionSearch-M66HF","description":"Searches all pages and databases that have been shared with an integration.","display_name":"Search "},"selected":false,"width":384,"height":386,"positionAbsolute":{"x":1095.6934863134345,"y":407.8718765800806},"dragging":false},{"id":"Prompt-19rub","type":"genericNode","position":{"x":688.7954025956392,"y":456.4686463487848},"data":{"type":"Prompt","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.prompts.api_utils import process_prompt_template\nfrom langflow.custom import Component\nfrom langflow.inputs.inputs import DefaultPromptField\nfrom langflow.io import Output, PromptInput\nfrom langflow.schema.message import Message\nfrom langflow.template.utils import update_template_values\n\n\nclass PromptComponent(Component):\n display_name: str = \"Prompt\"\n description: str = \"Create a prompt template with dynamic variables.\"\n icon = \"prompts\"\n trace_type = \"prompt\"\n name = \"Prompt\"\n\n inputs = [\n PromptInput(name=\"template\", display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt Message\", name=\"prompt\", method=\"build_prompt\"),\n ]\n\n async def build_prompt(\n self,\n ) -> Message:\n prompt = await Message.from_template_and_variables(**self._attributes)\n self.status = prompt.text\n return prompt\n\n def _update_template(self, frontend_node: dict):\n prompt_template = frontend_node[\"template\"][\"template\"][\"value\"]\n custom_fields = frontend_node[\"custom_fields\"]\n frontend_node_template = frontend_node[\"template\"]\n _ = process_prompt_template(\n template=prompt_template,\n name=\"template\",\n custom_fields=custom_fields,\n frontend_node_template=frontend_node_template,\n )\n return frontend_node\n\n def post_code_processing(self, new_frontend_node: dict, current_frontend_node: dict):\n \"\"\"\n This function is called after the code validation is done.\n \"\"\"\n frontend_node = super().post_code_processing(new_frontend_node, current_frontend_node)\n template = frontend_node[\"template\"][\"template\"][\"value\"]\n # Kept it duplicated for backwards compatibility\n _ = process_prompt_template(\n template=template,\n name=\"template\",\n custom_fields=frontend_node[\"custom_fields\"],\n frontend_node_template=frontend_node[\"template\"],\n )\n # Now that template is updated, we need to grab any values that were set in the current_frontend_node\n # and update the frontend_node with those values\n update_template_values(new_template=frontend_node, previous_template=current_frontend_node[\"template\"])\n return frontend_node\n\n def _get_fallback_input(self, **kwargs):\n return DefaultPromptField(**kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"template":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"\nYou are an AI assistant specialized in analyzing meeting transcripts and identifying tasks. Your goal is to extract relevant tasks from the given transcript, search for related existing tasks in Notion, and provide a comprehensive list of tasks with their current status and any needed updates.\n\nYou have access to the following input:\n\n\n{TRANSCRIPT}\n\n\n\n{USERS}\n\n\nFollow these steps to complete your task:\n\n1. Carefully read through the transcript and identify any mentioned tasks, action items, or follow-ups.\n\n2. For each identified task:\n a. Use the notion_search tool to find if there's an existing related task in Notion.\n b. If a related task is found, note its ID and current status.\n c. If no related task is found, mark it as a new task.\n\n3. For each task (existing or new), determine:\n a. The task name or description\n b. The assigned person (if mentioned)\n c. The current status (for existing tasks) or suggested status (for new tasks)\n d. Any updates or changes mentioned in the transcript\n\n4. Compile your findings into a list of tasks using the following format:\n\n\n\n[Notion page ID if existing, or \"NEW\" if new task]\n[Task name or description]\n[Assigned person, if mentioned]\n[Current status for existing tasks, or suggested status for new tasks]\n[Any updates or changes mentioned in the transcript]\n\n\n\nRemember to focus on tasks that are directly related to the meeting discussion. Do not include general conversation topics or unrelated mentions as tasks.\n\nProvide your final output in the format specified above, with each task enclosed in its own tags within the overall structure.\n\nToday is: {CURRENT_DATE}\n\n\n\n","display_name":"Template","advanced":false,"dynamic":false,"info":"","title_case":false,"type":"prompt","_input_type":"PromptInput"},"TRANSCRIPT":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"TRANSCRIPT","display_name":"TRANSCRIPT","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"},"USERS":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"USERS","display_name":"USERS","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"},"CURRENT_DATE":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"CURRENT_DATE","display_name":"CURRENT_DATE","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"}},"description":"Create a prompt template with dynamic variables.","icon":"prompts","is_input":null,"is_output":null,"is_composition":null,"base_classes":["Message"],"name":"","display_name":"Prompt","documentation":"","custom_fields":{"template":["TRANSCRIPT","USERS","CURRENT_DATE"]},"output_types":[],"full_path":null,"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"prompt","hidden":null,"display_name":"Prompt Message","method":"build_prompt","value":"__UNDEFINED__","cache":true}],"field_order":["template"],"beta":false,"error":null,"edited":false,"lf_version":"1.0.17"},"id":"Prompt-19rub"},"selected":false,"width":384,"height":588,"positionAbsolute":{"x":688.7954025956392,"y":456.4686463487848},"dragging":false},{"id":"ParseData-aNk1v","type":"genericNode","position":{"x":540.4151030255898,"y":834.2819856588019},"data":{"type":"ParseData","node":{"template":{"_type":"Component","data":{"trace_as_metadata":true,"list":false,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"data","value":"","display_name":"Data","advanced":false,"input_types":["Data"],"dynamic":false,"info":"The data to convert to text.","title_case":false,"type":"other","_input_type":"DataInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.io import DataInput, MultilineInput, Output, StrInput\nfrom langflow.schema.message import Message\n\n\nclass ParseDataComponent(Component):\n display_name = \"Parse Data\"\n description = \"Convert Data into plain text following a specified template.\"\n icon = \"braces\"\n name = \"ParseData\"\n\n inputs = [\n DataInput(name=\"data\", display_name=\"Data\", info=\"The data to convert to text.\"),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.\",\n value=\"{text}\",\n ),\n StrInput(name=\"sep\", display_name=\"Separator\", advanced=True, value=\"\\n\"),\n ]\n\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"parse_data\"),\n ]\n\n def parse_data(self) -> Message:\n data = self.data if isinstance(self.data, list) else [self.data]\n template = self.template\n\n result_string = data_to_text(template, data, sep=self.sep)\n self.status = result_string\n return Message(text=result_string)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"sep":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sep","value":"\n","display_name":"Separator","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"StrInput"},"template":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"{text}","display_name":"Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Convert Data into plain text following a specified template.","icon":"braces","base_classes":["Message"],"display_name":"Parse Data","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text","display_name":"Text","method":"parse_data","value":"__UNDEFINED__","cache":true}],"field_order":["data","template","sep"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ParseData-aNk1v","showNode":false},"selected":false,"width":96,"height":96,"dragging":false,"positionAbsolute":{"x":540.4151030255898,"y":834.2819856588019}},{"id":"ToolCallingAgent-rVWeq","type":"genericNode","position":{"x":1566.291217492157,"y":583.6687094567968},"data":{"type":"ToolCallingAgent","node":{"template":{"_type":"Component","chat_history":{"trace_as_metadata":true,"list":true,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"chat_history","value":"","display_name":"Chat History","advanced":true,"input_types":["Data"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"DataInput"},"llm":{"trace_as_metadata":true,"list":false,"required":true,"placeholder":"","show":true,"name":"llm","value":"","display_name":"Language Model","advanced":false,"input_types":["LanguageModel"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"tools":{"trace_as_metadata":true,"list":true,"required":false,"placeholder":"","show":true,"name":"tools","value":"","display_name":"Tools","advanced":false,"input_types":["Tool","BaseTool"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from typing import Optional, List\n\nfrom langchain.agents import create_tool_calling_agent\nfrom langchain_core.prompts import ChatPromptTemplate, PromptTemplate, HumanMessagePromptTemplate\nfrom langflow.base.agents.agent import LCToolsAgentComponent\nfrom langflow.inputs import MultilineInput\nfrom langflow.inputs.inputs import HandleInput, DataInput\nfrom langflow.schema import Data\n\n\nclass ToolCallingAgentComponent(LCToolsAgentComponent):\n display_name: str = \"Tool Calling Agent\"\n description: str = \"Agent that uses tools\"\n icon = \"LangChain\"\n beta = True\n name = \"ToolCallingAgent\"\n\n inputs = LCToolsAgentComponent._base_inputs + [\n HandleInput(name=\"llm\", display_name=\"Language Model\", input_types=[\"LanguageModel\"], required=True),\n MultilineInput(\n name=\"system_prompt\",\n display_name=\"System Prompt\",\n info=\"System prompt for the agent.\",\n value=\"You are a helpful assistant\",\n ),\n MultilineInput(\n name=\"user_prompt\", display_name=\"Prompt\", info=\"This prompt must contain 'input' key.\", value=\"{input}\"\n ),\n DataInput(name=\"chat_history\", display_name=\"Chat History\", is_list=True, advanced=True),\n ]\n\n def get_chat_history_data(self) -> Optional[List[Data]]:\n return self.chat_history\n\n def create_agent_runnable(self):\n if \"input\" not in self.user_prompt:\n raise ValueError(\"Prompt must contain 'input' key.\")\n messages = [\n (\"system\", self.system_prompt),\n (\"placeholder\", \"{chat_history}\"),\n HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=[\"input\"], template=self.user_prompt)),\n (\"placeholder\", \"{agent_scratchpad}\"),\n ]\n prompt = ChatPromptTemplate.from_messages(messages)\n return create_tool_calling_agent(self.llm, self.tools, prompt)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"handle_parsing_errors":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"handle_parsing_errors","value":true,"display_name":"Handle Parse Errors","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"Analyze this meeting","display_name":"Input","advanced":true,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageTextInput"},"max_iterations":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"max_iterations","value":15,"display_name":"Max Iterations","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"int","_input_type":"IntInput"},"system_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_prompt","value":"","display_name":"System Prompt","advanced":false,"input_types":["Message"],"dynamic":false,"info":"System prompt for the agent.","title_case":false,"type":"str","_input_type":"MultilineInput"},"user_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"user_prompt","value":"{input}","display_name":"Prompt","advanced":true,"input_types":["Message"],"dynamic":false,"info":"This prompt must contain 'input' key.","title_case":false,"type":"str","_input_type":"MultilineInput"},"verbose":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"verbose","value":true,"display_name":"Verbose","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Agent that uses tools","icon":"LangChain","base_classes":["AgentExecutor","Message"],"display_name":"Tool Calling Agent","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["AgentExecutor"],"selected":"AgentExecutor","name":"agent","display_name":"Agent","method":"build_agent","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Message"],"selected":"Message","name":"response","display_name":"Response","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","handle_parsing_errors","verbose","max_iterations","tools","llm","system_prompt","user_prompt","chat_history"],"beta":true,"edited":false,"lf_version":"1.0.17"},"id":"ToolCallingAgent-rVWeq"},"selected":false,"width":384,"height":398,"positionAbsolute":{"x":1566.291217492157,"y":583.6687094567968},"dragging":false},{"id":"OpenAIModel-Ht8xI","type":"genericNode","position":{"x":1097.0545781920632,"y":805.60631548423},"data":{"type":"OpenAIModel","node":{"template":{"_type":"Component","api_key":{"load_from_db":false,"required":false,"placeholder":"","show":true,"name":"api_key","value":"","display_name":"OpenAI API Key","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The OpenAI API Key to use for the OpenAI model.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import operator\nfrom functools import reduce\n\nfrom langflow.field_typing.range_spec import RangeSpec\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.base.models.openai_constants import OPENAI_MODEL_NAMES\nfrom langflow.field_typing import LanguageModel\nfrom langflow.inputs import (\n BoolInput,\n DictInput,\n DropdownInput,\n FloatInput,\n IntInput,\n SecretStrInput,\n StrInput,\n)\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n name = \"OpenAIModel\"\n\n inputs = LCModelComponent._base_inputs + [\n IntInput(\n name=\"max_tokens\",\n display_name=\"Max Tokens\",\n advanced=True,\n info=\"The maximum number of tokens to generate. Set to 0 for unlimited tokens.\",\n range_spec=RangeSpec(min=0, max=128000),\n ),\n DictInput(name=\"model_kwargs\", display_name=\"Model Kwargs\", advanced=True),\n BoolInput(\n name=\"json_mode\",\n display_name=\"JSON Mode\",\n advanced=True,\n info=\"If True, it will output JSON regardless of passing a schema.\",\n ),\n DictInput(\n name=\"output_schema\",\n is_list=True,\n display_name=\"Schema\",\n advanced=True,\n info=\"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.\",\n ),\n DropdownInput(\n name=\"model_name\",\n display_name=\"Model Name\",\n advanced=False,\n options=OPENAI_MODEL_NAMES,\n value=OPENAI_MODEL_NAMES[0],\n ),\n StrInput(\n name=\"openai_api_base\",\n display_name=\"OpenAI API Base\",\n advanced=True,\n info=\"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.\",\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"The OpenAI API Key to use for the OpenAI model.\",\n advanced=False,\n value=\"OPENAI_API_KEY\",\n ),\n FloatInput(name=\"temperature\", display_name=\"Temperature\", value=0.1),\n IntInput(\n name=\"seed\",\n display_name=\"Seed\",\n info=\"The seed controls the reproducibility of the job.\",\n advanced=True,\n value=1,\n ),\n ]\n\n def build_model(self) -> LanguageModel: # type: ignore[type-var]\n # self.output_schema is a list of dictionaries\n # let's convert it to a dictionary\n output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})\n openai_api_key = self.api_key\n temperature = self.temperature\n model_name: str = self.model_name\n max_tokens = self.max_tokens\n model_kwargs = self.model_kwargs or {}\n openai_api_base = self.openai_api_base or \"https://api.openai.com/v1\"\n json_mode = bool(output_schema_dict) or self.json_mode\n seed = self.seed\n\n if openai_api_key:\n api_key = SecretStr(openai_api_key)\n else:\n api_key = None\n output = ChatOpenAI(\n max_tokens=max_tokens or None,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=api_key,\n temperature=temperature if temperature is not None else 0.1,\n seed=seed,\n )\n if json_mode:\n if output_schema_dict:\n output = output.with_structured_output(schema=output_schema_dict, method=\"json_mode\") # type: ignore\n else:\n output = output.bind(response_format={\"type\": \"json_object\"}) # type: ignore\n\n return output # type: ignore\n\n def _get_exception_message(self, e: Exception):\n \"\"\"\n Get a message from an OpenAI exception.\n\n Args:\n exception (Exception): The exception to get the message from.\n\n Returns:\n str: The message from the exception.\n \"\"\"\n\n try:\n from openai import BadRequestError\n except ImportError:\n return\n if isinstance(e, BadRequestError):\n message = e.body.get(\"message\") # type: ignore\n if message:\n return message\n return\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Input","advanced":true,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageInput"},"json_mode":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"json_mode","value":false,"display_name":"JSON Mode","advanced":true,"dynamic":false,"info":"If True, it will output JSON regardless of passing a schema.","title_case":false,"type":"bool","_input_type":"BoolInput"},"max_tokens":{"trace_as_metadata":true,"range_spec":{"step_type":"float","min":0,"max":128000,"step":0.1},"list":false,"required":false,"placeholder":"","show":true,"name":"max_tokens","value":"","display_name":"Max Tokens","advanced":true,"dynamic":false,"info":"The maximum number of tokens to generate. Set to 0 for unlimited tokens.","title_case":false,"type":"int","_input_type":"IntInput"},"model_kwargs":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"model_kwargs","value":{},"display_name":"Model Kwargs","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"dict","_input_type":"DictInput"},"model_name":{"trace_as_metadata":true,"options":["gpt-4o-mini","gpt-4o","gpt-4-turbo","gpt-4-turbo-preview","gpt-4","gpt-3.5-turbo","gpt-3.5-turbo-0125"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"model_name","value":"gpt-4o","display_name":"Model Name","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"DropdownInput"},"openai_api_base":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"openai_api_base","value":"","display_name":"OpenAI API Base","advanced":true,"dynamic":false,"info":"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.","title_case":false,"type":"str","_input_type":"StrInput"},"output_schema":{"trace_as_input":true,"list":true,"required":false,"placeholder":"","show":true,"name":"output_schema","value":{},"display_name":"Schema","advanced":true,"dynamic":false,"info":"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.","title_case":false,"type":"dict","_input_type":"DictInput"},"seed":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"seed","value":1,"display_name":"Seed","advanced":true,"dynamic":false,"info":"The seed controls the reproducibility of the job.","title_case":false,"type":"int","_input_type":"IntInput"},"stream":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"stream","value":false,"display_name":"Stream","advanced":true,"dynamic":false,"info":"Stream the response from the model. Streaming works only in Chat.","title_case":false,"type":"bool","_input_type":"BoolInput"},"system_message":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_message","value":"","display_name":"System Message","advanced":true,"input_types":["Message"],"dynamic":false,"info":"System message to pass to the model.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"temperature":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"temperature","value":0.1,"display_name":"Temperature","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"float","_input_type":"FloatInput"}},"description":"Generates text using OpenAI LLMs.","icon":"OpenAI","base_classes":["LanguageModel","Message"],"display_name":"OpenAI","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text_output","display_name":"Text","method":"text_response","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["LanguageModel"],"selected":"LanguageModel","name":"model_output","display_name":"Language Model","method":"build_model","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","system_message","stream","max_tokens","model_kwargs","json_mode","output_schema","model_name","openai_api_base","api_key","temperature","seed"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"OpenAIModel-Ht8xI"},"selected":false,"width":384,"height":302,"dragging":false,"positionAbsolute":{"x":1097.0545781920632,"y":805.60631548423}},{"id":"Prompt-Lbxk6","type":"genericNode","position":{"x":3042.6844997246735,"y":416.83992118486856},"data":{"type":"Prompt","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.prompts.api_utils import process_prompt_template\nfrom langflow.custom import Component\nfrom langflow.inputs.inputs import DefaultPromptField\nfrom langflow.io import Output, PromptInput\nfrom langflow.schema.message import Message\nfrom langflow.template.utils import update_template_values\n\n\nclass PromptComponent(Component):\n display_name: str = \"Prompt\"\n description: str = \"Create a prompt template with dynamic variables.\"\n icon = \"prompts\"\n trace_type = \"prompt\"\n name = \"Prompt\"\n\n inputs = [\n PromptInput(name=\"template\", display_name=\"Template\"),\n ]\n\n outputs = [\n Output(display_name=\"Prompt Message\", name=\"prompt\", method=\"build_prompt\"),\n ]\n\n async def build_prompt(\n self,\n ) -> Message:\n prompt = await Message.from_template_and_variables(**self._attributes)\n self.status = prompt.text\n return prompt\n\n def _update_template(self, frontend_node: dict):\n prompt_template = frontend_node[\"template\"][\"template\"][\"value\"]\n custom_fields = frontend_node[\"custom_fields\"]\n frontend_node_template = frontend_node[\"template\"]\n _ = process_prompt_template(\n template=prompt_template,\n name=\"template\",\n custom_fields=custom_fields,\n frontend_node_template=frontend_node_template,\n )\n return frontend_node\n\n def post_code_processing(self, new_frontend_node: dict, current_frontend_node: dict):\n \"\"\"\n This function is called after the code validation is done.\n \"\"\"\n frontend_node = super().post_code_processing(new_frontend_node, current_frontend_node)\n template = frontend_node[\"template\"][\"template\"][\"value\"]\n # Kept it duplicated for backwards compatibility\n _ = process_prompt_template(\n template=template,\n name=\"template\",\n custom_fields=frontend_node[\"custom_fields\"],\n frontend_node_template=frontend_node[\"template\"],\n )\n # Now that template is updated, we need to grab any values that were set in the current_frontend_node\n # and update the frontend_node with those values\n update_template_values(new_template=frontend_node, previous_template=current_frontend_node[\"template\"])\n return frontend_node\n\n def _get_fallback_input(self, **kwargs):\n return DefaultPromptField(**kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"template":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"\nYou are an AI assistant responsible for updating tasks in Notion based on the information provided from a meeting analysis. Your goal is to create new tasks and update existing ones using the Notion API tools available to you, and then provide a summary in a simple markdown format suitable for a chat interface.\n\nYou have access to the following inputs:\n\n\n{TASK_LIST}\n\n\n\n{DATABASES}\n\n\n\n{USERS}\n\n\nFollow these steps to update the tasks in Notion and generate a markdown summary:\n\n1. Identify the Task database ID from the provided list.\n\n2. Before processing any tasks, retrieve the database properties for the Task database:\n a. Use the notion_database_properties and carefully review the properties, their types, and any options for select or multi-select properties.\n b. Pay attention to the properties format for further usage.\n\n3. For each task in the task list:\n a. If the task ID is \"NEW\", create a new task using the create_notion_page tool.\n b. If the task has an existing ID, update the task using the update_notion_page tool.\n c. Remember to use the properties from the DB retrieved from the notion_database_properties tool\n\n4. When creating a new task:\n a. Use the create_notion_page tool.\n b. Include the task name, assignee (if available), status, and any other relevant properties based on the database structure.\n c. Ensure that the property names and types match exactly with what you retrieved from the notion_database_properties call.\n\n5. When updating an existing task:\n a. Use the update_notion_page tool.\n b. Update the status, assignee, or any other relevant properties mentioned in the field.\n c. Ensure that the property names and types match exactly with what you retrieved from the notion_database_properties call.\n\n6. After each function call, wait for the before proceeding to the next task.\n\n7. If you encounter any errors during the process, note them and continue with the next task.\n\n8. Provide a summary of your actions for each task in a simple markdown format. Use the following structure:\n # Task Update Summary\n\n ## Created Tasks\n - **[Task Name]**: Assigned to [Assignee], Status: [Status]\n - Details: [Brief description of the new task]\n\n ## Updated Tasks\n - **[Task Name]** (ID: [Notion Page ID])\n - Changes: [Brief description of changes]\n - Status: [Success/Error]\n\n ## Errors\n - **[Task Name or ID]**: [Description of the error encountered]\n\n\nRemember to use the exact property names, types, and options as specified in the Notion database properties you retrieved at the beginning. This is crucial for ensuring that all updates and creations are done correctly.\n\nIf you encounter any errors or uncertainties, include them in the Errors section of the markdown summary. With enough detail to the user understand the issues.\n\nProvide your final output as a complete markdown document containing all the tasks you've processed, whether they were created, updated, or encountered errors. Use only basic markdown formatting (headers, bold, lists) to ensure compatibility with chat interfaces. Do not include any XML tags or complex formatting in your final output.\n\nToday is: {CURRENT_DATE}\n\n","display_name":"Template","advanced":false,"dynamic":false,"info":"","title_case":false,"type":"prompt","_input_type":"PromptInput"},"TASK_LIST":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"TASK_LIST","display_name":"TASK_LIST","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"},"DATABASES":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"DATABASES","display_name":"DATABASES","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"},"USERS":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"USERS","display_name":"USERS","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"},"CURRENT_DATE":{"field_type":"str","required":false,"placeholder":"","list":false,"show":true,"multiline":true,"value":"","fileTypes":[],"file_path":"","password":false,"name":"CURRENT_DATE","display_name":"CURRENT_DATE","advanced":false,"input_types":["Message","Text"],"dynamic":false,"info":"","load_from_db":false,"title_case":false,"type":"str"}},"description":"Create a prompt template with dynamic variables.","icon":"prompts","is_input":null,"is_output":null,"is_composition":null,"base_classes":["Message"],"name":"","display_name":"Prompt","documentation":"","custom_fields":{"template":["TASK_LIST","DATABASES","USERS","CURRENT_DATE"]},"output_types":[],"full_path":null,"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"prompt","hidden":null,"display_name":"Prompt Message","method":"build_prompt","value":"__UNDEFINED__","cache":true}],"field_order":["template"],"beta":false,"error":null,"edited":false},"id":"Prompt-Lbxk6"},"selected":false,"width":384,"height":674,"positionAbsolute":{"x":3042.6844997246735,"y":416.83992118486856},"dragging":false},{"id":"ToolCallingAgent-GurdE","type":"genericNode","position":{"x":3974.1377259893243,"y":867.4647271037014},"data":{"type":"ToolCallingAgent","node":{"template":{"_type":"Component","chat_history":{"trace_as_metadata":true,"list":true,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"chat_history","value":"","display_name":"Chat History","advanced":true,"input_types":["Data"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"DataInput"},"llm":{"trace_as_metadata":true,"list":false,"required":true,"placeholder":"","show":true,"name":"llm","value":"","display_name":"Language Model","advanced":false,"input_types":["LanguageModel"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"tools":{"trace_as_metadata":true,"list":true,"required":false,"placeholder":"","show":true,"name":"tools","value":"","display_name":"Tools","advanced":false,"input_types":["Tool","BaseTool"],"dynamic":false,"info":"","title_case":false,"type":"other","_input_type":"HandleInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from typing import Optional, List\n\nfrom langchain.agents import create_tool_calling_agent\nfrom langchain_core.prompts import ChatPromptTemplate, PromptTemplate, HumanMessagePromptTemplate\nfrom langflow.base.agents.agent import LCToolsAgentComponent\nfrom langflow.inputs import MultilineInput\nfrom langflow.inputs.inputs import HandleInput, DataInput\nfrom langflow.schema import Data\n\n\nclass ToolCallingAgentComponent(LCToolsAgentComponent):\n display_name: str = \"Tool Calling Agent\"\n description: str = \"Agent that uses tools\"\n icon = \"LangChain\"\n beta = True\n name = \"ToolCallingAgent\"\n\n inputs = LCToolsAgentComponent._base_inputs + [\n HandleInput(name=\"llm\", display_name=\"Language Model\", input_types=[\"LanguageModel\"], required=True),\n MultilineInput(\n name=\"system_prompt\",\n display_name=\"System Prompt\",\n info=\"System prompt for the agent.\",\n value=\"You are a helpful assistant\",\n ),\n MultilineInput(\n name=\"user_prompt\", display_name=\"Prompt\", info=\"This prompt must contain 'input' key.\", value=\"{input}\"\n ),\n DataInput(name=\"chat_history\", display_name=\"Chat History\", is_list=True, advanced=True),\n ]\n\n def get_chat_history_data(self) -> Optional[List[Data]]:\n return self.chat_history\n\n def create_agent_runnable(self):\n if \"input\" not in self.user_prompt:\n raise ValueError(\"Prompt must contain 'input' key.\")\n messages = [\n (\"system\", self.system_prompt),\n (\"placeholder\", \"{chat_history}\"),\n HumanMessagePromptTemplate(prompt=PromptTemplate(input_variables=[\"input\"], template=self.user_prompt)),\n (\"placeholder\", \"{agent_scratchpad}\"),\n ]\n prompt = ChatPromptTemplate.from_messages(messages)\n return create_tool_calling_agent(self.llm, self.tools, prompt)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"handle_parsing_errors":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"handle_parsing_errors","value":true,"display_name":"Handle Parse Errors","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"Do your task.","display_name":"Input","advanced":true,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageTextInput"},"max_iterations":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"max_iterations","value":15,"display_name":"Max Iterations","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"int","_input_type":"IntInput"},"system_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_prompt","value":"","display_name":"System Prompt","advanced":false,"input_types":["Message"],"dynamic":false,"info":"System prompt for the agent.","title_case":false,"type":"str","_input_type":"MultilineInput"},"user_prompt":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"user_prompt","value":"{input}","display_name":"Prompt","advanced":true,"input_types":["Message"],"dynamic":false,"info":"This prompt must contain 'input' key.","title_case":false,"type":"str","_input_type":"MultilineInput"},"verbose":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"verbose","value":true,"display_name":"Verbose","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Agent that uses tools","icon":"LangChain","base_classes":["AgentExecutor","Message"],"display_name":"Tool Calling Agent","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["AgentExecutor"],"selected":"AgentExecutor","name":"agent","display_name":"Agent","method":"build_agent","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Message"],"selected":"Message","name":"response","display_name":"Response","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","handle_parsing_errors","verbose","max_iterations","tools","llm","system_prompt","user_prompt","chat_history"],"beta":true,"edited":false,"lf_version":"1.0.17"},"id":"ToolCallingAgent-GurdE"},"selected":false,"width":384,"height":398,"positionAbsolute":{"x":3974.1377259893243,"y":867.4647271037014},"dragging":false},{"id":"OpenAIModel-OTfnt","type":"genericNode","position":{"x":3513.5648778762093,"y":710.2099422974287},"data":{"type":"OpenAIModel","node":{"template":{"_type":"Component","api_key":{"load_from_db":false,"required":false,"placeholder":"","show":true,"name":"api_key","value":"","display_name":"OpenAI API Key","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The OpenAI API Key to use for the OpenAI model.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import operator\nfrom functools import reduce\n\nfrom langflow.field_typing.range_spec import RangeSpec\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom langflow.base.models.model import LCModelComponent\nfrom langflow.base.models.openai_constants import OPENAI_MODEL_NAMES\nfrom langflow.field_typing import LanguageModel\nfrom langflow.inputs import (\n BoolInput,\n DictInput,\n DropdownInput,\n FloatInput,\n IntInput,\n SecretStrInput,\n StrInput,\n)\n\n\nclass OpenAIModelComponent(LCModelComponent):\n display_name = \"OpenAI\"\n description = \"Generates text using OpenAI LLMs.\"\n icon = \"OpenAI\"\n name = \"OpenAIModel\"\n\n inputs = LCModelComponent._base_inputs + [\n IntInput(\n name=\"max_tokens\",\n display_name=\"Max Tokens\",\n advanced=True,\n info=\"The maximum number of tokens to generate. Set to 0 for unlimited tokens.\",\n range_spec=RangeSpec(min=0, max=128000),\n ),\n DictInput(name=\"model_kwargs\", display_name=\"Model Kwargs\", advanced=True),\n BoolInput(\n name=\"json_mode\",\n display_name=\"JSON Mode\",\n advanced=True,\n info=\"If True, it will output JSON regardless of passing a schema.\",\n ),\n DictInput(\n name=\"output_schema\",\n is_list=True,\n display_name=\"Schema\",\n advanced=True,\n info=\"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.\",\n ),\n DropdownInput(\n name=\"model_name\",\n display_name=\"Model Name\",\n advanced=False,\n options=OPENAI_MODEL_NAMES,\n value=OPENAI_MODEL_NAMES[0],\n ),\n StrInput(\n name=\"openai_api_base\",\n display_name=\"OpenAI API Base\",\n advanced=True,\n info=\"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.\",\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"The OpenAI API Key to use for the OpenAI model.\",\n advanced=False,\n value=\"OPENAI_API_KEY\",\n ),\n FloatInput(name=\"temperature\", display_name=\"Temperature\", value=0.1),\n IntInput(\n name=\"seed\",\n display_name=\"Seed\",\n info=\"The seed controls the reproducibility of the job.\",\n advanced=True,\n value=1,\n ),\n ]\n\n def build_model(self) -> LanguageModel: # type: ignore[type-var]\n # self.output_schema is a list of dictionaries\n # let's convert it to a dictionary\n output_schema_dict: dict[str, str] = reduce(operator.ior, self.output_schema or {}, {})\n openai_api_key = self.api_key\n temperature = self.temperature\n model_name: str = self.model_name\n max_tokens = self.max_tokens\n model_kwargs = self.model_kwargs or {}\n openai_api_base = self.openai_api_base or \"https://api.openai.com/v1\"\n json_mode = bool(output_schema_dict) or self.json_mode\n seed = self.seed\n\n if openai_api_key:\n api_key = SecretStr(openai_api_key)\n else:\n api_key = None\n output = ChatOpenAI(\n max_tokens=max_tokens or None,\n model_kwargs=model_kwargs,\n model=model_name,\n base_url=openai_api_base,\n api_key=api_key,\n temperature=temperature if temperature is not None else 0.1,\n seed=seed,\n )\n if json_mode:\n if output_schema_dict:\n output = output.with_structured_output(schema=output_schema_dict, method=\"json_mode\") # type: ignore\n else:\n output = output.bind(response_format={\"type\": \"json_object\"}) # type: ignore\n\n return output # type: ignore\n\n def _get_exception_message(self, e: Exception):\n \"\"\"\n Get a message from an OpenAI exception.\n\n Args:\n exception (Exception): The exception to get the message from.\n\n Returns:\n str: The message from the exception.\n \"\"\"\n\n try:\n from openai import BadRequestError\n except ImportError:\n return\n if isinstance(e, BadRequestError):\n message = e.body.get(\"message\") # type: ignore\n if message:\n return message\n return\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Input","advanced":true,"input_types":["Message"],"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"MessageInput"},"json_mode":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"json_mode","value":false,"display_name":"JSON Mode","advanced":true,"dynamic":false,"info":"If True, it will output JSON regardless of passing a schema.","title_case":false,"type":"bool","_input_type":"BoolInput"},"max_tokens":{"trace_as_metadata":true,"range_spec":{"step_type":"float","min":0,"max":128000,"step":0.1},"list":false,"required":false,"placeholder":"","show":true,"name":"max_tokens","value":"","display_name":"Max Tokens","advanced":true,"dynamic":false,"info":"The maximum number of tokens to generate. Set to 0 for unlimited tokens.","title_case":false,"type":"int","_input_type":"IntInput"},"model_kwargs":{"trace_as_input":true,"list":false,"required":false,"placeholder":"","show":true,"name":"model_kwargs","value":{},"display_name":"Model Kwargs","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"dict","_input_type":"DictInput"},"model_name":{"trace_as_metadata":true,"options":["gpt-4o-mini","gpt-4o","gpt-4-turbo","gpt-4-turbo-preview","gpt-4","gpt-3.5-turbo","gpt-3.5-turbo-0125"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"model_name","value":"gpt-4o","display_name":"Model Name","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"DropdownInput"},"openai_api_base":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"openai_api_base","value":"","display_name":"OpenAI API Base","advanced":true,"dynamic":false,"info":"The base URL of the OpenAI API. Defaults to https://api.openai.com/v1. You can change this to use other APIs like JinaChat, LocalAI and Prem.","title_case":false,"type":"str","_input_type":"StrInput"},"output_schema":{"trace_as_input":true,"list":true,"required":false,"placeholder":"","show":true,"name":"output_schema","value":{},"display_name":"Schema","advanced":true,"dynamic":false,"info":"The schema for the Output of the model. You must pass the word JSON in the prompt. If left blank, JSON mode will be disabled.","title_case":false,"type":"dict","_input_type":"DictInput"},"seed":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"seed","value":1,"display_name":"Seed","advanced":true,"dynamic":false,"info":"The seed controls the reproducibility of the job.","title_case":false,"type":"int","_input_type":"IntInput"},"stream":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"stream","value":false,"display_name":"Stream","advanced":true,"dynamic":false,"info":"Stream the response from the model. Streaming works only in Chat.","title_case":false,"type":"bool","_input_type":"BoolInput"},"system_message":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"system_message","value":"","display_name":"System Message","advanced":true,"input_types":["Message"],"dynamic":false,"info":"System message to pass to the model.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"temperature":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"temperature","value":0.1,"display_name":"Temperature","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"float","_input_type":"FloatInput"}},"description":"Generates text using OpenAI LLMs.","icon":"OpenAI","base_classes":["LanguageModel","Message"],"display_name":"OpenAI","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text_output","display_name":"Text","method":"text_response","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["LanguageModel"],"selected":"LanguageModel","name":"model_output","display_name":"Language Model","method":"build_model","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","system_message","stream","max_tokens","model_kwargs","json_mode","output_schema","model_name","openai_api_base","api_key","temperature","seed"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"OpenAIModel-OTfnt"},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":3513.5648778762093,"y":710.2099422974287},"dragging":false},{"id":"AddContentToPage-vrAvx","type":"genericNode","position":{"x":2649.2991466550634,"y":1050.6250104897197},"data":{"type":"AddContentToPage","node":{"template":{"_type":"Component","block_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"block_id","value":"","display_name":"Page/Block ID","advanced":true,"dynamic":false,"info":"The ID of the page/block to add the content.","title_case":false,"type":"str","_input_type":"StrInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nfrom typing import Dict, Any, Union\nfrom markdown import markdown\nfrom bs4 import BeautifulSoup\nimport requests\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom pydantic import BaseModel, Field\n\n\nclass AddContentToPage(LCToolComponent):\n display_name: str = \"Add Content to Page \"\n description: str = \"Convert markdown text to Notion blocks and append them to a Notion page.\"\n documentation: str = \"https://developers.notion.com/reference/patch-block-children\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n MultilineInput(\n name=\"markdown_text\",\n display_name=\"Markdown Text\",\n info=\"The markdown text to convert to Notion blocks.\",\n ),\n StrInput(\n name=\"block_id\",\n display_name=\"Page/Block ID\",\n info=\"The ID of the page/block to add the content.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class AddContentToPageSchema(BaseModel):\n markdown_text: str = Field(..., description=\"The markdown text to convert to Notion blocks.\")\n block_id: str = Field(..., description=\"The ID of the page/block to add the content.\")\n\n def run_model(self) -> Data:\n result = self._add_content_to_page(self.markdown_text, self.block_id)\n return Data(data=result, text=json.dumps(result))\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"add_content_to_notion_page\",\n description=\"Convert markdown text to Notion blocks and append them to a Notion page.\",\n func=self._add_content_to_page,\n args_schema=self.AddContentToPageSchema,\n )\n\n def _add_content_to_page(self, markdown_text: str, block_id: str) -> Union[Dict[str, Any], str]:\n try:\n html_text = markdown(markdown_text)\n soup = BeautifulSoup(html_text, \"html.parser\")\n blocks = self.process_node(soup)\n\n url = f\"https://api.notion.com/v1/blocks/{block_id}/children\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"children\": blocks,\n }\n\n response = requests.patch(url, headers=headers, json=data)\n response.raise_for_status()\n\n return response.json()\n except requests.exceptions.RequestException as e:\n error_message = f\"Error: Failed to add content to Notion page. {str(e)}\"\n if hasattr(e, \"response\") and e.response is not None:\n error_message += f\" Status code: {e.response.status_code}, Response: {e.response.text}\"\n return error_message\n except Exception as e:\n return f\"Error: An unexpected error occurred while adding content to Notion page. {str(e)}\"\n\n def process_node(self, node):\n blocks = []\n if isinstance(node, str):\n text = node.strip()\n if text:\n if text.startswith(\"#\"):\n heading_level = text.count(\"#\", 0, 6)\n heading_text = text[heading_level:].strip()\n if heading_level == 1:\n blocks.append(self.create_block(\"heading_1\", heading_text))\n elif heading_level == 2:\n blocks.append(self.create_block(\"heading_2\", heading_text))\n elif heading_level == 3:\n blocks.append(self.create_block(\"heading_3\", heading_text))\n else:\n blocks.append(self.create_block(\"paragraph\", text))\n elif node.name == \"h1\":\n blocks.append(self.create_block(\"heading_1\", node.get_text(strip=True)))\n elif node.name == \"h2\":\n blocks.append(self.create_block(\"heading_2\", node.get_text(strip=True)))\n elif node.name == \"h3\":\n blocks.append(self.create_block(\"heading_3\", node.get_text(strip=True)))\n elif node.name == \"p\":\n code_node = node.find(\"code\")\n if code_node:\n code_text = code_node.get_text()\n language, code = self.extract_language_and_code(code_text)\n blocks.append(self.create_block(\"code\", code, language=language))\n elif self.is_table(str(node)):\n blocks.extend(self.process_table(node))\n else:\n blocks.append(self.create_block(\"paragraph\", node.get_text(strip=True)))\n elif node.name == \"ul\":\n blocks.extend(self.process_list(node, \"bulleted_list_item\"))\n elif node.name == \"ol\":\n blocks.extend(self.process_list(node, \"numbered_list_item\"))\n elif node.name == \"blockquote\":\n blocks.append(self.create_block(\"quote\", node.get_text(strip=True)))\n elif node.name == \"hr\":\n blocks.append(self.create_block(\"divider\", \"\"))\n elif node.name == \"img\":\n blocks.append(self.create_block(\"image\", \"\", image_url=node.get(\"src\")))\n elif node.name == \"a\":\n blocks.append(self.create_block(\"bookmark\", node.get_text(strip=True), link_url=node.get(\"href\")))\n elif node.name == \"table\":\n blocks.extend(self.process_table(node))\n\n for child in node.children:\n if isinstance(child, str):\n continue\n blocks.extend(self.process_node(child))\n\n return blocks\n\n def extract_language_and_code(self, code_text):\n lines = code_text.split(\"\\n\")\n language = lines[0].strip()\n code = \"\\n\".join(lines[1:]).strip()\n return language, code\n\n def is_code_block(self, text):\n return text.startswith(\"```\")\n\n def extract_code_block(self, text):\n lines = text.split(\"\\n\")\n language = lines[0].strip(\"`\").strip()\n code = \"\\n\".join(lines[1:]).strip(\"`\").strip()\n return language, code\n\n def is_table(self, text):\n rows = text.split(\"\\n\")\n if len(rows) < 2:\n return False\n\n has_separator = False\n for i, row in enumerate(rows):\n if \"|\" in row:\n cells = [cell.strip() for cell in row.split(\"|\")]\n cells = [cell for cell in cells if cell] # Remove empty cells\n if i == 1 and all(set(cell) <= set(\"-|\") for cell in cells):\n has_separator = True\n elif not cells:\n return False\n\n return has_separator and len(rows) >= 3\n\n def process_list(self, node, list_type):\n blocks = []\n for item in node.find_all(\"li\"):\n item_text = item.get_text(strip=True)\n checked = item_text.startswith(\"[x]\")\n is_checklist = item_text.startswith(\"[ ]\") or checked\n\n if is_checklist:\n item_text = item_text.replace(\"[x]\", \"\").replace(\"[ ]\", \"\").strip()\n blocks.append(self.create_block(\"to_do\", item_text, checked=checked))\n else:\n blocks.append(self.create_block(list_type, item_text))\n return blocks\n\n def process_table(self, node):\n blocks = []\n header_row = node.find(\"thead\").find(\"tr\") if node.find(\"thead\") else None\n body_rows = node.find(\"tbody\").find_all(\"tr\") if node.find(\"tbody\") else []\n\n if header_row or body_rows:\n table_width = max(\n len(header_row.find_all([\"th\", \"td\"])) if header_row else 0,\n max(len(row.find_all([\"th\", \"td\"])) for row in body_rows),\n )\n\n table_block = self.create_block(\"table\", \"\", table_width=table_width, has_column_header=bool(header_row))\n blocks.append(table_block)\n\n if header_row:\n header_cells = [cell.get_text(strip=True) for cell in header_row.find_all([\"th\", \"td\"])]\n header_row_block = self.create_block(\"table_row\", header_cells)\n blocks.append(header_row_block)\n\n for row in body_rows:\n cells = [cell.get_text(strip=True) for cell in row.find_all([\"th\", \"td\"])]\n row_block = self.create_block(\"table_row\", cells)\n blocks.append(row_block)\n\n return blocks\n\n def create_block(self, block_type: str, content: str, **kwargs) -> Dict[str, Any]:\n block: dict[str, Any] = {\n \"object\": \"block\",\n \"type\": block_type,\n block_type: {},\n }\n\n if block_type in [\n \"paragraph\",\n \"heading_1\",\n \"heading_2\",\n \"heading_3\",\n \"bulleted_list_item\",\n \"numbered_list_item\",\n \"quote\",\n ]:\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n elif block_type == \"to_do\":\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n block[block_type][\"checked\"] = kwargs.get(\"checked\", False)\n elif block_type == \"code\":\n block[block_type][\"rich_text\"] = [\n {\n \"type\": \"text\",\n \"text\": {\n \"content\": content,\n },\n }\n ]\n block[block_type][\"language\"] = kwargs.get(\"language\", \"plain text\")\n elif block_type == \"image\":\n block[block_type] = {\"type\": \"external\", \"external\": {\"url\": kwargs.get(\"image_url\", \"\")}}\n elif block_type == \"divider\":\n pass\n elif block_type == \"bookmark\":\n block[block_type][\"url\"] = kwargs.get(\"link_url\", \"\")\n elif block_type == \"table\":\n block[block_type][\"table_width\"] = kwargs.get(\"table_width\", 0)\n block[block_type][\"has_column_header\"] = kwargs.get(\"has_column_header\", False)\n block[block_type][\"has_row_header\"] = kwargs.get(\"has_row_header\", False)\n elif block_type == \"table_row\":\n block[block_type][\"cells\"] = [[{\"type\": \"text\", \"text\": {\"content\": cell}} for cell in content]]\n\n return block\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"markdown_text":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"markdown_text","value":"","display_name":"Markdown Text","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The markdown text to convert to Notion blocks.","title_case":false,"type":"str","_input_type":"MultilineInput"},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Convert markdown text to Notion blocks and append them to a Notion page.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Add Content to Page ","documentation":"https://developers.notion.com/reference/patch-block-children","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["markdown_text","block_id","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"AddContentToPage-vrAvx","description":"Convert markdown text to Notion blocks and append them to a Notion page.","display_name":"Add Content to Page "},"selected":false,"width":384,"height":330,"positionAbsolute":{"x":2649.2991466550634,"y":1050.6250104897197},"dragging":false},{"id":"NotionPageCreator-Exc7f","type":"genericNode","position":{"x":3050.8201437255634,"y":1391.0449862668834},"data":{"type":"NotionPageCreator","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nfrom typing import Dict, Any, Union\nimport requests\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom langflow.io import Output\n\nclass NotionPageCreator(LCToolComponent):\n display_name: str = \"Create Page \"\n description: str = \"A component for creating Notion pages.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/page-create\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"database_id\",\n display_name=\"Database ID\",\n info=\"The ID of the Notion database.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n MultilineInput(\n name=\"properties_json\",\n display_name=\"Properties (JSON)\",\n info=\"The properties of the new page as a JSON string.\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionPageCreatorSchema(BaseModel):\n database_id: str = Field(..., description=\"The ID of the Notion database.\")\n properties_json: str = Field(..., description=\"The properties of the new page as a JSON string.\")\n\n def run_model(self) -> Data:\n result = self._create_notion_page(self.database_id, self.properties_json)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the created page data\n output = \"Created page properties:\\n\"\n for prop_name, prop_value in result.get(\"properties\", {}).items():\n output += f\"{prop_name}: {prop_value}\\n\"\n return Data(text=output, data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"create_notion_page\",\n description=\"Create a new page in a Notion database. IMPORTANT: Use the tool to check the Database properties for more details before using this tool.\",\n func=self._create_notion_page,\n args_schema=self.NotionPageCreatorSchema,\n )\n\n def _create_notion_page(self, database_id: str, properties_json: str) -> Union[Dict[str, Any], str]:\n if not database_id or not properties_json:\n return \"Invalid input. Please provide 'database_id' and 'properties_json'.\"\n\n try:\n properties = json.loads(properties_json)\n except json.JSONDecodeError as e:\n return f\"Invalid properties format. Please provide a valid JSON string. Error: {str(e)}\"\n\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"parent\": {\"database_id\": database_id},\n \"properties\": properties,\n }\n\n try:\n response = requests.post(\"https://api.notion.com/v1/pages\", headers=headers, json=data)\n response.raise_for_status()\n result = response.json()\n return result\n except requests.exceptions.RequestException as e:\n error_message = f\"Failed to create Notion page. Error: {str(e)}\"\n if hasattr(e, \"response\") and e.response is not None:\n error_message += f\" Status code: {e.response.status_code}, Response: {e.response.text}\"\n return error_message\n\n def __call__(self, *args, **kwargs):\n return self._create_notion_page(*args, **kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"database_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"database_id","value":"","display_name":"Database ID","advanced":true,"dynamic":false,"info":"The ID of the Notion database.","title_case":false,"type":"str","_input_type":"StrInput"},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"properties_json":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"properties_json","value":"","display_name":"Properties (JSON)","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The properties of the new page as a JSON string.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"A component for creating Notion pages.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Create Page ","documentation":"https://docs.langflow.org/integrations/notion/page-create","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["database_id","notion_secret","properties_json"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionPageCreator-Exc7f","description":"A component for creating Notion pages.","display_name":"Create Page "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":3050.8201437255634,"y":1391.0449862668834},"dragging":false},{"id":"NotionDatabaseProperties-IjzLV","type":"genericNode","position":{"x":3053.0023230574693,"y":1061.535907149244},"data":{"type":"NotionDatabaseProperties","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import Dict, Union\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom langflow.io import Output\n\nclass NotionDatabaseProperties(LCToolComponent):\n display_name: str = \"List Database Properties \"\n description: str = \"Retrieve properties of a Notion database.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/list-database-properties\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"database_id\",\n display_name=\"Database ID\",\n info=\"The ID of the Notion database.\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionDatabasePropertiesSchema(BaseModel):\n database_id: str = Field(..., description=\"The ID of the Notion database.\")\n\n def run_model(self) -> Data:\n result = self._fetch_database_properties(self.database_id)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the properties\n return Data(text=str(result), data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_database_properties\",\n description=\"Retrieve properties of a Notion database. Input should include the database ID.\",\n func=self._fetch_database_properties,\n args_schema=self.NotionDatabasePropertiesSchema,\n )\n\n def _fetch_database_properties(self, database_id: str) -> Union[Dict, str]:\n url = f\"https://api.notion.com/v1/databases/{database_id}\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\", # Use the latest supported version\n }\n try:\n response = requests.get(url, headers=headers)\n response.raise_for_status()\n data = response.json()\n properties = data.get(\"properties\", {})\n return properties\n except requests.exceptions.RequestException as e:\n return f\"Error fetching Notion database properties: {str(e)}\"\n except ValueError as e:\n return f\"Error parsing Notion API response: {str(e)}\"\n except Exception as e:\n return f\"An unexpected error occurred: {str(e)}\"\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"database_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"database_id","value":"","display_name":"Database ID","advanced":true,"dynamic":false,"info":"The ID of the Notion database.","title_case":false,"type":"str","_input_type":"StrInput"},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Retrieve properties of a Notion database.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Database Properties ","documentation":"https://docs.langflow.org/integrations/notion/list-database-properties","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["database_id","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionDatabaseProperties-IjzLV","description":"Retrieve properties of a Notion database.","display_name":"List Database Properties "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":3053.0023230574693,"y":1061.535907149244},"dragging":false},{"id":"NotionPageUpdate-bexvy","type":"genericNode","position":{"x":2649.2991466550625,"y":1385.262204377853},"data":{"type":"NotionPageUpdate","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import json\nimport requests\nfrom typing import Dict, Any, Union\nfrom pydantic import BaseModel, Field\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, MultilineInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\nfrom loguru import logger\nfrom langflow.io import Output\n\nclass NotionPageUpdate(LCToolComponent):\n display_name: str = \"Update Page Property \"\n description: str = \"Update the properties of a Notion page.\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/page-update\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n StrInput(\n name=\"page_id\",\n display_name=\"Page ID\",\n info=\"The ID of the Notion page to update.\",\n ),\n MultilineInput(\n name=\"properties\",\n display_name=\"Properties\",\n info=\"The properties to update on the page (as a JSON string or a dictionary).\",\n ),\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionPageUpdateSchema(BaseModel):\n page_id: str = Field(..., description=\"The ID of the Notion page to update.\")\n properties: Union[str, Dict[str, Any]] = Field(\n ..., description=\"The properties to update on the page (as a JSON string or a dictionary).\"\n )\n\n def run_model(self) -> Data:\n result = self._update_notion_page(self.page_id, self.properties)\n if isinstance(result, str):\n # An error occurred, return it as text\n return Data(text=result)\n else:\n # Success, return the updated page data\n output = \"Updated page properties:\\n\"\n for prop_name, prop_value in result.get(\"properties\", {}).items():\n output += f\"{prop_name}: {prop_value}\\n\"\n return Data(text=output, data=result)\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"update_notion_page\",\n description=\"Update the properties of a Notion page. IMPORTANT: Use the tool to check the Database properties for more details before using this tool.\",\n func=self._update_notion_page,\n args_schema=self.NotionPageUpdateSchema,\n )\n\n def _update_notion_page(self, page_id: str, properties: Union[str, Dict[str, Any]]) -> Union[Dict[str, Any], str]:\n url = f\"https://api.notion.com/v1/pages/{page_id}\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\", # Use the latest supported version\n }\n\n # Parse properties if it's a string\n if isinstance(properties, str):\n try:\n parsed_properties = json.loads(properties)\n except json.JSONDecodeError as e:\n error_message = f\"Invalid JSON format for properties: {str(e)}\"\n logger.error(error_message)\n return error_message\n\n else:\n parsed_properties = properties\n\n data = {\"properties\": parsed_properties}\n\n try:\n logger.info(f\"Sending request to Notion API: URL: {url}, Data: {json.dumps(data)}\")\n response = requests.patch(url, headers=headers, json=data)\n response.raise_for_status()\n updated_page = response.json()\n\n logger.info(f\"Successfully updated Notion page. Response: {json.dumps(updated_page)}\")\n return updated_page\n except requests.exceptions.HTTPError as e:\n error_message = f\"HTTP Error occurred: {str(e)}\"\n if e.response is not None:\n error_message += f\"\\nStatus code: {e.response.status_code}\"\n error_message += f\"\\nResponse body: {e.response.text}\"\n logger.error(error_message)\n return error_message\n except requests.exceptions.RequestException as e:\n error_message = f\"An error occurred while making the request: {str(e)}\"\n logger.error(error_message)\n return error_message\n except Exception as e:\n error_message = f\"An unexpected error occurred: {str(e)}\"\n logger.error(error_message)\n return error_message\n\n def __call__(self, *args, **kwargs):\n return self._update_notion_page(*args, **kwargs)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"page_id":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"page_id","value":"","display_name":"Page ID","advanced":true,"dynamic":false,"info":"The ID of the Notion page to update.","title_case":false,"type":"str","_input_type":"StrInput"},"properties":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"properties","value":"","display_name":"Properties","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The properties to update on the page (as a JSON string or a dictionary).","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Update the properties of a Notion page.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"Update Page Property ","documentation":"https://docs.langflow.org/integrations/notion/page-update","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true}],"field_order":["page_id","properties","notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionPageUpdate-bexvy","description":"Update the properties of a Notion page.","display_name":"Update Page Property "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":2649.2991466550625,"y":1385.262204377853},"dragging":false},{"id":"NotionSearch-EdSJb","type":"genericNode","position":{"x":2435.4455721283834,"y":357.45573905064634},"data":{"type":"NotionSearch","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import Dict, Any, List\nfrom pydantic import BaseModel, Field\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput, StrInput, DropdownInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionSearch(LCToolComponent):\n display_name: str = \"Search \"\n description: str = \"Searches all pages and databases that have been shared with an integration. The search field can be an empty value to show all values from that search\"\n documentation: str = \"https://docs.langflow.org/integrations/notion/search\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n StrInput(\n name=\"query\",\n display_name=\"Search Query\",\n info=\"The text that the API compares page and database titles against.\",\n ),\n DropdownInput(\n name=\"filter_value\",\n display_name=\"Filter Type\",\n info=\"Limits the results to either only pages or only databases.\",\n options=[\"page\", \"database\"],\n value=\"page\",\n ),\n DropdownInput(\n name=\"sort_direction\",\n display_name=\"Sort Direction\",\n info=\"The direction to sort the results.\",\n options=[\"ascending\", \"descending\"],\n value=\"descending\",\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionSearchSchema(BaseModel):\n query: str = Field(..., description=\"The search query text.\")\n filter_value: str = Field(default=\"page\", description=\"Filter type: 'page' or 'database'.\")\n sort_direction: str = Field(default=\"descending\", description=\"Sort direction: 'ascending' or 'descending'.\")\n\n def run_model(self) -> List[Data]:\n results = self._search_notion(self.query, self.filter_value, self.sort_direction)\n records = []\n combined_text = f\"Results found: {len(results)}\\n\\n\"\n\n for result in results:\n result_data = {\n \"id\": result[\"id\"],\n \"type\": result[\"object\"],\n \"last_edited_time\": result[\"last_edited_time\"],\n }\n\n if result[\"object\"] == \"page\":\n result_data[\"title_or_url\"] = result[\"url\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['url']}\\n\"\n elif result[\"object\"] == \"database\":\n if \"title\" in result and isinstance(result[\"title\"], list) and len(result[\"title\"]) > 0:\n result_data[\"title_or_url\"] = result[\"title\"][0][\"plain_text\"]\n text = f\"id: {result['id']}\\ntitle_or_url: {result['title'][0]['plain_text']}\\n\"\n else:\n result_data[\"title_or_url\"] = \"N/A\"\n text = f\"id: {result['id']}\\ntitle_or_url: N/A\\n\"\n\n text += f\"type: {result['object']}\\nlast_edited_time: {result['last_edited_time']}\\n\\n\"\n combined_text += text\n records.append(Data(text=text, data=result_data))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_search\",\n description=\"Search Notion pages and databases. Input should include the search query and optionally filter type and sort direction.\",\n func=self._search_notion,\n args_schema=self.NotionSearchSchema,\n )\n\n def _search_notion(\n self, query: str, filter_value: str = \"page\", sort_direction: str = \"descending\"\n ) -> List[Dict[str, Any]]:\n url = \"https://api.notion.com/v1/search\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Content-Type\": \"application/json\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n data = {\n \"query\": query,\n \"filter\": {\"value\": filter_value, \"property\": \"object\"},\n \"sort\": {\"direction\": sort_direction, \"timestamp\": \"last_edited_time\"},\n }\n\n response = requests.post(url, headers=headers, json=data)\n response.raise_for_status()\n\n results = response.json()\n return results[\"results\"]\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"filter_value":{"trace_as_metadata":true,"options":["page","database"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"filter_value","value":"database","display_name":"Filter Type","advanced":true,"dynamic":false,"info":"Limits the results to either only pages or only databases.","title_case":false,"type":"str","_input_type":"DropdownInput"},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"},"query":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"query","value":"","display_name":"Search Query","advanced":true,"dynamic":false,"info":"The text that the API compares page and database titles against.","title_case":false,"type":"str","_input_type":"StrInput"},"sort_direction":{"trace_as_metadata":true,"options":["ascending","descending"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sort_direction","value":"descending","display_name":"Sort Direction","advanced":true,"dynamic":false,"info":"The direction to sort the results.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"List All Databases","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Databases","documentation":"https://docs.langflow.org/integrations/notion/search","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true,"hidden":false},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true,"hidden":true}],"field_order":["notion_secret","query","filter_value","sort_direction"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionSearch-EdSJb","description":"Searches all pages and databases that have been shared with an integration.","display_name":"Search "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":2435.4455721283834,"y":357.45573905064634},"dragging":false},{"id":"ParseData-vYVwu","type":"genericNode","position":{"x":2871.5903532688335,"y":563.1965154816405},"data":{"type":"ParseData","node":{"template":{"_type":"Component","data":{"trace_as_metadata":true,"list":false,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"data","value":"","display_name":"Data","advanced":false,"input_types":["Data"],"dynamic":false,"info":"The data to convert to text.","title_case":false,"type":"other","_input_type":"DataInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.io import DataInput, MultilineInput, Output, StrInput\nfrom langflow.schema.message import Message\n\n\nclass ParseDataComponent(Component):\n display_name = \"Parse Data\"\n description = \"Convert Data into plain text following a specified template.\"\n icon = \"braces\"\n name = \"ParseData\"\n\n inputs = [\n DataInput(name=\"data\", display_name=\"Data\", info=\"The data to convert to text.\"),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.\",\n value=\"{text}\",\n ),\n StrInput(name=\"sep\", display_name=\"Separator\", advanced=True, value=\"\\n\"),\n ]\n\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"parse_data\"),\n ]\n\n def parse_data(self) -> Message:\n data = self.data if isinstance(self.data, list) else [self.data]\n template = self.template\n\n result_string = data_to_text(template, data, sep=self.sep)\n self.status = result_string\n return Message(text=result_string)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"sep":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sep","value":"\n","display_name":"Separator","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"StrInput"},"template":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"{text}","display_name":"Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Convert Data into plain text following a specified template.","icon":"braces","base_classes":["Message"],"display_name":"Parse Data","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text","display_name":"Text","method":"parse_data","value":"__UNDEFINED__","cache":true}],"field_order":["data","template","sep"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ParseData-vYVwu","showNode":false},"selected":false,"width":96,"height":96,"positionAbsolute":{"x":2871.5903532688335,"y":563.1965154816405},"dragging":false},{"id":"ChatOutput-zBv53","type":"genericNode","position":{"x":4429.812566227955,"y":940.6072472757681},"data":{"type":"ChatOutput","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.base.io.chat import ChatComponent\nfrom langflow.inputs import BoolInput\nfrom langflow.io import DropdownInput, MessageTextInput, Output\nfrom langflow.memory import store_message\nfrom langflow.schema.message import Message\nfrom langflow.utils.constants import MESSAGE_SENDER_AI, MESSAGE_SENDER_NAME_AI, MESSAGE_SENDER_USER\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n icon = \"ChatOutput\"\n name = \"ChatOutput\"\n\n inputs = [\n MessageTextInput(\n name=\"input_value\",\n display_name=\"Text\",\n info=\"Message to be passed as output.\",\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_AI,\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_AI,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n ]\n outputs = [\n Output(display_name=\"Message\", name=\"message\", method=\"message_response\"),\n ]\n\n def message_response(self) -> Message:\n message = Message(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n )\n if (\n self.session_id\n and isinstance(message, Message)\n and isinstance(message.text, str)\n and self.should_store_message\n ):\n store_message(\n message,\n flow_id=self.graph.flow_id,\n )\n self.message.value = message\n\n self.status = message\n return message\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"data_template":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"data_template","value":"{text}","display_name":"Data Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"input_value":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"input_value","value":"","display_name":"Text","advanced":false,"input_types":["Message"],"dynamic":false,"info":"Message to be passed as output.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"sender":{"trace_as_metadata":true,"options":["Machine","User"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"sender","value":"Machine","display_name":"Sender Type","advanced":true,"dynamic":false,"info":"Type of sender.","title_case":false,"type":"str","_input_type":"DropdownInput"},"sender_name":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sender_name","value":"AI","display_name":"Sender Name","advanced":true,"input_types":["Message"],"dynamic":false,"info":"Name of the sender.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"session_id":{"trace_as_input":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"session_id","value":"","display_name":"Session ID","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The session ID of the chat. If empty, the current session ID parameter will be used.","title_case":false,"type":"str","_input_type":"MessageTextInput"},"should_store_message":{"trace_as_metadata":true,"list":false,"required":false,"placeholder":"","show":true,"name":"should_store_message","value":true,"display_name":"Store Messages","advanced":true,"dynamic":false,"info":"Store the message in the history.","title_case":false,"type":"bool","_input_type":"BoolInput"}},"description":"Display a chat message in the Playground.","icon":"ChatOutput","base_classes":["Message"],"display_name":"Chat Output","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"message","display_name":"Message","method":"message_response","value":"__UNDEFINED__","cache":true}],"field_order":["input_value","should_store_message","sender","sender_name","session_id","data_template"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ChatOutput-zBv53"},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":4429.812566227955,"y":940.6072472757681},"dragging":false},{"id":"NotionUserList-wFEb1","type":"genericNode","position":{"x":2390.6365450681037,"y":694.4867003504073},"data":{"type":"NotionUserList","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"import requests\nfrom typing import List, Dict\nfrom pydantic import BaseModel\nfrom langflow.io import Output\nfrom langflow.base.langchain_utilities.model import LCToolComponent\nfrom langflow.inputs import SecretStrInput\nfrom langflow.schema import Data\nfrom langflow.field_typing import Tool\nfrom langchain.tools import StructuredTool\n\n\nclass NotionUserList(LCToolComponent):\n display_name = \"List Users \"\n description = \"Retrieve users from Notion.\"\n documentation = \"https://docs.langflow.org/integrations/notion/list-users\"\n icon = \"NotionDirectoryLoader\"\n\n inputs = [\n SecretStrInput(\n name=\"notion_secret\",\n display_name=\"Notion Secret\",\n info=\"The Notion integration token.\",\n required=True,\n ),\n ]\n outputs = [\n Output(name=\"example_output\", display_name=\"Data\", method=\"run_model\"),\n Output(name=\"example_tool_output\", display_name=\"Tool\", method=\"build_tool\"),\n ]\n\n class NotionUserListSchema(BaseModel):\n pass\n\n def run_model(self) -> List[Data]:\n users = self._list_users()\n records = []\n combined_text = \"\"\n\n for user in users:\n output = \"User:\\n\"\n for key, value in user.items():\n output += f\"{key.replace('_', ' ').title()}: {value}\\n\"\n output += \"________________________\\n\"\n\n combined_text += output\n records.append(Data(text=output, data=user))\n\n self.status = records\n return records\n\n def build_tool(self) -> Tool:\n return StructuredTool.from_function(\n name=\"notion_list_users\",\n description=\"Retrieve users from Notion.\",\n func=self._list_users,\n args_schema=self.NotionUserListSchema,\n )\n\n def _list_users(self) -> List[Dict]:\n url = \"https://api.notion.com/v1/users\"\n headers = {\n \"Authorization\": f\"Bearer {self.notion_secret}\",\n \"Notion-Version\": \"2022-06-28\",\n }\n\n response = requests.get(url, headers=headers)\n response.raise_for_status()\n\n data = response.json()\n results = data[\"results\"]\n\n users = []\n for user in results:\n user_data = {\n \"id\": user[\"id\"],\n \"type\": user[\"type\"],\n \"name\": user.get(\"name\", \"\"),\n \"avatar_url\": user.get(\"avatar_url\", \"\"),\n }\n users.append(user_data)\n\n return users\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"notion_secret":{"load_from_db":false,"required":true,"placeholder":"","show":true,"name":"notion_secret","value":"","display_name":"Notion Secret","advanced":false,"input_types":["Message"],"dynamic":false,"info":"The Notion integration token.","title_case":false,"password":true,"type":"str","_input_type":"SecretStrInput"}},"description":"Retrieve users from Notion.","icon":"NotionDirectoryLoader","base_classes":["Data","Tool"],"display_name":"List Users ","documentation":"https://docs.langflow.org/integrations/notion/list-users","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Data"],"selected":"Data","name":"example_output","display_name":"Data","method":"run_model","value":"__UNDEFINED__","cache":true},{"types":["Tool"],"selected":"Tool","name":"example_tool_output","display_name":"Tool","method":"build_tool","value":"__UNDEFINED__","cache":true,"hidden":true}],"field_order":["notion_secret"],"beta":false,"edited":true,"lf_version":"1.0.17"},"id":"NotionUserList-wFEb1","description":"Retrieve users from Notion.","display_name":"List Users "},"selected":false,"width":384,"height":302,"positionAbsolute":{"x":2390.6365450681037,"y":694.4867003504073},"dragging":false},{"id":"ParseData-WKjW6","type":"genericNode","position":{"x":2877.571533084884,"y":856.8480898893301},"data":{"type":"ParseData","node":{"template":{"_type":"Component","data":{"trace_as_metadata":true,"list":false,"trace_as_input":true,"required":false,"placeholder":"","show":true,"name":"data","value":"","display_name":"Data","advanced":false,"input_types":["Data"],"dynamic":false,"info":"The data to convert to text.","title_case":false,"type":"other","_input_type":"DataInput"},"code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from langflow.custom import Component\nfrom langflow.helpers.data import data_to_text\nfrom langflow.io import DataInput, MultilineInput, Output, StrInput\nfrom langflow.schema.message import Message\n\n\nclass ParseDataComponent(Component):\n display_name = \"Parse Data\"\n description = \"Convert Data into plain text following a specified template.\"\n icon = \"braces\"\n name = \"ParseData\"\n\n inputs = [\n DataInput(name=\"data\", display_name=\"Data\", info=\"The data to convert to text.\"),\n MultilineInput(\n name=\"template\",\n display_name=\"Template\",\n info=\"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.\",\n value=\"{text}\",\n ),\n StrInput(name=\"sep\", display_name=\"Separator\", advanced=True, value=\"\\n\"),\n ]\n\n outputs = [\n Output(display_name=\"Text\", name=\"text\", method=\"parse_data\"),\n ]\n\n def parse_data(self) -> Message:\n data = self.data if isinstance(self.data, list) else [self.data]\n template = self.template\n\n result_string = data_to_text(template, data, sep=self.sep)\n self.status = result_string\n return Message(text=result_string)\n","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"sep":{"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"sep","value":"\n","display_name":"Separator","advanced":true,"dynamic":false,"info":"","title_case":false,"type":"str","_input_type":"StrInput"},"template":{"trace_as_input":true,"multiline":true,"trace_as_metadata":true,"load_from_db":false,"list":false,"required":false,"placeholder":"","show":true,"name":"template","value":"{text}","display_name":"Template","advanced":true,"input_types":["Message"],"dynamic":false,"info":"The template to use for formatting the data. It can contain the keys {text}, {data} or any other key in the Data.","title_case":false,"type":"str","_input_type":"MultilineInput"}},"description":"Convert Data into plain text following a specified template.","icon":"braces","base_classes":["Message"],"display_name":"Parse Data","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"text","display_name":"Text","method":"parse_data","value":"__UNDEFINED__","cache":true}],"field_order":["data","template","sep"],"beta":false,"edited":false,"lf_version":"1.0.17"},"id":"ParseData-WKjW6","showNode":false},"selected":false,"width":96,"height":96,"positionAbsolute":{"x":2877.571533084884,"y":856.8480898893301},"dragging":false},{"id":"CurrentDateComponent-WOwNq","type":"genericNode","position":{"x":536.7929500860405,"y":617.6055631700241},"data":{"type":"CurrentDateComponent","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from datetime import datetime\r\nfrom zoneinfo import ZoneInfo\r\nfrom typing import List\r\n\r\nfrom langflow.custom import Component\r\nfrom langflow.io import DropdownInput, Output\r\nfrom langflow.schema.message import Message\r\n\r\nclass CurrentDateComponent(Component):\r\n display_name = \"Current Date 🕰️\"\r\n description = \"Returns the current date and time in the selected timezone.\"\r\n icon = \"clock\"\r\n\r\n inputs = [\r\n DropdownInput(\r\n name=\"timezone\",\r\n display_name=\"Timezone\",\r\n options=[\r\n \"UTC\",\r\n \"US/Eastern\",\r\n \"US/Central\",\r\n \"US/Mountain\",\r\n \"US/Pacific\",\r\n \"Europe/London\",\r\n \"Europe/Paris\",\r\n \"Asia/Tokyo\",\r\n \"Australia/Sydney\",\r\n \"America/Sao_Paulo\",\r\n \"America/Cuiaba\",\r\n ],\r\n value=\"UTC\",\r\n info=\"Select the timezone for the current date and time.\",\r\n ),\r\n ]\r\n\r\n outputs = [\r\n Output(display_name=\"Current Date\", name=\"current_date\", method=\"get_current_date\"),\r\n ]\r\n\r\n def get_current_date(self) -> Message:\r\n try:\r\n tz = ZoneInfo(self.timezone)\r\n current_date = datetime.now(tz).strftime(\"%Y-%m-%d %H:%M:%S %Z\")\r\n result = f\"Current date and time in {self.timezone}: {current_date}\"\r\n self.status = result\r\n return Message(text=result)\r\n except Exception as e:\r\n error_message = f\"Error: {str(e)}\"\r\n self.status = error_message\r\n return Message(text=error_message)","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"timezone":{"trace_as_metadata":true,"options":["UTC","US/Eastern","US/Central","US/Mountain","US/Pacific","Europe/London","Europe/Paris","Asia/Tokyo","Australia/Sydney","America/Sao_Paulo","America/Cuiaba"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"timezone","value":"UTC","display_name":"Timezone","advanced":false,"dynamic":false,"info":"Select the timezone for the current date and time.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"Returns the current date and time in the selected timezone.","icon":"clock","base_classes":["Message"],"display_name":"Current Date","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"current_date","display_name":"Current Date","method":"get_current_date","value":"__UNDEFINED__","cache":true}],"field_order":["timezone"],"beta":false,"edited":true},"id":"CurrentDateComponent-WOwNq","showNode":false},"selected":false,"width":96,"height":96,"dragging":false,"positionAbsolute":{"x":536.7929500860405,"y":617.6055631700241}},{"id":"CurrentDateComponent-PZ8xJ","type":"genericNode","position":{"x":2871.6341688682833,"y":453.3374434097356},"data":{"type":"CurrentDateComponent","node":{"template":{"_type":"Component","code":{"type":"code","required":true,"placeholder":"","list":false,"show":true,"multiline":true,"value":"from datetime import datetime\r\nfrom zoneinfo import ZoneInfo\r\nfrom typing import List\r\n\r\nfrom langflow.custom import Component\r\nfrom langflow.io import DropdownInput, Output\r\nfrom langflow.schema.message import Message\r\n\r\nclass CurrentDateComponent(Component):\r\n display_name = \"Current Date 🕰️\"\r\n description = \"Returns the current date and time in the selected timezone.\"\r\n icon = \"clock\"\r\n\r\n inputs = [\r\n DropdownInput(\r\n name=\"timezone\",\r\n display_name=\"Timezone\",\r\n options=[\r\n \"UTC\",\r\n \"US/Eastern\",\r\n \"US/Central\",\r\n \"US/Mountain\",\r\n \"US/Pacific\",\r\n \"Europe/London\",\r\n \"Europe/Paris\",\r\n \"Asia/Tokyo\",\r\n \"Australia/Sydney\",\r\n \"America/Sao_Paulo\",\r\n \"America/Cuiaba\",\r\n ],\r\n value=\"UTC\",\r\n info=\"Select the timezone for the current date and time.\",\r\n ),\r\n ]\r\n\r\n outputs = [\r\n Output(display_name=\"Current Date\", name=\"current_date\", method=\"get_current_date\"),\r\n ]\r\n\r\n def get_current_date(self) -> Message:\r\n try:\r\n tz = ZoneInfo(self.timezone)\r\n current_date = datetime.now(tz).strftime(\"%Y-%m-%d %H:%M:%S %Z\")\r\n result = f\"Current date and time in {self.timezone}: {current_date}\"\r\n self.status = result\r\n return Message(text=result)\r\n except Exception as e:\r\n error_message = f\"Error: {str(e)}\"\r\n self.status = error_message\r\n return Message(text=error_message)","fileTypes":[],"file_path":"","password":false,"name":"code","advanced":true,"dynamic":true,"info":"","load_from_db":false,"title_case":false},"timezone":{"trace_as_metadata":true,"options":["UTC","US/Eastern","US/Central","US/Mountain","US/Pacific","Europe/London","Europe/Paris","Asia/Tokyo","Australia/Sydney","America/Sao_Paulo","America/Cuiaba"],"combobox":false,"required":false,"placeholder":"","show":true,"name":"timezone","value":"UTC","display_name":"Timezone","advanced":false,"dynamic":false,"info":"Select the timezone for the current date and time.","title_case":false,"type":"str","_input_type":"DropdownInput"}},"description":"Returns the current date and time in the selected timezone.","icon":"clock","base_classes":["Message"],"display_name":"Current Date","documentation":"","custom_fields":{},"output_types":[],"pinned":false,"conditional_paths":[],"frozen":false,"outputs":[{"types":["Message"],"selected":"Message","name":"current_date","display_name":"Current Date","method":"get_current_date","value":"__UNDEFINED__","cache":true}],"field_order":["timezone"],"beta":false,"edited":true,"official":false},"id":"CurrentDateComponent-PZ8xJ","showNode":false},"selected":false,"width":96,"height":96,"dragging":false,"positionAbsolute":{"x":2871.6341688682833,"y":453.3374434097356}}],"edges":[{"source":"TextInput-iJPEJ","sourceHandle":"{œdataTypeœ:œTextInputœ,œidœ:œTextInput-iJPEJœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-19rub","targetHandle":"{œfieldNameœ:œTRANSCRIPTœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"TRANSCRIPT","id":"Prompt-19rub","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"TextInput","id":"TextInput-iJPEJ","name":"text","output_types":["Message"]}},"id":"reactflow__edge-TextInput-iJPEJ{œdataTypeœ:œTextInputœ,œidœ:œTextInput-iJPEJœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-19rub{œfieldNameœ:œTRANSCRIPTœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"NotionUserList-TvIKS","sourceHandle":"{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-TvIKSœ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}","target":"ParseData-aNk1v","targetHandle":"{œfieldNameœ:œdataœ,œidœ:œParseData-aNk1vœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"data","id":"ParseData-aNk1v","inputTypes":["Data"],"type":"other"},"sourceHandle":{"dataType":"NotionUserList","id":"NotionUserList-TvIKS","name":"example_output","output_types":["Data"]}},"id":"reactflow__edge-NotionUserList-TvIKS{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-TvIKSœ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}-ParseData-aNk1v{œfieldNameœ:œdataœ,œidœ:œParseData-aNk1vœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"ParseData-aNk1v","sourceHandle":"{œdataTypeœ:œParseDataœ,œidœ:œParseData-aNk1vœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-19rub","targetHandle":"{œfieldNameœ:œUSERSœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"USERS","id":"Prompt-19rub","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"ParseData","id":"ParseData-aNk1v","name":"text","output_types":["Message"]}},"id":"reactflow__edge-ParseData-aNk1v{œdataTypeœ:œParseDataœ,œidœ:œParseData-aNk1vœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-19rub{œfieldNameœ:œUSERSœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"Prompt-19rub","sourceHandle":"{œdataTypeœ:œPromptœ,œidœ:œPrompt-19rubœ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}","target":"ToolCallingAgent-rVWeq","targetHandle":"{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"system_prompt","id":"ToolCallingAgent-rVWeq","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"Prompt","id":"Prompt-19rub","name":"prompt","output_types":["Message"]}},"id":"reactflow__edge-Prompt-19rub{œdataTypeœ:œPromptœ,œidœ:œPrompt-19rubœ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}-ToolCallingAgent-rVWeq{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"NotionSearch-M66HF","sourceHandle":"{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-M66HFœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolCallingAgent-rVWeq","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-rVWeq","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"NotionSearch","id":"NotionSearch-M66HF","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionSearch-M66HF{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-M66HFœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolCallingAgent-rVWeq{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"OpenAIModel-Ht8xI","sourceHandle":"{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-Ht8xIœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}","target":"ToolCallingAgent-rVWeq","targetHandle":"{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"llm","id":"ToolCallingAgent-rVWeq","inputTypes":["LanguageModel"],"type":"other"},"sourceHandle":{"dataType":"OpenAIModel","id":"OpenAIModel-Ht8xI","name":"model_output","output_types":["LanguageModel"]}},"id":"reactflow__edge-OpenAIModel-Ht8xI{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-Ht8xIœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}-ToolCallingAgent-rVWeq{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-rVWeqœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"ToolCallingAgent-rVWeq","sourceHandle":"{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-rVWeqœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-Lbxk6","targetHandle":"{œfieldNameœ:œTASK_LISTœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"TASK_LIST","id":"Prompt-Lbxk6","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"ToolCallingAgent","id":"ToolCallingAgent-rVWeq","name":"response","output_types":["Message"]}},"id":"reactflow__edge-ToolCallingAgent-rVWeq{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-rVWeqœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}-Prompt-Lbxk6{œfieldNameœ:œTASK_LISTœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"OpenAIModel-OTfnt","sourceHandle":"{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-OTfntœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"llm","id":"ToolCallingAgent-GurdE","inputTypes":["LanguageModel"],"type":"other"},"sourceHandle":{"dataType":"OpenAIModel","id":"OpenAIModel-OTfnt","name":"model_output","output_types":["LanguageModel"]}},"id":"reactflow__edge-OpenAIModel-OTfnt{œdataTypeœ:œOpenAIModelœ,œidœ:œOpenAIModel-OTfntœ,œnameœ:œmodel_outputœ,œoutput_typesœ:[œLanguageModelœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œllmœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œLanguageModelœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"Prompt-Lbxk6","sourceHandle":"{œdataTypeœ:œPromptœ,œidœ:œPrompt-Lbxk6œ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"system_prompt","id":"ToolCallingAgent-GurdE","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"Prompt","id":"Prompt-Lbxk6","name":"prompt","output_types":["Message"]}},"id":"reactflow__edge-Prompt-Lbxk6{œdataTypeœ:œPromptœ,œidœ:œPrompt-Lbxk6œ,œnameœ:œpromptœ,œoutput_typesœ:[œMessageœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œsystem_promptœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"AddContentToPage-vrAvx","sourceHandle":"{œdataTypeœ:œAddContentToPageœ,œidœ:œAddContentToPage-vrAvxœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-GurdE","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"AddContentToPage","id":"AddContentToPage-vrAvx","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-AddContentToPage-vrAvx{œdataTypeœ:œAddContentToPageœ,œidœ:œAddContentToPage-vrAvxœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"NotionPageCreator-Exc7f","sourceHandle":"{œdataTypeœ:œNotionPageCreatorœ,œidœ:œNotionPageCreator-Exc7fœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-GurdE","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"NotionPageCreator","id":"NotionPageCreator-Exc7f","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionPageCreator-Exc7f{œdataTypeœ:œNotionPageCreatorœ,œidœ:œNotionPageCreator-Exc7fœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"NotionDatabaseProperties-IjzLV","sourceHandle":"{œdataTypeœ:œNotionDatabasePropertiesœ,œidœ:œNotionDatabaseProperties-IjzLVœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-GurdE","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"NotionDatabaseProperties","id":"NotionDatabaseProperties-IjzLV","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionDatabaseProperties-IjzLV{œdataTypeœ:œNotionDatabasePropertiesœ,œidœ:œNotionDatabaseProperties-IjzLVœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"NotionPageUpdate-bexvy","sourceHandle":"{œdataTypeœ:œNotionPageUpdateœ,œidœ:œNotionPageUpdate-bexvyœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}","target":"ToolCallingAgent-GurdE","targetHandle":"{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"tools","id":"ToolCallingAgent-GurdE","inputTypes":["Tool","BaseTool"],"type":"other"},"sourceHandle":{"dataType":"NotionPageUpdate","id":"NotionPageUpdate-bexvy","name":"example_tool_output","output_types":["Tool"]}},"id":"reactflow__edge-NotionPageUpdate-bexvy{œdataTypeœ:œNotionPageUpdateœ,œidœ:œNotionPageUpdate-bexvyœ,œnameœ:œexample_tool_outputœ,œoutput_typesœ:[œToolœ]}-ToolCallingAgent-GurdE{œfieldNameœ:œtoolsœ,œidœ:œToolCallingAgent-GurdEœ,œinputTypesœ:[œToolœ,œBaseToolœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"NotionSearch-EdSJb","sourceHandle":"{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-EdSJbœ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}","target":"ParseData-vYVwu","targetHandle":"{œfieldNameœ:œdataœ,œidœ:œParseData-vYVwuœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"data","id":"ParseData-vYVwu","inputTypes":["Data"],"type":"other"},"sourceHandle":{"dataType":"NotionSearch","id":"NotionSearch-EdSJb","name":"example_output","output_types":["Data"]}},"id":"reactflow__edge-NotionSearch-EdSJb{œdataTypeœ:œNotionSearchœ,œidœ:œNotionSearch-EdSJbœ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}-ParseData-vYVwu{œfieldNameœ:œdataœ,œidœ:œParseData-vYVwuœ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","selected":false,"className":""},{"source":"ParseData-vYVwu","sourceHandle":"{œdataTypeœ:œParseDataœ,œidœ:œParseData-vYVwuœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-Lbxk6","targetHandle":"{œfieldNameœ:œDATABASESœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"DATABASES","id":"Prompt-Lbxk6","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"ParseData","id":"ParseData-vYVwu","name":"text","output_types":["Message"]}},"id":"reactflow__edge-ParseData-vYVwu{œdataTypeœ:œParseDataœ,œidœ:œParseData-vYVwuœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-Lbxk6{œfieldNameœ:œDATABASESœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"ToolCallingAgent-GurdE","sourceHandle":"{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-GurdEœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}","target":"ChatOutput-zBv53","targetHandle":"{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-zBv53œ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"input_value","id":"ChatOutput-zBv53","inputTypes":["Message"],"type":"str"},"sourceHandle":{"dataType":"ToolCallingAgent","id":"ToolCallingAgent-GurdE","name":"response","output_types":["Message"]}},"id":"reactflow__edge-ToolCallingAgent-GurdE{œdataTypeœ:œToolCallingAgentœ,œidœ:œToolCallingAgent-GurdEœ,œnameœ:œresponseœ,œoutput_typesœ:[œMessageœ]}-ChatOutput-zBv53{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-zBv53œ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}","selected":false,"className":""},{"source":"NotionUserList-wFEb1","sourceHandle":"{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-wFEb1œ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}","target":"ParseData-WKjW6","targetHandle":"{œfieldNameœ:œdataœ,œidœ:œParseData-WKjW6œ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","data":{"targetHandle":{"fieldName":"data","id":"ParseData-WKjW6","inputTypes":["Data"],"type":"other"},"sourceHandle":{"dataType":"NotionUserList","id":"NotionUserList-wFEb1","name":"example_output","output_types":["Data"]}},"id":"reactflow__edge-NotionUserList-wFEb1{œdataTypeœ:œNotionUserListœ,œidœ:œNotionUserList-wFEb1œ,œnameœ:œexample_outputœ,œoutput_typesœ:[œDataœ]}-ParseData-WKjW6{œfieldNameœ:œdataœ,œidœ:œParseData-WKjW6œ,œinputTypesœ:[œDataœ],œtypeœ:œotherœ}","className":""},{"source":"ParseData-WKjW6","sourceHandle":"{œdataTypeœ:œParseDataœ,œidœ:œParseData-WKjW6œ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-Lbxk6","targetHandle":"{œfieldNameœ:œUSERSœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"USERS","id":"Prompt-Lbxk6","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"ParseData","id":"ParseData-WKjW6","name":"text","output_types":["Message"]}},"id":"reactflow__edge-ParseData-WKjW6{œdataTypeœ:œParseDataœ,œidœ:œParseData-WKjW6œ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-Prompt-Lbxk6{œfieldNameœ:œUSERSœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","className":""},{"source":"CurrentDateComponent-WOwNq","sourceHandle":"{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-WOwNqœ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-19rub","targetHandle":"{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"CURRENT_DATE","id":"Prompt-19rub","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"CurrentDateComponent","id":"CurrentDateComponent-WOwNq","name":"current_date","output_types":["Message"]}},"id":"reactflow__edge-CurrentDateComponent-WOwNq{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-WOwNqœ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}-Prompt-19rub{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-19rubœ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","className":""},{"source":"CurrentDateComponent-PZ8xJ","sourceHandle":"{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-PZ8xJœ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}","target":"Prompt-Lbxk6","targetHandle":"{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","data":{"targetHandle":{"fieldName":"CURRENT_DATE","id":"Prompt-Lbxk6","inputTypes":["Message","Text"],"type":"str"},"sourceHandle":{"dataType":"CurrentDateComponent","id":"CurrentDateComponent-PZ8xJ","name":"current_date","output_types":["Message"]}},"id":"reactflow__edge-CurrentDateComponent-PZ8xJ{œdataTypeœ:œCurrentDateComponentœ,œidœ:œCurrentDateComponent-PZ8xJœ,œnameœ:œcurrent_dateœ,œoutput_typesœ:[œMessageœ]}-Prompt-Lbxk6{œfieldNameœ:œCURRENT_DATEœ,œidœ:œPrompt-Lbxk6œ,œinputTypesœ:[œMessageœ,œTextœ],œtypeœ:œstrœ}","className":""}],"viewport":{"x":-65.48833753518215,"y":119.49034539812101,"zoom":0.5588906662759379}},"description":"The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace accordingly. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input.\n\nTo use it, simply add your API Keys and provide a meeting transcript. The agent will analyze it, interact with your Notion workspace to make necessary updates, and give you a summary of actions taken. This streamlines your workflow, ensuring important meeting outcomes are captured and organized in Notion effortlessly.","name":"Notion Agent - Meeting Notes ","last_tested_version":"1.0.17.dev8","endpoint_name":null,"is_component":false} \ No newline at end of file diff --git a/docs/docs/Integrations/Notion/_category_.json b/docs/docs/Integrations/Notion/_category_.json new file mode 100644 index 000000000..a84f3622f --- /dev/null +++ b/docs/docs/Integrations/Notion/_category_.json @@ -0,0 +1 @@ +{"position":2, "label":"Notion"} \ No newline at end of file diff --git a/docs/docs/Integrations/Notion/integrations-notion.md b/docs/docs/Integrations/Notion/integrations-notion.md new file mode 100644 index 000000000..6664991a0 --- /dev/null +++ b/docs/docs/Integrations/Notion/integrations-notion.md @@ -0,0 +1,89 @@ +--- +title: Setup +sidebar_position: 0 +slug: /integrations/notion/setup +--- + +# Set up a Notion App + +To use Notion components in Langflow, you first need to create a Notion integration and configure it with the necessary capabilities. This guide will walk you through the process of setting up a Notion integration and granting it access to your Notion databases. + +## Prerequisites + +- A Notion account with access to the workspace where you want to use the integration. +- Admin permissions in the Notion workspace to create and manage integrations. + +## Create a Notion Integration + +1. Go to the [Notion Integrations](https://www.notion.com/my-integrations) page. +2. Click on the "New integration" button. +3. Give your integration a name and select the workspace where you want to use it. +4. Click "Submit" to create the integration. + +:::info +When creating the integration, make sure to enable the necessary capabilities based on your requirements. Refer to the [Notion Integration Capabilities](https://developers.notion.com/reference/capabilities) documentation for more information on each capability. +::: + + +## Configure Integration Capabilities + +After creating the integration, you need to configure its capabilities to define what actions it can perform and what data it can access. + +1. In the integration settings page, go to the **Capabilities** tab. +2. Enable the required capabilities for your integration. For example: + - If your integration needs to read data from Notion, enable the "Read content" capability. + - If your integration needs to create new content in Notion, enable the "Insert content" capability. + - If your integration needs to update existing content in Notion, enable the "Update content" capability. +3. Configure the user information access level based on your integration's requirements. +4. Save the changes. + +## Obtain Integration Token + +To authenticate your integration with Notion, you need to obtain an integration token. + +1. In the integration settings page, go to the "Secrets" tab. +2. Copy the "Internal Integration Token" value. This token will be used to authenticate your integration with Notion. + +:::warning +Your integration token is a sensitive piece of information. Make sure to keep it secure and never share it publicly. Store it safely in your Langflow configuration or environment variables. +::: + +## Grant Integration Access to Notion Databases + +For your integration to interact with Notion databases, you need to grant it access to the specific databases it will be working with. + +1. Open the Notion database that you want your integration to access. +2. Click on the "Share" button in the top-right corner of the page. +3. In the "Invite" section, select your integration from the list. +4. Click "Invite" to grant the integration access to the database. + +:::info +If your database contains references to other databases, you need to grant the integration access to those referenced databases as well. Repeat step 4 for each referenced database to ensure your integration has the necessary access. +::: + +## Build with Notion Components in Langflow + +Once you have set up your Notion integration and granted it access to the required databases, you can start using the Notion components in Langflow. + +Langflow provides the following Notion components: + +- **Search**: Searches all pages and databases that have been shared with the integration. You can filter results to either pages or databases and specify the sort direction. +- **List Users**: Retrieves a list of users from the Notion workspace. +- **List Database Properties**: Retrieves the properties of a specified Notion database. +- **Create Page**: Creates a new page in a specified Notion database with the provided properties. +- **Update Page Property**: Updates the properties of an existing Notion page. +- **Add Content to Page**: Converts markdown text to Notion blocks and appends them to a specified Notion page. +- **List Pages**: Queries a Notion database with filtering and sorting options. +- **Page Content Viewer**: Retrieves the content of a Notion page as plain text. + +Each of these components output both "Data" and "Tool": +- The "Data" output can be used directly in your Langflow for further processing or display. +- The "Tool" output can be utilized in Langflow Agents, allowing them to interact with Notion programmatically. + + +## Additional Resources + +- [Notion API Documentation](https://developers.notion.com/docs/getting-started) +- [Notion Integration Capabilities](https://developers.notion.com/reference/capabilities) + +If you encounter any issues or have questions, please reach out to our support team or consult the Langflow community forums. diff --git a/docs/docs/Integrations/Notion/notion-agent-conversational.md b/docs/docs/Integrations/Notion/notion-agent-conversational.md new file mode 100644 index 000000000..150c6e53c --- /dev/null +++ b/docs/docs/Integrations/Notion/notion-agent-conversational.md @@ -0,0 +1,145 @@ +--- +title: Notion Conversational Agent +sidebar_position: 2 +slug: /integrations/notion/notion-agent-conversational +--- + +The Notion Conversational Agent is an AI-powered assistant that interacts with your Notion workspace through natural language conversations. This flow performs Notion-related tasks like creating pages, searching for information, and managing content, all through a chat interface. + +## Prerequisites + +--- + +- [Notion App](/integrations/notion/setup) +- [Notion account and API key](https://www.notion.so/my-integrations) +- [OpenAI API key](https://platform.openai.com/account/api-keys) +- [Download Flow Conversation Agent Flow](./Conversational_Notion_Agent.json)(Download link) + +![Notion Components Toolkit](./notion_conversational_agent_tools.png) + +## Flow Components + +--- + + +### Input and Output +- **Chat Input**: Accepts user queries and commands +- **Chat Output**: Displays the agent's responses + +### Language Model +- **OpenAI Model**: Processes user input and generates responses + +### Agent and Tools +- **Tool Calling Agent**: Coordinates the use of various Notion tools based on user input +- **Toolkit**: Combines multiple Notion-specific tools into a single toolkit +- **Notion Tools**: Various components for interacting with Notion, including: + - List Users + - List Database Properties + - List Pages + - Page Content Viewer + - Create Page + - Update Page Property + - Add Content to Page + - Search + +### Memory and Prompt +- **Chat Memory**: Stores conversation history +- **Prompt**: Provides system instructions and context for the agent +- **Current Date**: Supplies the current date and time for context + + +## Run the Conversational Notion Agent + +--- + +1. Open Langflow and create a new project. +2. Add the components listed above to your flow canvas, or Download the [Conversation Agent Flow](./Conversational_Notion_Agent.json)(Download link) and **Import** the JSON file into Langflow. +3. Connect the components as shown in the flow diagram. +4. Input the Notion and OpenAI API keys in their respective components. +5. To start the flow, click the "Play" button in Langflow. +6. In the chat interface, enter a Notion-related request or question. For example: + - "Create a new page in my task database" + - "Search for pages about project management" + - "List all users in my Notion workspace" +7. The agent will process your request, use the appropriate Notion tools, and provide a response. +8. Continue the conversation, asking follow-up questions or giving new commands as needed. + +## Example Interactions + +--- + +``` +User: List all the users in my Notion workspace. + +Agent: Certainly! I'll use the Notion User List tool to retrieve that information for you. One moment please. + +[Agent uses the Notion User List tool] + +Here's a list of users in your Notion workspace: + +1. John Doe (john@example.com) +2. Jane Smith (jane@example.com) +3. Alex Johnson (alex@example.com) + +Is there anything specific you'd like to know about these users or any other Notion-related task I can help you with? + +User: Create a new page in my Projects database with the title "Website Redesign". + +Agent: Certainly! I'd be happy to create a new page in your Projects database with the title "Website Redesign". I'll use the Notion Page Creator tool to do this. First, let me check the properties of your Projects database to ensure we include all necessary information. + +[Agent uses the Notion Database Properties tool] + +I've retrieved the properties for your Projects database. Now, I'll create the new page with the title "Website Redesign". One moment please. + +[Agent uses the Notion Page Creator tool] + +Great news! I've successfully created a new page in your Projects database with the title "Website Redesign". Here are the details: + +- Title: Website Redesign +- Page ID: [page_id_here] +- URL: [page_url_here] + +Is there any additional information you'd like me to add to this new project page, such as a description, due date, or assigned team members? + +User: Yes, please add a description: "Redesign company website to improve user experience and modernize the look." + +Agent: Certainly! I'd be happy to add that description to the "Website Redesign" project page. I'll use the Add Content to Page tool to update the page with this information. + +[Agent uses the Add Content to Page tool] + +I've successfully added the description to your "Website Redesign" project page. Here's a summary of what I've done: + +1. Located the "Website Redesign" page using the page ID from our previous interaction. +2. Added the following content to the page: + + Description: Redesign company website to improve user experience and modernize the look. + +The description has been added as a new text block on the page. Is there anything else you'd like me to add or modify on this project page? + +``` + + +## Customization + +--- + +The flow can be customized to meet your team's specific needs. + +Customize this flow by: + +1. Adjusting the system prompt to change the agent's behavior or knowledge base. +2. Adding or removing Notion tools based on your specific needs. +3. Modifying the OpenAI model parameters (e.g., temperature) to adjust the agent's response style. + +## Troubleshooting + +--- + +If you encounter issues: + +1. Ensure all API keys are correctly set and have the necessary permissions. +2. Check that your Notion integration has access to the relevant pages and databases. +3. Verify that all components are properly connected in the flow. +4. Review the Langflow logs for any error messages. + +For more advanced usage and integration options, refer to the [Notion API documentation](https://developers.notion.com/) and [Langflow documentation](/). \ No newline at end of file diff --git a/docs/docs/Integrations/Notion/notion-agent-meeting-notes.md b/docs/docs/Integrations/Notion/notion-agent-meeting-notes.md new file mode 100644 index 000000000..7980bc15f --- /dev/null +++ b/docs/docs/Integrations/Notion/notion-agent-meeting-notes.md @@ -0,0 +1,176 @@ +--- +title: Notion Meeting Notes Agent +sidebar_position: 1 +slug: /integrations/notion/notion-agent-meeting-notes +--- + +The Notion Agent for Meeting Notes is an AI-powered tool that automatically processes meeting transcripts and updates your Notion workspace. It identifies tasks, action items, and key points from your meetings, then creates new tasks or updates existing ones in Notion without manual input. + +## Prerequisites +--- + +- [Notion App](/integrations/notion/setup) +- [Notion API key](https://www.notion.so/my-integrations) +- [OpenAI API key](https://platform.openai.com/account/api-keys) +- [Download Flow Meeting Agent Flow](./Meeting_Notes_Agent.json)(Download link) + +:::warning + +Before using this flow, ensure you have obtained the necessary API keys from Notion and OpenAI. These keys are essential for the flow to function properly. Keep them secure and do not share them publicly. + +::: + +## Components + +--- + +![Notion Meeting Agent Part 1](./notion_meeting_agent_part_1.png) + + + +### Meeting Transcript (Text Input) + +This component allows users to input the meeting transcript directly into the flow. + +### List Users (Notion Component) + +- **Purpose**: Retrieves a list of users from the Notion workspace. +- **Input**: Notion Secret (API key) +- **Output**: List of user data + +### List Databases (Notion Component) + +- **Purpose**: Searches and lists all databases in the Notion workspace. +- **Input**: + - Notion Secret (API key) + - Query (optional) + - Filter Type (default: database) + - Sort Direction +- **Output**: List of database data + +### Prompt + +This component creates a dynamic prompt template using the following inputs: +- Meeting Transcript +- List of Users +- List of Databases +- Current Date + +### Meeting Summarizer (Tool Calling Agent) + +- **Purpose**: Analyzes the meeting transcript and identifies tasks and action items. +- **Inputs**: + - System Prompt (from the Prompt component) + - Language Model (OpenAI) + - Tools: + - Notion Search + - List Database Properties + - Create Page + - Update Page Property + - Add Content to Page + +![Notion Meeting Agent Part 2](./notion_meeting_agent_part_2.png) + +### Notion Agent (Tool Calling Agent) + +- **Purpose**: Executes actions in Notion based on the meeting summary. +- **Inputs**: + - System Prompt (from the second Prompt component) + - Language Model (OpenAI) + - Tools: + - List Database Properties + - Create Page + - Update Page Property + - Add Content to Page + +### Notion Components (Tools) + +#### List Database Properties + +- **Purpose**: Retrieves the properties of a specified Notion database. +- **Input**: + - Database ID + - Notion Secret (API key) + +#### Create Page + +- **Purpose**: Creates a new page in a Notion database. +- **Inputs**: + - Database ID + - Notion Secret (API key) + - Properties (JSON) + +#### Update Page Property + +- **Purpose**: Updates the properties of an existing Notion page. +- **Inputs**: + - Page ID + - Notion Secret (API key) + - Properties to update + +#### Add Content to Page + +- **Purpose**: Converts markdown text to Notion blocks and appends them to a specified Notion page. +- **Inputs**: + - Page/Block ID + - Notion Secret (API key) + - Markdown text + +### Chat Output + +Displays the final output of the Notion Agent in the Playground. + +## Flow Process + +--- + +1. The user inputs a meeting transcript. +2. The flow retrieves the list of Notion users and databases. +3. A prompt is generated using the transcript, user list, database list, and current date. +4. The Meeting Summarizer analyzes the transcript and identifies tasks and action items. +5. The Notion Agent uses the meeting summary to: + - Create new pages for new tasks + - Update existing pages for existing tasks + - Add content to pages with meeting notes +6. The Chat Output displays a summary of actions taken in Notion. + +## Run the Notion Meeting Notes flow + +--- + +To run the Notion Agent for Meeting Notes: + +1. Open Langflow and create a new project. +2. Add the components listed above to your flow canvas, or download the [Flow Meeting Agent Flow](./Meeting_Notes_Agent.json)(Download link) and **Import** the JSON file into Langflow. +3. Connect the components as shown in the flow diagram. +4. Input the Notion and OpenAI API keys in their respective components. +5. Paste your meeting transcript into the Meeting Transcript component. +6. Run the flow by clicking **Play** on the **Chat Output** component. +7. Review the output in the Chat Output component, which will summarize the actions taken in your Notion workspace. + +For optimal results, use detailed meeting transcripts. The quality of the output depends on the comprehensiveness of the input provided. + +## Customization + +--- + +The flow can be customized to meet your team's specific needs. + +Customize this flow by: + +1. Adjusting the system prompt to change the agent's behavior or knowledge base. +2. Adding or removing Notion tools based on your specific needs. +3. Modifying the OpenAI model parameters (e.g., temperature) to adjust the agent's response style. + +## Troubleshooting + +--- + +If you encounter issues: + +1. Ensure all API keys are correctly set and have the necessary permissions. +2. Check that your Notion integration has access to the relevant pages and databases. +3. Verify that all components are properly connected in the flow. +4. Review the Langflow logs for any error messages. + +For more advanced usage and integration options, refer to the [Notion API documentation](https://developers.notion.com/) and [Langflow documentation](/). \ No newline at end of file diff --git a/docs/docs/Integrations/Notion/notion_conversational_agent_tools.png b/docs/docs/Integrations/Notion/notion_conversational_agent_tools.png new file mode 100644 index 0000000000000000000000000000000000000000..c981e6c6645c19ac1a2bb742a868179d7b4220c5 GIT binary patch literal 134025 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 JDsJrm{{V5`Ab|h? literal 0 HcmV?d00001 diff --git a/docs/docs/Integrations/Notion/notion_meeting_agent_part_1.png b/docs/docs/Integrations/Notion/notion_meeting_agent_part_1.png new file mode 100644 index 0000000000000000000000000000000000000000..db32f5b9a50640f9e56ebadf27293d17d6850273 GIT binary patch literal 115417 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�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 literal 0 HcmV?d00001 diff --git a/docs/docs/Integrations/Notion/notion_meeting_agent_part_2.png b/docs/docs/Integrations/Notion/notion_meeting_agent_part_2.png new file mode 100644 index 0000000000000000000000000000000000000000..387d6f8f4525e11592faccb28ae846fde743e3b9 GIT binary patch literal 181004 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

@+*Gcv}DpV~%H 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

22PtA z)7N_CB_^HwFP_;L)_wa2zOSRj7OE~of=Og5Mk->}D6a@N{8!(kmm-h^$c~Y6prd2Z z)l}4^N~hQkpapibH`{+~)|S&{_$COe*+0!#&B#X#)an6d2 zc?eqn#nU4_w@Ov6nZ%K7LN zr%IM{Zjuc=7(uw;kBv_~xpf{wAIHk)y-1-aa8Mzv7wmhW@19eVY03%YgDs0XRo)=R|8YjvpCo!G01p57Qm)9n1 z?iwFu`2|rmV9hG~Q&r9buThu|g{o=eo9!4ebuS68P%e);F_&6DzUtp4L)m6Rc3{(s zOXBRL6tUd_>oSFiiMxTCSSi{L)Yo|hc$=}lVIi0x5-ckBw$%1lSRT7f(VM}Yp~ieX zul|$p2c)m6N1ql`5!py?RQ72?mQ{`DHlR*tPpw#F*?I8-2h_VESTfQCXFq+TrWNMd zo4@`^gNj_S6&p6gZ}0q#IMZ*IjLtmDcJ56albdFc>ZTTzEOvouc6?nD{=}4IkW69b z_V&i8{OMcWmvJAJ)#N4{q7a)m{P4m=Y?Sca&lu^s1%%etyO$xZe3SCh?aq5Rm;UJCU3CJ~7tQDA(~zJL)PdC_|i2 zF$=%P8Vo#3h2#fC=v&>N`el;x+7&7LwNxaXbX}ploK@5mCiJSeT*kd}H&w-~m^L=~ zElmbk%hF5x*QAIQ&h+;pr<}=IUguZ$ji_`gh0*=$V5Cr#>3jb+TtmmL9Ns0GQRl(= zL-ORz8Utzd{=Gg#<|}P8i`Z=;?c`T}Vw14lf`%G#A763d`q&Yw?K&X`FH94C zORSLktCghTu#bG$CSxWv-$_5c@~-S)yGGs(Li~o^mpe?xO$I8JZU|yuwTeF|B2Xox zdk-2S=H=#4u#(*fibb5AwiBBQJXN0sZcY{hB!cOW$sNex}}el3kM>i+_V(kXsdcBFrjtN5HgLHAby%>{1~Tt?Oyq*TBt*3l8;yaqIKfv1F5=UAMglTPT;N>fs8}B2_3$wT^Qu94>wF@oWqU7sq zYE#pC@bDWq0wy-bAfCbbL!oBo)}Qu2p!N^4m+xJ-a{r4bT$j?k8(-jB5qdKlJ%FJA zu`BM);#2xq`{^8x8iI@BdhE5&(6^DhEf z^TgjX__FVe4%!442Im?WEFjV;ol_0 zppGZuz?!oy1?n0agH`&HUszZmZ^oq03K`sHZtAO>E&2z3^hw;lpkjM_dor?1tn936 zX$6(Qv~*jWVdG_;(UvrcHQYp(fW>!EJ{-yXCI5Y-YSXxElajLn|Pl}+MnN{zh_Tm_YV$o zB^_DP1)W2)kHvW`X^{5!f8ZinCxbQraXlr{kkNmGciM$qoGokB^;rF$axHBuw7b8P zjcUS&I_^CpAtALa9|x8MABgJR86EVhWk_hH^r%q#pr;gRKyX%s^+1sA=2i@4t>U>* zA!Dtz{{iZG$z;1dOuVssD^hF!Qk&y#MymucSJt?j^`G}X;3j!sw*B>LP4&}Vuc)UW z=1B0~$|-i@R$;K%rKN%D?ueU$oKhpJDdYUWw|CDGj;1SY)HJFOh@^L4S|8%gZfdoT zhC;2EyCuoYR$`i{$MBI|m!atQ>GD3dJhgRhs=L^L*AC_hXR5SVR$wML60Wk{mG(Su zJhdgO2IgE~A#ay{N^qbI>ZB8KP1jxI7k4lls24vN9KRn!1TvwVXXKf_O^rRNav}=u zX8xq4q(pLTefM~()UX(TfjzG3bN4mL<`d9!8uuA}l}Tg51v-c3=L~dVYHDgRa>JWu ziE(XIB;(a%pv8T<9H$SnV1jxsu`h$7QsuMPZ<-p8cgaaw#p|8F>`tc$f9^Jth}fNq zp5M<01m)_!FF&_c_C}H>e~b9J(D{aqb!;hr=vTKqgfbsLNg^;1IW{H!DhiyPu=%lN zAS+7@dij?ww3nzLx8%dtm;sr9`7bl~jsbj5UU*%aV6iX_B71ob!9O%~n_J26;U|zr ztdD&7d*wvL=Y+r1YR1w@mPRpn@;Ot{9R5_D_3#I3x`Bnv?@SpS+3)a}w62%0)Ya9+ z$1IV#C50sgxh*DeIXw*>eHkPBcO~*rY8vVqH7M8s9zhbp{E4KV@9YaoX&}Xf@BfaI$=%rm@}5Jdf{ax0MNQn)`5;mbz$n{I#W9!|b<{o@26{3D6eX zM24V(8-3vt(??a4W=rvV5K(yC+IjLdBj&c`XGNQ1t1mtxaK5ZJ2*!*D`i;LpQ1ZGQ zxO_8fA$0=-8}+FQB}TfiRL$6*#pfy=;IEwlVq@fE3_MT&cAg}4U=K|g;ZL?b2?PUL z8Uo~{I8WCj|SdQ zI{1xrHf3&PDc6Q0qK9|~`6FjtCvc$a@4FK`Y)@9q&YDb(1ipY zQt=0pRh+ISnZ^hYYf<|0)>1vM$hvx74SvxgVXdn<{-{>j*)K69bS1$1X~nO-=4*p%q5QHqoE#XqEd2*K()l_>72tIfs+dh>xr6L(+I_{W9z4z2zUP z?~B{(+@u+m?wFK+vg>~7H*%I>{6h9dVO%8o0HTKu$nQFfkl@Y>^h>-*pJN}!Gmfe; zOtI|#I1;S37^IX=EllOTEDKxdiFRq9%oa}dk1+M#lQhMeJZ8OR%<}a9k7PC(G>W@SFmD}T^_)Y~P3NfIP z&kfFrJ%t#f@?dWxNaG^A@TddSNvk+cVYpBB3EjWNNC9Q&tm{L~?ga@6f#sJnWq>=t zVD7Xh3m>s4EbK|-r?2m-oj8I<-W8I+4E?cY02lW0)_W_?6i^Pc*2RkUY0#*4#W348 zXp=;qzxO%sHy)ph(0|SMDj0q@{KWIC3H;{%PGPB!;CP+yH=L1}HP zMjvQjCvY{MRMdHTa(e85>iow;koGTgHKO3t?a@_pW&#cacG{Dbnd8$D;r0=kNv(|< zw|~I%xD$D|K}e%An=~-O-=vZ5h$RI@Mm>4lnYs(~G4u_@YAd*7AF&^1w zXQ1*dz{^UbmOOEBOA%4Ww>#px(!RCEaeLuSD|op8tFhg`PyZ}Sa%o*qwLVfyS)g&RJ4 zmLVLS+&fG)*0xwEtj<(?PDKuY*=-Jzvtc;h&Iv9$EUeD?mE|{_k$J2jBr&CLrH<;; zoUgi?5IR`dRo4f}!t4@BuP8V){b6y{qp7mOvEn;77v}B;|Ch8AX%@@Jim`#Tk@ROc21F|&QMYG`k)&*>v$LO z2{VU3=hUBv9y;_@2qvTBXvBVJDf?CK!Z>Qx&&$V?vCV`@DFHf#W}+b2C@#yTv3O~!P9&X3#n+cROu*w z=0gK7Z%LPR#bA@X^mUW z*nvexzE0aU5m?ZH^T&E{p`&5C(a*002*}>73SuO!8r^a`Ir;$eMesZ4bPPaHI zD9Xs%-K%o`GW|%gHf->A(L20gXxkmKFL+x&=MJq*7rJ;fW?rm6qn5#J)fspt2T64ktzs#KR#2zlhC{<8y65z2r&6ro~(I zkbK|Ts_x>%;LL{WP6ZPPcwn%AH z3RYfJDFv%I^rzTUB`QLA@jA@n;!=xS^Qfq|92vqR*%zMUQPM~D4-?ByYU)IDO^YcF zzjgVGe1_tAb7WkA)Qq2Cfu+adQI2;Wi>MTtA7dMsK=YUgpn^tUYHzD}d zBBZb&H?3&8MCkzcJ@f0b=NC)*JBRl7{5~+9|5|VSd}4W%%Kuac+Fh;7$U1G+*42%c zXUxdy0}oa08KC12Zj;KmU%n6XJ)RlaPWe)vQ%Yr+-A*3?NcJvVuWoay(3s&o- zFF}KZZLjv*Ug8zgL}~y^2(ew7DU{U#0V!=3;JhsheVWk%Qun)mFCE@&(zbcO%h(SBevjoJn`C^8mEn1E}QF|MJ0L? zBbdATxuk((FxGE2VW4mP*3LZQjb&e?+qkj!K^*#E{xHX{X)9gx0$x9Q-39f$NcU6L zSv;}2-rlFri(0xbN4F^qW&Fu3X!us;rC$}k=W|(-6_AN^W;vD(Q3)Qqvc0-nA#fh@Bqedt&Ke7)R-7hyO#61W_t?m zTkrC?X*v-SbVmEpX43d?fR@9&Rj{K;eK#q9iEL1Bt!GSk*@0238Rj?+QFw^0``uVx zOiVF&svp-;aW~^h)Vxw4SN<6ndtzLW#ySo#9?yAVEW@Yl7i`qGtQIPM7I z#;5p2B98Q!txoJBQrrSdC9M4`WDdEzQc{~=-`2L9Ow(^QZOH=%oJj$?wA9abW3hQ4x8$H-kFZUOwIGo{F1Uu}0hu?7kYpx*dqm4Ek z$9t@wALWX^_iax+`6>pa)Yo)TYK7Ek3FJ(cCYB+8;I`u$FPob@-$BnLy(HO>92A6W zGx~Wnh!Q-lqtgp94{7|Iot*j$@qgTQ5z^G<&Bada_9lMkV+C-p@r%_*@d=b_QXYf= z=p0LSR)U^e85{daXDGeFI{!61NQ^4HB>qk^VURBq32*Q>vi}_EzbqqSq+0FMl+{?1 zo1|QPH>SSil{81zaoY*d?UaeKZ1VOE=TP_`IT=zgccUCNpG__bMSbFdaXDFcj7z0c z+#h)d5xU^k($tEZrpm-Xgk&HGi={Lp19P5diyEIHpm&NZ)N^VAl8|5#F+b;?N0?hd z!5z!;D`gF3`}_F|)mepQgnhgFpY`D&s^6DqfBJTc_za3^k{3sWCG0&1>D6GiZ!wo% z%RIm;8H!^~w|ZU>!voi%PAj_aCnvvmVZ{UjYC3N9kv`YKTNmR%{{gM0zFVoyr{HJI zeee9%UVdMLMwX3ADK_BrZ~eJ=%4?%gdn_CxhAaDhc`FZ?*3Z>c1`rXiA!lcmn&Hbb zeadOsaJUs2QcKEINP76$iFAb2X<=`ZzpFA{tHZKz$sCT6FA@4HYb+4>|_C3#8_FHv~3}rU7c-GIZ zY6D;<6iPTaVG=tV7h|tPF3Qm=#_l-jx9u6ZGR>a-@eSXWZaZnLeEcu?WtAFXF8ihB zugIhq)~XqRZLv%MHYT* z6+W=~VTuZIx5hkwdHfBA%6_`|4wAI6-lg=UVbN}JNp9ub*|wEU*_oS~ViyETqNmuP z(0mk?`jZD%TT4##U2z~KCtXL4Hlta-*&F+-AM z&b~|~{p6|C4KHGS13>ER>=&#oES!anreyuYG}9A3`g|HnO7Xl^&U+Jyq_p`7Q+0aq zL0B!!3`|X|umvYK^2lJw2YO z{!~#msjIdEVxOe&dg6N@Pa#>rCnvyl_6A8i(wpoiyybP7F;ky9vOg7&{Y@6Enaa@` z)j4rJum0=DR#j0+QUyk6#A79Q6!X0*2 zECfUq-u3sso!_P?Zxe@bw_IFp?Odo}w4)@JJiF=RbY@0C#bKGKdAo+c=`Im<60cd8 zCCZm#Gp%PCUz_hOp9<}J@4c$=>5E4v(AZ^nW-+wVDPo$WJ#U(qB`ikLvSsM56J`a4 z1=e#726Em%m#*chWu8vy`ijj8QLuGOma~#8tg}^QdPUBXa$3vfX3`kP>M=MFq!u~( zIyrL7)yq;>_=w5q)xy}vwJn3o(-W;N(@&oMSSAEfeM)=_Xgg{;n*0pRb}({w%&v{0 z$awyJ`NAEbEI5CNnZB6t%5Pid6hFLB@k>6wo}#ms)9~{Eb>ootXA>=$uJ8wUGw$pn zM57TBd67Hrg{O=zXA$JuG~Lo;08#mGUOTp<`OEHlg}eI;0J1)eB7Kd@zX(}`*shJLUP}o!7=TF;b~F=Nu-|IX@Z2eeM?+Ncf}rPkP4@4U*K#E0xKySHVlNUe z@rcVyM9%UC4UXR1IjGict2Et>_Lj3x?dgSfKeVgqi0brTbNe`sCGYi83SK@op*|_ zhR-X*amQ#&!~gcLZw@tf_W8y~JGD`Q4zKnXPs&{;Mn$X-gk|rMZQn)ICL|Dl6IE9y z=rc#SeSV7gnERj8G8Y-Epo3EnbJ|ptgr{V7g8POD6$1`+&U5ejqkP~0$bL~&Y%H^U zIhT0mvp6xCC#=Er@`axy>=Qi?OEx3o?t3Ksu1an=0<4cG>NWY>WX^eRJi6(zKLbSx z^KAfV5?Pw{q%U&#UG6ouk*6GqKR*7)H@#a?BpUxksFzbqf^`Cu^1|_d<2*a~&E_(x zf6hi?RAcD(*}N#8A)cgsDMh+F0EV9od!$v&Xy#$ToJK2@hhGi>i>28hUmRfGWOP#6%Rgc_pHnAuS}sxULTifBb#y z*`2zaZNbvErn0OMC3~*Yo_moT2V^C=wS3{zo+PthF)u5M%+e|{-85$_$lq0Dd*42&OJfjMG zo<9v$SDC&lgo8i=%89{F&R~w*&(F?f)c6u;gJ5kG52=u%$=IhRir!dx zX5I*+k9GEQm%rKNe!a2FyXTj78NR<0y1GAQGdwSQ)+hhpKsvaPddfcYWPtj5(cV|i zr?nM2OjjuCe#tO*ddptDwLt!D`TZG%n<7_ko7ozpOVy6P%ZY)j@yn8?p8Sr#U15hu z`0t_kH#fg`T$7Ol;wr?NTVx=Ri5PvC$YGkYGtb5a!X*#I;Wm4oI31d+> zwpQfua5A8Igm++kFdW$*I)eP@&`Lbn@2;=fJ7&2-AP#z0(F?Y-Gna|^rDHqP-d?UM zzhZgQ-&%C{p$IM`YenwbZu4&n0fpteIz8E@og4JeH7%FZRJYN{-DR=zw#^*$@%=Js z5$U7a`oz)s!>gD31w^B&7Bsb_4F!AIG&`I1Q~#Ccqfce@t#-i~`4@}F9-dkTXN<1H z{Mt$FK%4WP|zBaskPtc%G21EA`kvFgz$xXE#^w~$|4H`29OME-eMX-k;zQEI0$BJxowX^rla#l{Mguv+wKpRY7Rg^sULE;LlZ zYL|&h!!9z=7eK2@cGk24VxB!g^ka>68KZ3y_kq@fqVg0{hxy9~zKkTKpX%8G$;Z3U zi5}vo5gNu9fJF4kk(-F0>>?6pP8UA`Yj7xfU}+GlUBugfFvfD;c{W|VetzLPRJ<1V zwqk}HMEt%s%%I*>Hl1FiT!%*G^aR^;<2)b$%a(f|b&v&z8&y;3KA=Ii9JbB8AljXWzy;V zM{>W(g-*U-uy0GEF_Juu9W+wv`NV`?yyx?Q-R+k*r`#6ZUn0x>q-;yKsNB+s+nZyH z6hsxTI>QR`)^uFZXbf`kCi{xl>)%%m>fZTVv51`Jy3qHC6xOSV z+8rcU&sXuHCDE{D?nw2%syV~-pU|Zv+M2k0T0-nRh!7u*O=aL~v$A^tSoYbC2%p)i zF|Rs2kdpe2{;NQs^r!1JTgWcOO%!eV!GGBKaj(O7wJKH8(&*w`0jVbXq_dlwKSb|2 z$p1T*1S^R6d9bB>MPhFsWnasWmH6l8N7)40fY@6{iuM_5LRtr;-YLCU8DrW?bm!E& zuZPkV5KG^77>mp|YBiKSuKEq%%& z$3dR|o+DS341E^cy)&ADB`f7;oOo_+X1?L{t8*)ldiQQ=;|Uc72=tDGCTeC>+vtPh zm)$Qr*>7nIsqgEY=R+t}H5n@Q>Q9$v(ZY>kCEeZnT~?x1#i{WgGy zuHGwQn&m=`pP9i7gAH6yaTu|g_5FL}dbxnSu2rYqkc7STEtjV4zdCIRzybg}8$Qi7 z|DF9EG*$>UUQ+3cYALxO3o^HA)e$>)TJ_2; zM`-vA=rj-Z~t4R10bmu5OO2YP+sc0V^Ps-jjc9muav1tO%xtXda^pJuu!U8*>~@f<-{Gk zh&HvLxOjd%w>5EP$E5b(_vrnBw#hyMJgu8@T?C_gzz8!vYu$9jzi>V{Lo@ zqWpaQ6E&LoN3W=xa^LFBYLx!yfnb~R*_%vGAP2C1`~RdIi&yWfTbOB5_*qJ&5Q=j zGZQXMIi|kKs?3TJXPABJv71oZM9;iRk!YAdpXTB)-!t-q(mtG~Z}L^RO<-*zT^Bhi3u0t>_;+5l;@+y4+(m0wU0 zQdC?F0M>y}dE5D<&^#GduWyx{5?$*1G!LZ;5ra({gjG?oKfFEuL+wIE7sCn45?h@9 z84g@h{)?x-Hu8HwS2zeVn)&hU8QqXPW|(~GJscHXjHM8I`7!MK{Myv&8+YivlReGW zS`0OWE&HU1+DTw>j@aGC#$a-h(d8UTSWTdN-g3N#{!u)`KdB@`f5UejbuZs;olmaA zCXbwx?q)9aD?Wbiv+2B?JXG9tHQ|EUuHQbruNz$dn9-t|RA=nLgE@)`wj7>=)i@6F z5`FImXn5%n;ZrZDFPfwE>Y8S!z3o1P_fhER*#KMy<@DtV+IebiY@ZT>zoC(FWlZ-p zGBN_ia*2b%L6+CG1z@#S-5E%$3vN{)+4#WYrWVHMbg-s0m)lF0xN45Cogl4*c*{VK z{Kiq26_#5XYLwM9@lF2z;IZ{A=r?CTBIBDZ8$@g=usjWMqs{(aGqU8{$yXUx(5Xci zqZVwHD$mf#-Mh1SXp7><{F+7}nC-lZ)}h&l``x<&d!rz8>2x925U5~2B(y`iGAlrY zT1K&usn1j>U0Npbg8L|Dl>rRx+CMAQR$nv=Tdx}7r)^ySE5)oS$ThS4#VL``u6|m3 zs4n}j`iFW`uGR*NdenNv#L*E4SfC=qdY7j5xUin!_*5HLrzNb+x-I_hAVa@k6^A~T z(Bl>C{^Khp<=5KnXK)=Ijn!lNiRw9^U)%LWyE|BGz2&_qW<#xY z(2RqdUl!8d5XH(`yp7^BQuqfWJkNI!NMRw#=|u;|bYYnKmYkrboy^y-ZTLXRpSV{D^*=8;uEyqx!p;0kJQOFGmyRty<&PQj;$MWev2G^Jp z2hHPVw;(}vMUtg{v$E3bq?LRbT&2)w3 z?!&v=d95SGRc9J6sS$u3=A@v>bMLoU)4JCDj$6C8w_IyLKs10%n|HLEPTz<%ZTk7a zV;lA(0rwv3Ty_A1he(7hwM(<1dot5gS-5j24eAK`pN#|EaIK8p7 z?MvJi^`_5m56Q^eB7IU?`UP<)sxRs1s`M3Vv>^m=7U?jGp%ex0f?zr$pmIld(-xBRv-&W?IcX1JALXBShR(_Sd341u9X|BRfC z@?;d}EKNwc=-p1ED+T`)b+?7xLclNG7C%$Zov~kAA0iOo-NSp^x?mS0Bf7=wv3uqF zi#xykuU)u?ZkP!4S-D8&;VR!fP!Gt1-1;SGjK6vvYM@g4iJr6YWxLm^CyJimPJQ+} zqVt4Y@!Z$>#3J!p$H&$AL#-718Mt0fC|&oA;_T;NF)c_ivb`mx;jUz^r?XQG18Hyw z>B}bXCmRcpNcNJe1jxTu^a%soBW8apgS85(;3!3VV)xbBr6mz-s~&z_P=&(`W4r|+ zHfV3np^1`5npH?$tk+~$lqPj1qM?2tSzFOcFVHH8Og?}=m{szr+FqUL~b7$-ffjugcq<^+wkUtyv>Md^<#Sx>HDpF%25hnF|}5o9&*pyZnR(9+0$C1 z6ZX0DJw~K9MgHOPu|Ueh@oe8OGRvY9OI2=av-WdVeHlEXaia8j*P(WyJT^JU7@5M- zNwJ7jGnWN5sk}b7@x=Bs^8vrf2$$pSYV@eiePHA{eV#-Po+kK#>R1XkG^RR%eFVe0 zc>4Wt)ZQR*bmK0uU~jx$QE|?9Z~Xq>PGaW_@V3C_^HnqK|}%3N^=Kk*x_t#b_r@Sp3Yz3 zymon88JJd2{!Wf+b^fYTL$nTGd*a=ua}=|AVkDqYFkjCWOR>XF3T+xe$a#zGyA>kS zs*;s%-)6YKiif)=!KXaL&h+es1WBFgCR zQR9e=i1B7ojK|z@ugd7M0jH$s{U2rMK>O33`<8K5&ZHE_2%G4F7s+y8ZKcRd0--S7*AhNPT)J@sj+;C#Jd6lI#{uKX%C5 zsfn$yFd`PUr--hv{5@-Gq0(LCq~Fov>Mhs8G{(+aI6P3^{8p)1=hD`kxRexqH2Dpn zvKt>HARQz2GS0Qg@PfMvw&PAo=lx z_7fZ3t*ys2LtJ zisFsU<~VNe z4{TV_j?kcY;~86=74y5q#F4*wom-SrtEpxv)3ZV0VscN6T>LJzsx8vI9rNl(S@VUR z=f(cT7!3Wz^Ouuw0jRY7cmgd_dq{F;i0(EdC}gRRENeZp)%AxmdV_tGPWo{??GhsIeBz9P1b+mBld#`)UL zKf&%@$1_?kFjmG@;gKVCl+!v(V&KJ*?VXVuW1&ovG{{N*c-qBDK)1`v%73iP@C%TN8I99@?G`<+OB0oa+MdfY5`E}-?ztb13b^5kzd zuQF!ye1`|2AGd!H!#b<4N&pHGmj<9z_b-P_(JF#Uy^o{)c74!^Z|ldG{pLRoiM=Mz z=UY7DMOoV-5E<7bwcJYV!BSd0wKa~rytbN{KYZ;mybDr#w?3MBw?EFEltH49?DQxQ=zO)-)7>zxClr`rXo5QM`Y$h^Mub0{I2wIULWZ7*o|`clvO4E) zRgEYBu_fIxp!8x1aqV;3n+`>;FYoVku0M`Vp#8?5swJ0|DSO`biRK@`krO|gq0ns$ z(L0FR(27Q>aSj#fg0wkMpga0SwO!v_{{24+HWpgG`o=t-9L}QIkO2l}f7;*)&M!pm zgBwWVRxDt2P0q0X*^N1=s$@{s_;i3T6J%RMjmYY3`$+B2Uyg-3X4keZ*M~YS!{bg{418x z+ZV#S)8#tgC-riA)v#UdQ$kQQNef+hS^MLY(^FXU^Q?-BX!%eDfKRI$S7&8=4d_Z^ z_tj?rRApS9aCPhh`U)R>uphi4AJmiCC!%FjBQ2$^BvnpCcudcGJiqGaJ87SjXs)!Li zaS5E=e|lV9g8t0li&-0mVEnig64Aa_lqr9|{QY81+bH1K+0Ymwm7{3{{}7y9fe++f z0BP24m@8Bi<0O8^W!EnxElI`&lj%;%5gPP0mMN@wB^(+Omf%bi0)Of~9yc5~>9YpR ze=a0ln34?-S#UkBmc*|A;p(ztk%4R1eU;3b)er)E&CT+K_01dG?F#9g=fz|tIHGTu zY?fN2KDvAY^Af>8prI%Se#uF#cluIdE$`=_zpPLSw58GbCm+z}Oq%mE{R+q=*+4** zMnUnVXbE)hI9!>=Vr1ZK7qvq+a>yg_Ui^jHdpks&avId!DfTDjs}Kt^_&=`;pm^!( z01mTBMwyBYVxtylyv2t}wJZF4QrKVTd**y5;{9V5!*b&e2q9;S4+RX_sXK`k{yj%p zRewneb8>RlD?)5>K}j@;g9_a&_z(UCFkNqKUwRK8I&0fq4uRwViN8P@kY2b}vRypqeOg^Fd}a(C}TfO&_NrY*?7adqc*@5g{N z@=oMo5xXS6H0r%yxf~W~ufvDPh##9%z0<5a?DU@zsM&ZXW6Wxeb}KHTurDg(oxuA6 zpqWVxVDhU*&ouagTfL7sNJ!1J$w1G!o=g8jua)MxMvsD!gzllDWd0zKc6jQ}?U7`w zYUc}Y&=5UhP@=Js6mZXEYiMf9($%K|<}WL!cim03Fu;(lhe9223cUZ?9ixy6m?@o` zEg++{wuAU{XSYVw`ngy%pp~vZ`cPG4DnOGsL|`kszn^t{%o!JF$o?9rd4fQIfKm4W zNAA}=v+ipcphkB@?GG=s_Gw)2P9sN8A$xoR??Xp+^MEBB_hXSfLKMmrIHq7zVDY%J7%JkVC)@O${~iUUx^P17I%o-30( zMa6x@u^Prz|F6g9nWt9jOZ!B80sy_eXT=B(eS*^BQPQUXevdCwm zQzt(4yH9mK4!tf#N70nn{?K%S^>W%VC$;wez^F;paFu=YAVsZ0p^aMtU7^$uaiY!s zrI4QqKX>ru#kD@=waF3!1;oub9_2~B!lEJ|f4FaqSB<{|1SF3hs5`24<(91OXdJr( z>0%Xg(tQOKChvWpM+5c8BbZ~bs<;+lqSsF=F01?FT@^$k_y(mi&_k50A5wl&MFG z7bfc(KA{GfKC;SqX`t@$q~@Jo#nvte zZt(4Re*T9!_QrxL@hSEzM>GNNZ?Ceht70na2QlX^iL&IEG1O1Y_1%rw`4l(lBz1??Wz1dn%8 zS5Q8_O!BrNJa;KTUgQFqO3ufmRF{iT8#?rD*WIzQM8sjf(>4UxF0Lv^qOh#{u`YpK z4in%m@X3Wbq*|&3o5fZ2mXVHy)ELTdTSVddCLD7qiGTV|{p0~`rSch#+(hTdNs)Xq zX`_I-rux%~W4a03M)PjXNBs&{i$lXXDI>T3uQuGc>N7{Au+9hy+fo~)PH)!-!2doj z<%m@g$O&X=Pi>56BC>SP{NI+Ss>i59JC&XH;USA%Pg-9cFEh%@*H(;e4$) zuJJEz0bC5ayz+l>5nv);(M72%DCqY_6bQ}#+HmOzX#&j%LbTjpAX3e9KWjt&ZC64I zQ1$=Y!Gv%{D*wZW4@#`g+mqLC^Ung&4htumVM>lIGIEO2|F$tm0;stEZQSwV$&YVm zW|FO6zqju_CUo{j+QnhJn%ZmfCgguGc?f9#fg}yX`CsAy-iAH&%Hh=q8lfAze-QQ3 zaD{b7LyZ^ME#&PrgVyFgL&^VTWRNx~NA5pD381(_E-@k}?n20=B_M+lluOP>T49L0 z@(^bukx>IjsPk^;r+WY5zr*VPJBMtVdCuofn)p>KOgf+>VE?u*u2CJ4*Vrh~Vj>z5 z8Ik-y99qKr?+g1AhtK}E2m-0k$cndMMKjTo5&+6}Rv{XR+ zi9Jg5U-kll{PO_s(*soGw{NOOaHAe|abI7Njm-g@2EaH5M3Sh!zW5av=xcH!ATqEg z>L&)`mQO4AwlDt+L+*Zrt}q9vb_gj-=*pYv=nO&tzVwamxS(3Lc+74C26S-|VDQP; zHwwWHy7@Tu8Oh_Onf0mOzO%qxu;o}($0ReU@B8e(2e>W|6$m}VCJCGx6$hvV_W@&A z7VZ9vRJtV{Y%htRZc`u%&a(GkE7;Y`Bqrl#j1=?Eo-(9Dfi)tcQ5`q3F2K#f&uh)= z64GPN{W^R(Sqq%@4&3lCL7w1q+4ahlqbkBH_k`!Wgy~o)#z6bzdS&8+Y(q3GI%?S9 zdhX>%4FbEH8a*(>=GRrqmw{7Ua6<7TxTOaJHepO z%h*VoOwVYcLQp?0_PN*uyw0053)M}KeN8()5%^N_g&GeiM!00H@~OZ#vzJ6qfUr(m z{Ti^H{RF~$VF(e;yS6(`aEWHcqj92N*b3j*mM>Vdn2v^bod#K@cwJW3jvbkfJmlZd z7`F?9KT?F8RpkV#%tRk!n7~8FKB>jjPY7qnI`ekRam&aS*kzAyaEindr-FqR9b+G< z2R^lGCfB&2nsy_^bIc30mU&4|NuHuI#qR_@ag|$yjFW0Z!M%NbmKE)ZU$b5}w)zgh z_<Mem5wS?Xf|>|Af*kd5Z_Z9h#KMBm=ozL7q20mcNIcNW=`Uvuf^u_q@qkgh45(f7x znYsk^)~8HRhjzvx$U1H>1rSJ$$_)tWRf8=xjp&JpiO{X^$d5k%kd=EhT%Ld~ob*pp z*T}S{w)#ud^09x|pd$8eN9s4#5Lon?)c$s~P2xv|Kt zY90FRmo#%T)Pd$L!|YV(X#1!_W&3`6kKhN6Z*kAFuAhk&NxbZW&OBudgSVcz{^;{OaqZ9R zi+#K|8?Nc|XfC`#MAlf`az6d&s>57a5PFoP{nb5u54b(*nr(KT!_3T5dxx&0pM;V# zq|pHZE3;w2$f=^zM960g+kbM9pM;ETeEWg+U;J4B$MFCY7Sh_F^_T44BT}fA9Z)zsFDpZd;~B zTFgB1$A#-&Ldxic4XHtuBa^%ZKr{m1;xcFv&Nrh^iaNph@tDC$Lwm04lu9+OE}Zj% zVqJG>!<)ImSd0hZM~;7MqxpI4#DAtl+&(1xO<0HE>@9Y#%QhIf**C>BsB+1if#t@p z9{6|sn`55x>aDjPD^iyknT0U<3MuPLbyGpDIDo#hbKp?2$N=9z6k&^b(iRpM!-iKt z&0|nZUZn+!ij1P9U@9mY)J&?XM#3+f+hj@q0bFV-M&W{=>KAoIBE3I6z5g`1RuDAQ zdvhlbNBU_x5S942h#)2FM9s{}%xwSO4ln9=oH>%sA)Kxl%_6pkO@J|dQK49ST3&Ig z7#+!vQ0OPtWko&ZArQhA!&YwH80)1WRYvRsFkz@^t~l9SrGOBb_@#)-@haK}aq0aR zGSYHc8AyYOCW0SKd@Yw6r?iw|{1W=A`)*R$Tf9sbCAr>hX?dU8ei^|0NVvfN%7DSH z{Tl6UihPcb^zwL;wBoIbOfiK(P?s50Lu=brWi{LK26xt$XZnUC{1h33uK4&1P2FI_l25_R3QwbYaWi8UMQ)@8Ze z2+FnpJ?f1he9j<*)!n0rBJWPukW|Y5LeO}jW~%9%5}=n~_Ry8dZIDKHuZ7MQu9-u)cW-U!KKQV3!G|f=wJ;sy7Eob0? z*EoB&olnoeqgB&w`MKM|$4dB!C!;eK65nA#A7fv&}8i%44^JTi7~UeH$PXx*E;Qn z1*vC+5>`l8W)!U|2Oe5j?2EP>$?C!46kd*Qi9Krbg@!_zXa{N3VMudJBUl~B;%Mv04~UO#uU|o4IzL1On`NwcS8A7Jdl%);9tH<25>C$v zMudV6bz?*|hcGf1(iIz(B9RHe*remP16srUX@m~tG>&0 z3JPfY7$Z6&%Q)zFas#ISkFRjw4dPw%&Nri5f!#}+F4=W;&A*Kj02Bt(o}|Cb zbpfd)UuGckzw(p(zxa9ovcq?YZaO^Pw+W0p`#6;sH>Bpt%{0p3_}%?m;Re$pT{H-le} z(4uSuvrjB5TLFRww*R80Z+kf(^POwxtm~Uf+sq~?wnACuR9`40dWkx zU2pKe!uj5P;H<=n1B(D5xoEE!nHcr1i@9NLg!u;{D)^ZFv+#S@`?pKDPxzh8FoY># zh}Z_>KR3j(tNC3L=KD7*n%&60yvcw0;)TD&7D4JD5P{WRWn{KVW##1YB<9)iQyo^4 zOjrjA>k@f1=!T1VNx!_)(U~emhZjtEBrAg0Iy+5#=@_Uzlvf(tI(?yTCocy?*Vw&0 z6W1X`ZrX0{B$c)Mr{TdjK^Yvfa;tak{iXVbbcA@SQo47ZFzG+-C`Pu36~Oml8%i#D zRv-pc3;=27LT!NJ8t6A4|DechHWP!eKP0h-{o<^G0<*&N2%B1)l&1}V z=dbDBo#8KGPSv@p5MFU3F|=MV>Lb|68^@2?hGY1MzpSWifJAF0SjSx%M|_C@d?%g4 zNIw#Q($bS(^+R1nH^1zoQEEpxfnXmRN&@x=aA?NDTg#2tpN5A=_+{Wqp>9x;*VtP> ziIoafG0x!b?jXHc~qI z0~I{xuNDdwT+sdqjX*Z_6?0Ok#D3@tQKEpu`Isz#^(&^HKIF<18_$DEl6`!e;~x~1 zZ6Cb$gqN3%y|7P-g7WU4T#v+{NBY?yHyevV*wmjO()?_~uL&1aS`MynpWJUMfGS6z zp(R}8i|#&%rNjGze?I2$jrQt0iPtl>w`aw>8yf?JCgWaY_Jl{WCY;4BP2be7A7?Sq)Kf#|9{a23uNC=vcyDzj0ou;I$5``kj~d^};Y?;_7Ltfrn;+^(|_P_Z7&as63?CXAX!JCMR1FhloH4>4xMgTjZ8y3~+ z+1CQec4Ba7TeP-tNK`{7Coj#Ng^lG2qP?wstDbS?{vWWa^X(zXlk2_UV%ArrxhsL6 zy9EEO47r`%XO36~5KD{M8wW|9LlW+{_Pju;ay05JJTf3U;!D&MUOa45mg>D)x$8(? zmfgHFxA5V?b1q|im;f8oC_pWAJPtT;#5bbiy29X4CBRD85qA3i`<-2+q*?z-uAi#U!(+l-<^^UadiokIQr+7}Kh{Eg z0H6%wozKmGBQ)!~_ZnYfN^9Fm4e!G5vfijOKciAPl5B0wD&bCyyU*}kb z{(m8N`@YVtfnp`elGXeroJ;$%y)qJ6_~Sw}oj|^4d)n*&y^sFC1mIkhHE{T3HX!Cv z=ymyY-Y*La3(5-6zNMw8ANW20f916$Nx%m)VE%M?cqp&1d(~$v>pD1f-@#`pRPeh~ z=dnDhu|N2gmX@4z6R3YPYV+dUgbP8S*49onl#$NTRj~mTb9@}&iUJUB1*iPn*$2cT zvKv_Y;9H->vx<@$)AE=;k}ZLhv=Z=;;5>iY-BH9{BYbja#vM*1>W;vYYTiLg(KM!&;LwMe@J@u5||bO;w3ov zXm9dQ0F1(Na&tf%po#eK?2D8X>Z7qFI#jtB`XW61_nS_~tXz3*_y}cLRoP^k23o7E zP!&?4flk7@e#tT^q!Z48!3<;wr|3u@k{phJAP5?Pm^3J8M|@Fw>%D-Zstnt&IG_^5 z3UCf%JUk*wX$IH#at{^F?ek|#esSS#cZNV5O=JNjdp+4f!k0#4mf_@~w7lqE(Tl@& z^=)(`{i0>EqkYM&EZ|Y^u~I-(uKhCkbjkWoX)_mj@j0vF#E!{?G;t>J<1i)AM zle3?e*LSPUg7?BQNVmLy-HIm8cWvc;0Y?~0)TLduao8Z++Da(;U zFKdh>@#uY`*2TTeszP?)-ZYL89by|D7B#O43m|gJV;F9Vy$f^dVyT#HF&Xv$KTBUb zY6|KUCD93ndOHZ@ikT(r$=Aq<2`bPBM>!aGWp4l%+#|V;YX$rQnCZkRmUnwp>Svn* zX$PdD8rE4N|!quOyKtra(xcEtDK{!1>PV6#t=YkO{xI1RI zMNb&4BP%T-XjM&GjHpQFW#injqO=Ob*Ql9PV=YM8I+zJf&Ut&EJb*b(N4qDzqX;JZ zZs@qWFC7+E%T@)Ie(@0T8!c9?kYHiXE1)*gCn^M2t?C$02Vh4o@tqzsBDd*}V{WNp z9{fSC#t|59+g;p2tBNCjnumBNhO5nAZm>E77!H18gik&(voeNzjJr-*E>0X$w%sMH2$n^nM? znE-f%)@F|d?hjZ_eofFBIZE-EeH>=W1J>5M1ru*UVWk*TPxZN^HM5i}snH=$(R`o&;71W{Y(AX?BMHfQI{jdj>h|!>fPH`WS#>1)6Et z=U<+Cw_@CQIRtBqP$~Ey@Iv%&%1fh}*$Zi#OD^A402A8K&vLjZ()NFr4blvXneaQ7 zyL?{dgIE2xg4(j2Lkv>6W@`np-@cya&B@G#bbOY-NegDmV7u{eveUajIY6(rqI-iX zP^;s5sU$F`8TBQLP1&>yi&0Qe2plpXJ{;%seMsbw15f##$Dwp_(CP>>~uLtjD+Jfj3r?#;Q;j!vOK|B3My0#HWXO<9TpMQLO?o=}-Nl z8t|`BXJ_ySZL9qLCW~{00&V61kSesJYzM|%vZ27*KLQ(UBZj^xLzjm5GSZu@jDO&O zVEi{u2BnA-O(LYcH^f%}>Q|@3)v-etQ1oYum4Seon20n^HwOFG7rk)zAqkl0t=tNb z0I49SL#E?;2NtBSD(Foa2%2^qfhi1GzI6ixpY-(6fu_0JL+I8k%*_5OvJScPr0WwC zT3{x~ikjIi%PoyFIYHWoH+qEFwR<@8^VAKA76rw;C zL|*VuQ2b%zQD6WO>edj1Emss3)H!yX_L}53BC8x+qg||6gCbhVU29ZGIPM|r3Mw|( z43>sMd-72tY@@g8NnpO=P_4II`GmS*){z+JOjmrl628R2#ia!QfVcsE z9^OwqqA7&y41=N-2mOm*T@qgTXhi9y5YzQ}bq;xWN-M%8d`r@RkNtB**7Tx9m>v=` zH5>>HEh!rY7+I4-&3CH+DG2TeKl2E_Kj`HNh(2lFF1)YBAd^E`E1^R0FVJs?9D;GI zAorFh5QDF&cq|u*z3;v|27Z?;!V3L2j^rfE!K?U}GFh zb*g)~%u0|a(Hc-8g3O)Euc#5rybxUSM*e2Jg>`yhV9U$=#LV#*;gS7QWW-Ta!H#p*LPq(nF{SK;Va3=z^Cq-k#hzpa+-bt zD-at&cQYr`kF^(G%Dp5YPuT4)Zu+P5V~1*Fq_T*h64~X1F`LI_!GC-ehdss;eU$5af?_;j5~oB+%oXo5KQ{xMQ`W_R6|; z{ZyH7VWfF3i)qhkr2NmnDnr_~Y#Y7CzlBQ~VFey;BzPyVaj6mWyI@^%d{}IFEv~4RVsW{`-#34)6ldV3=j-KsyB5 zzHH8a4O5)@@u7q#y~G$pFzB3B^$UzyKX!7N$AccKnkRf^Gb)VL4IMmzF1u zEdotW6UKmG0U3CRdoUTkrn(ja^@O4S_XTZY6QkghE!OMLM2 zo$j0KrKnCd(Awz80n(LLVzU~ygcBPL8+px84tk8pca%STXI^Oc%B&Q z#od+^E*N$g!vcGTPwO+A?Wo`#$V>F2SgWO8M!?}w%McTtNPs?n{v0&E0C|BA4GpX4 zD5}AE^QMy=i>zzt!J%Rq{~#K^jFvc;O23@jKFCT2Llb}%%0Qy?-yiYZo#%pqdvkv4Gp{udEPb8X~m*mBCJst+mE>i(CyBUm_* z&c6n|2a2~GXBtnIJ0swywe}@iXsUGYB+Ef>zt+-ZZ`oyzh|4g+>Kke`&^fG#(&!k* z3-VO3n*-J<20<5uEpI@!p3h$+kn*xM7ZGu7djWe>EtvC&FPeZrlV4RgsR3{-UK?hz zcl4M^izJ4uYU-$^9C2G&!I%;Uj^(BRLlVC_gu=M9!uTI{CN2?r+vO83A^P^OP`UC$ zS+Wvne?6n2Bm~+?bMMYmG#wbZSm(ZjN=NuWt7IU_-KJ$L!Is;RQ*RiCXneY_;!9gS zA1^SjWF<(Z3IFjT-XO9q6A?sDNT7F}I%{X|rETSXxd%87}?E6I-^zu5U! zA1MbS7I=m!Xrs=<5O}TkqLEWMU+{hz#J^GH9D%~?A1)BgTr}Bkb*ZzOtdy`>S?R>7 z>5x7sG*q;)$hqc-P-6UScL{tr&uD^;?VA(IzzL)>+G>w1Z*4}W$<^;4XYH^ z7PrT~dcaPazKh5|7iE<>eV2Gn5ykJGU6l?>{)&^>x(r8w`&pf|^4qkA+q zOb-^9%M=+($o(YlHG2JBx|eq!A;Hs(O_vFtsMq?m=#}Ghh717#o{SE7JmlM(Qt~aT zg_!Jw>>HG7!vzf=UyVmBKA@TT#&GLKf7x(DSi&R z=iAFOz=G6-*X6}oG7VxJV{krrCphQq+--BanQh4`WdHl)XBL8IQM(0Um-s-Y@d^p`vK}OwZ34F4=GMtzsQn!{%Py565&xvqd*%)1*;4{9i zeUH(`#k1niOi6dp%dW%jA5P^xuZ+IGnY~_pphiInOQl8YW=x;{GU4f+HmTRfk8X-g zS=GhNl~Uemv602|JCFVD%BaqHUtL|j({Xx!74Q80kx1x)&4ub|!%;|@>07TDdX+jfVi9s1r}05D{fh;_wh-zyM#=ErQH z43NM(Jb*2O5Qq&3H1xZMX~XAIJ#e|YgRRQEFqTzLlZ2>FsWs=yV zC5LIo%=JJ1{SbN~5UrnvkFx#?mNj!}^oTPAH-5vUD7TY1XRaepb_H%Lz84rVHa#tAq7a{^yM9cBLVaCv8#fxIMS&-)BmFo0#!cvwXH7LC zyQ=D?=NkmL8zwxY_8_ZjY1FR?!6ZmHC*yQDghp1C`b{VL~3Ec+B+t zNq$NZggJbSBMoW+88Lv8SD6tRKz&&YxXIYp2!X`PqH9-mU=+|fpYfT!8fX)UuDt(W zip?nSv^v2HyDKZBa!kJ8i@QEmn3nb(=ngb(kmz%RaEFkgCM)HkTI`lOpbTwn?*DJ- z@jWF^tPbF?V5kHclD{|&aT5WfX%=>Jz|Y^WpFdK654blczg*~>0-x!bhGys(OT!QkkJvxuw>V z`)>XIr4wvtO}5$O8<&6%mu?2&-c*-nvb=5NAF|$%FjOD4^UEzsKtH1enT-3MS45x^ z#67spZEN-=LESmg6Op_H9auZtzX8)HRPkXt*8I*x6-R)BPg_hrjy-)2UxsaMV^ zq#*0U>fe628GT1Wbs<+J&>>2=SnP!7tYEBOvT%6$%La}QPJg&18M^2^N&CZI%DHYm zRfKup%)Y_XGF5)VD4x$UX6Nu2*r-NWAC?l+aW9Gn^8U!k%*gQlb=imhq2a*cW3a-Y z`%b~zskDlkKhT(*X&R;h zvlnkbFvbxJmT=iCdoQF6fuP$Lx0fBHe3}K^i?eO{6DcSu!POMkr}>Lv035+3Oi^7^ z*5})s?BZgjcn9$Fk5(J!GG7N6`nF%^>XI!OI5zJ!Y9YGlM0A&X!MH!!F$;9-fQk#& zp6fdI2MAl~y+5o!K9r9~6P$dqMB3Tc+3Lh|yc5eUr+|aH_=DRhs}*qI6!B+5D%^zt zG#C;s=fEDe;z+Oku)I57ZhdFP_JBo4R6yV&j7lNB`5{0Y?&~4ZzNl}9!HoUxltchA zSAC_7x51J<_6)Jr+ie3-pTBS-8VuTAKve@b5#9uo2M!;FAdGEeCo zou_v2-TJ@_d{UP=^FOHToZ<(jkpt;%QzY+2T@iVj7Lw?+6$Qjd2Is&V$lox-ilGgk z{dpzRSw^HyVcu<5Iov5t;j@LgpdeD~>~hMue?|JIkV67(wTa*2qEXl2r~TZ9DdA-r#F3kaOvoOR>gaeKBlo0SzklE>{ekA4#Y~Syhn?Hi zC!IgigwH;aXKVM+88-iHKid4P#2n*X7xV@BDL+T!r=4EpJ#Hao20iv3ZKQ~F!`URe ze4u>EQb;vQMd)O;557W1y6)WL>NpwWq||h#;BIEOI>H&hfN;XCOiOt>&AvOh^6ol% z9vf0^we2!iXVTyj5f~jeYB^rwg;zwjwsNTAyPihpTjv>%NiaPzAltI*pu#guf!~wT z%1=lvkuM>Z&uyJ5-yJwx4)td2G3+_X+dVk&B3XFy+{)2c605#^F!XtuuvCzz2X4~8 z&Hczy@bMyd_Z)_PFqXkE%l^j5t{A<3lz&Lh&9CFjch-aY4G;O?$-hZ-9JJUekqjNz zB{0qd)5Ef8ohjt>;n>MGUkV$ErPO@n?c;Cn&*mdZsUo9RM(-d6llcnXTAI!yDm|yE zw<8HyZ@wtQ?U;CO-Ue%pa0rmGt%mR*gssiQQT&)&(rbjE{Q%qRbLLr|!AMj`E7h*w zoy|6juz^GQ(5{`+<{&{aADa_lp=0m$0Z5m>pRPML6XUqNhFG74)$$KIp01Vm^vSMt z?bS{m35V}p4H5X+{A6s&E1TsEX}n1EK)C!gHc|Pv;et)QT_*H#uwQdGk;@8ky?}ei z>2JG_)@KQaW)5uXkEat`?;l+f+I#>H+C#R!bY~jG{i%(mHuZ4lLRuxpa*z;mrqZSY zpH}$>x8sH-hH2N}>Y9kex0=l0tf{AJH&svLpS;Be)HN{h7I@Zn6S>MEoktrt-!!m6 ziHqZfHv@jVXYzfn)+ciHGU1_X+1Y;OkI*liP-7QPOq_CTezLT+rq0Iyq07E?&2FG~ zCRjS%SI7+g=te&N3Tf2+Us1;HFKIS?9l6p2tmaGY&;ePiOl=ZyiSiLrDF~&t@YB6m zpUOtJnd}qKt<&+P`IDZ3Fknk|rTd%w_1CvEcDc2N>A#s2L70cjh*Fo2ruKyEmMAIJ zqK9i2u2GQ7-}W@;+7XXAVx0E?cfy`^CWAHiEceve@9ailBWeiQ%YGmT59?S8zVvq67whws2AjetA8gG529Q)sXh z8Ff*zxxwJsC;prtq)`lgPBdj@JkhGY8sOfcRJiA%-_)wgn_@3yB*r}a91#8bv!r)E z*-R*mKNGJ*iipWa>g3g>WVX%3>r1_;U7WH}KA_#poufO8_(-NVE+6Z!UUqu4$cLP2 zt3!GQp6+zvuzch6o^$PcQ_m_qqw8ccspn{SY{K?Dx!m`|rqhCSIxet*n=beDq4UGJ z2e}UWSJ?BwayW~cOEoQbJS~2D8IpUZ#*JyRXILH5b)ghaUvsH#PY>s8&El@+cw+`$ zND&E(6nuV?y5n_kp7)5HyT<{=IT(y+dg{pz6W$;ZI{4mWs;B3{&J~eLQ* zPRy66a&~s<DJ%R?l+9VcywdJ0?jTA4z^kHaLFu2RZo4z=v*B17VT7`oLvmqNEW zPimV~YwHQX3Kc%qPQ%^wi{BdO?E7Ydai2*uEe`){6Yw$uGXBMwSJ@@69|`S_%#95= z8r+Wi0-&NmGC!U}1=z{?fM3JXz3B+>6`!bS2!#M$w(Btb6B+m3ymGXg&9Q zinUMcoroTjqw2KH$Y)9k`!-u7hhYijBAb-Y*lnTm9CkVt7R{?)wp))<=>!CLIQXCT z2p_PxY)r$G!Wh`{me+vJ@CrI#NLegd&|a(Yy7f7Vc$$O;-!=CVZ-#>9YI+C2#WrVb zDJ@X87NRD-bYJ9QdUAm?&&bwNPFe*fgo)6xUVve8%3 zo|%W^WRzXb(+VN+uRGk;-xqK>Tj`;YEquX8hJ@owTK=71AyoD$?X%D#ni8F_e$yC&e{r&o`5J1b=_x+n|}swr8>QkK1a6HPV6r>-58NBsTdq41lGqm(yCvZ<+a=4U%c zY~@hy;$huaE-*{n^GF})7H5-BesffjWip{-QKol1=T=E?(*pU+yyj~qFIZI}vO$;* zKjw~}Ab_{wa46D^%#UT^?^|0X21D$?lt+`-hBGlwzi+5;8c?hEPdr|!Gyu&S5xNzZtQL_o1Jgp&hI2?TzW=UpV6bu=Cb z_4#(F_~PZGp=1xMx`K5QUQ0zp7P{!eqgZFu@=j5KGVHw}XSq$%vrmIZ7c|(YT%3Uyy?VnJCEA=1WfsFB z!z`|!ip=I(e>C~ut?kJOhy{{y>LBzL2wILgdch&;6SZIuxfYmEXP0LHu=EpaImvoM~zg+c5bke6vc=dO&+lfgts+~77(n3_uX_J^J)Tk_QNxpoPtp7t;`bT zXlTpx76TYFGc%I`pin*?VguCQQD)xU;%F%dS|#8h4Y6;D#p9ISS$V3jxef5VLcFX4 zuq=X%(|J?7V?P)gF|6D#n=FRn@ThBJ`9-43n-`0re`TKF0gQkH3sAiaSA~?L!CLH9 zg2E)V9}?-5$Wwm~4eVqiCxxmSNxAi<<~=hDCVG6;bgn|FvuB=t2ryHl&i*Vf_)j`m zkxMe@W!r`6-pU9lwXh5!;n3&5gKiw&?h#;a0DjWDU0PRTykcn!AObEgfdhO0=b^OcpMqT(=GUs1F|M`$uRkSqZ}CwTSi zIdvgef28>fA8*pPkJlQv^j`a8RQbEV{Z*A@|HnVDZJM*I8K6*hzU|+q-*t%J!Bg{p zIdBA8y&E#ewK?1EAIm~8%l7@YG4A+x6uJCMW+Si_o!hN6vt>MCKDM-N`AaeG`cL=q z?mC6Eo2sv28r1MFV{U-}FFa|yMjK3)UTo*o3Cv`j%-0n?ZHCkV--5O9#nER#$&QYd zJ*Q-6GqEX{BEwWnem>;JAC~|>$-p_)f(0F((WWj>cO1G2Q&3Q(C^e}@J#9p~yAzu0 zalN)*0K8gdq)iaO{fYgLJw$N3yTDF$Rv{iN4tIL$5ys62%rC6i0Mm#=z+uk53gi4c z$6iXrs(o#DX$4NLAQHUo0`z)uk6?#`&S`KOK>5#fT;djRFq8%NVq0D{2kI&#?2s!@ zte_uHZlY3PxCxa(wfD^jL&p*RH*z1jkFr5vfG#I&jaXf}b)zM#qNW>Ufj1jYCpnMc zG8R(C>t&mpR2@od)PSkc6$IAP`NIvpaif1k;bs<2}a$iUunZMKTjw;E-#%QJ7x zr1&^fqM_|RO_W@(|s%>r6=$W<==^)3Jww=cAFEw;lqj1@?bJo5taudAvGgE4KZ6wjZ2_C}2 z!?oZ>2n+^@h!5{uL{^@#GDQqR{#>#%47^Fndqnwmitf9iT?bGp;HA~Id7zbv3dH7^ zTj@zb)|-!heosAo;?1q|XA9W&%RNV~Avtg1oKI9$=~mdm%Gav5*ugN&pzkAK_x(eP zHI!v!W9wUFO-`xRB4&Qbs)|;nLotF3v>)U5`7;=&2@Y0#!2-4<69wR?cXfhj`In71 z%=VC>A^(Tf)L;)ON<*T&5^SuDMag2>H({8OE}${- z@X>~K$fP5(4i!~_6Um2fG?Nt}jR^6r`SNSoP{AR6+Jp~j-BPb}vkD@XXA}(?0r@dq zEE*&~LzQf(e!BNpVX!7&C_5!BgOx;yhlR9VwETFy9Aue%G=!z%1>K6b79@L(EiWP6 zeq7s9%^h#b0UEzc&y=uh=e~(R)Z&@iyey=A4{t}HpSCTfEyrtRnM9_G$f~o=%PP!G zc36zbDt%I?e%?B&!IyOn@s%Lh8n5}(1@jA=BWRiD92feF^r~s`e^z7omv=stNx;#~<&vp3{NV7|y#VmK)~=2qW=h>o%WEOP4D!@D9d?RDUr{c>hM?jpHYWTN~=lD-y zM?l7^!`>zZ;{l6Jh+!FjrJmzL7ylK6;Qx1p=I;=!J-?|D`CnF6*MHRIch^bK%}u#F zeH*rimF-Y6V6X7_oWS*NRD(j<+v|SSBp{H|lU@tyTn0EW-Xo{+Em5Co7hX6__DLM@ zb~2l@dw{6TQ-=evf1K)cwvJA~L%H4ts+{SHR6^ZEAn5uI(mueMlf+2sZAz8kfTCVk zmP%N0odiU&tAPC(qy-4I{DTBCjWYc-k~gnjAlMdr<$BTUo%y!W8VP}($A{+Gv}6?m zk<5oZB2x?$0Wn{2Up-E(gwaI%F9o^UFdmVe&yxj59bybi>?t2K0Ss0C83%c9TSVg` z*1j5?B^U{h%AkS+yI*7VT72@wPD8Pc?ytdL6SdyA&D~v@*(-&XnAr5I(Eyh`_=oaq zH3%s%tXo}bG|cK+(QAI421LT$PL|hTzY!bc&e|W^XzB5P$l} zte2V7PGZoxN0)n+F&{$6TCkN-z%%KZ0BW--unD#H3)>MT# zwj>V@ZrfKGhd-c1{2v^@fpZX$nz0Y3IMM*r5;yq92>{&L>wAE`15gK}h(>$8RvrOs z2jH}G9T1kB+|2%}-H*8Xq_Egju7Z~2+I1u2Sd8dvN5Gg*o4Y|E74Y@+ z(hJG1m9VnMz<#O8n+?6u;sA_wR6U&&omP(>Vs2)86N0H$CiK|J_Q^1Eqthtc&KsiT zY@WnSlXNIsE8V*my3xX&m^)7Ey4l74F`dvDZv}MOPTx~{lCb|mr4Wc3a(QA;^9bQ8 z=2G(5`>UT@F;Vx`GXTwIV5RZO=WJZlwILdkkmVVry$GOgxwKgaC|n!4^3QZWu6WC# z-Gn4S>~ux6kEH{#9;a6UF|XxayfCjFh}G2KmD-_*s&>@OqPHp}k~&j%W9f}FLLy?^ zAKXmWSYRKl>S3@Qa)IV@zqB<4ehD>0XEXPil}HNh(cMPgt3;LqQD)p7M9=+NyG_93 z#q#bcqfDK)6?m+QyxYi<`etb;?n#SuM?#dX6BDnv)PRvpBh;(*D(+21ET&)am9n^@ zp`qh~Wf&+Y{I-;_>+qz7h`;(;0uETT*}cCHEto?7$Ua#ni!somqP_c97Tb9KRO;Qe z-98b?gr9aHcNTJW zBPXn@rrp9W7gVGFXwUi<#jaQA$H_Z`iCCS1Ax;#bzOP>`t7^0ubo4!b7+B1?$$5gs zz&QA*KeuGOP9ck>@CDAbU|YEIcSNnvE`fdIxGomH6HmFG#2}|YvMYD2S*_8Qxt?w! z>;RiATexue#*QVv=9nud*?VVWkXX4zjIVE#Qsk+wlIx_~8L{diV$8XPc&U(mv2n4s z2eQ;V2@E3dCM3r=y^HzQqS}rY+?jFqe&l-3TJ3CTNGWNX>2P(9^KgX{OTVXI*hOjX z+{Uz+yvN|Oqn~2o2T!Y*ekr+ky86moWf}?kY*9qsoADNa)z6{b)=w zog0`ORXfEr-!bemH}}=>wE(i%v!pMA+C1IDT2R7fu|a*cW z_i41*g5(8E$`-@Uf>~KmCsvOl`&x2t5Q}tyS+v@Qoy~(Wbvd#XuHO!|-X9+eI>e75 zC)q`6n4INRI$kTMnl%U||2S}vJw5$?S)tCCY46%v@&{&DclM>Dtz#Q%VaH$+`5!AC z|9k|a>tDqfPG#p;p4#$v*GBh3e-yvo&X5?ZS)UhB|8rihzr+80T1#K4V)eyexNXpz zkC@b|ij<-$tmRw~SJ;C3*uwWl89pz^)O>pLhb7~YOUK@$uRb2)Z-w4mugl+%Tv&f) z_Ia~4FL`mPo9~op@;EwkX(J3<$z7{MxT$s+dKin=WJ_(B%G<3wgfB(!^R68nglqa| zt~Q%w&HDY`3_U`U^RIv#yF7c_fHv*$q*Z9=<>a#1_vTyr1 zQ(9TfY7PrhmhYF{&7IRhJ$xQZJ#5T*g6OI7F3DVMMvp9+cvy^;kxZgIOY*GiIVFOo zwnVF~hH%0XZzuQf!(KNtQxYvQE}99xfw*Tck1eaLn4H8jduO*jt|?{try)3xk|Dp?pA5QzFjX5y~bDdFoB@XS0# z{Cynbo#th}TdFE&vB;gu zV|qVfYyTYVp4qP_!s`mBijsX1i}ZCe4JAi6o)1qTYhD?sx(Xrkk3HG6OD@oe28drzMLs(avP3y1uj7xdG~#JTn{FcSR-yz3v@SRM8^ z(>Np6FTcjxco^?B{RY>ionSR&jNLy7+be3E>0G->Sq`wE0R)=aN|IFQ z3N(G@8pDMm9i-0o8%ul3;;_A7VE&}hx7wh3A%Yxa5mS>ped8HA-e01JUG65XQ=^3Y z`E$P6t05*^RTc_adCiumFSO(ad|f+?-E$DDcJWtMoxgN zSx$Z=Y_D5gL{c-O)i?gvkHb-hFo^+7+*$Wp%bj5WykBoy!S%oE4enssHIxC=8Nh`< zZ|AjU+~)sD*gC0@?va`L)8GTL_UFZI;hzJTMc$7d#&7MhryurcT#Xc{EQVy(gJ87P zS}^tMk^ZSRGtUWtGH*)7{}ioWX@x88%whM2CPahmod`~jhLxYWrcEI$gybB(1u`vS z>a*s8OZXlsv8?^>F)>&yq`7JNu5Q*uB&o)9p-kub+sSXnD99wP@=&P0^~c5AerBh^RDxvDE%Mn z9!@~Nz5KH+Be4_zjQmb;T^c{!vypLmglweF*W$(2WK(BzA9RQzmA)M>pef`R{CwuV z#cZjJSD4f_0=sS}lfmq}7uu@Iilt)jQmt!*$LCRn&I_TY*WQZUe^vWP#kjjT)%bIZ zypN%J&yA`JC0;$P&r}q2Ot1Z|X49JNi?e~hKLr(4(&_01(1sVA`d3%im^nGM|L&4c zDGGk|O7l7AN6;EA`wwDd36X8U;=r-MY?rPzx>Aen8v5BGRezIBiMueotRj>63;gP( z_K?`zP8t}nXrQ2krzTLdu*cJdNQs;EA_)nXQGn8i8GQ%_>m5nPgDV^eUWvLopx}~S z4))*-TV1}Tg5bdeu~ie*RIkSSS7x@If6Q$vOG=_a$p9MRDuHJ(jCJ^Po+(aV`i=0J!Ku3fZM-o4w7*Vt>6cGjjBAWo&CTP*HzK##7_dOjZ=K zer#YhP>D_W(bB8NW%+etvy)g(^Ql$x(&Z8Bkh)t^5qt8a0kO{)RReJXlh5|1kdEWe zgqAZoimy(uPM01&;!VqVb!p=p?WBPUfU^cOO*8eqE|h}x0Di_>q}UC5mOo%%K$CpB z6ffi&QEol;v}b)(WU+K|*%s^Z+(DN6`8OKBmQ?&QEWpAID60RAe=SSbUF}=nTV8ZA z$@CaEk=Efro{dk2)yD(uv^r>dc-RIYC^?64At50io-b3ufVvNNHB!xKuKG%I%U%^; zq!@7UGhTLD*Ipprd?Fe{1EUU-+`}0o_Hj;P1ksCv(TWZ*@7i&{1l-?Q1S!L)MbA`<7!7)J^pJ z_vrj@g{>b!1!`JTnoSsl} zVyJMsyjbrYj|&88Pc=L%yG>|2kF!%5%lc_>W?ays-LYDqKl4#Ftzpp(HG8L!uNCW$ zz+#uu3Y(V3HjBiDAM($iq zELjoHo7`@TlVNdRv@7Kp<9V$^o7g6=+H4oJ$h`7tZe^>!?b!Vqa{Pyd+q?3pyyZpy zlZx`v*N0EalO6W z-o8g96K38kC@5G#(>JTwW2P@M9kTLePct4`C*A9=gt7!IVkkPVX}}$<&O%aY`S2!_ zMGJM)1B_78`sE7~x(2jmm(bXX5>D~=1M`@@cOQOli)Oqm31VT<Sw0=z&J9Z79fC<&c&|QLD0M`S(oRGgg!W!gXS{mc zUTxf;mS{n=ulw0k8@{$hLyt`UmUUYV2rtDyB2v03!~?o~f0BDjBIzhM@b&L>omH!| zV3r43OsdvehB{HK-`4546_RbxPdlu&Cl>DDG@Y}~P{+k^dP*n`5bp)8gX++%2JQxR z3qdi44&%kUrG=YoZ-?Z~Im_}Gf&}KPJ)H>6PN3N*!s5Ddr?FuPt(JLp5o5v*lg>dH z(gsw*rv~@Ha$81!bl5z9XD&)PESCOpf=hmw@sqWY&M-&n>`}Tnvb1mF7hwEA^sRw6 zBUN~O^@%g0j_)rx#LmUdgHOi@BjmGP@kep6>-!s+ zk&(br zUD!QrAqqMmDkv>2A>Ad?(hbtm&CoR*|4BZ_wzk@#S`@P@% z;e}konRE7>v-jF-t$W>pF#6mt0f}d+(|eUpGsC{mds9Tsv`PkOs0xRAJ z=IPv%g47^mpQmGOOjegB?t|`Yt&GC06>71#+upPCc79=QJJ~NM9LagSHV%?GBRJsG zbK;MA(@sxPHi<3Dn-VNBtl?OPWpFFe0%uJMPcd$uRYevU%?7b9-4Y9v{^W|bF(ks) zafKt1t(-|9J!?1NP;m77Rd^!YV@Z)m?`P$Swt`Bv7b_c)L3;fCueb{AH%7JWfN2+IN7}O5<|HUktVFdhl#B=9ghX_l`TzME$4eUKP;*I1Ij4LZXo* z9B}?Y^*c)f(ByQ~p*5;7@5JO^iDJ&}fAHZ`n6oIv0&)Lh@Oh-o-SiVK^<Sa$&Z<0WEWKaB|j`dvX2fD90mH|dqV!T2Q`3@GlL2ud~FTd>J&!?9j zVdM%nYnt^UI`X`0hiJzGK5w;D{Uyf7QIPk z23|7%vTT4HMV>x2MYTUaU05ru@;7|)ltNd>eyJ(dq=8t;IlT)xZ^_}o$0||b-HxPc z9@(F9vC=2x?p`09w5|;QhGePB&7DiL(o+&v?A)t z0YJg}b_i|Y!YD8ILayDGvTp(l?18|7$$xh_qqlnJEI(__T8rClb(&2JMLOkKrY zek&u!9Z*)VOYOh39jUr_(RJOI#kVDEO=z0Phv||u=mpa)V(9>JVez5^SBhjP1Fxv* zl9Zs=UE~E4HHn8ZX$|}noV*I>eSUlxUbTK&&#M3dDcWtO+)#@&-t3cfjd5(%6y!1( zuh5Alw;CEVO?wy?rv}0`)jI=N9BmP1jj+*;Zl{f%oy<6%DTfBVH`dx((gUzxh=1&J zPRB5H6{W#j|F=%~i4j0IV;~F@aCicpwfIv(fW5e|eAuVFW6@FBQ>P9nBXRT2ujQ*N zv=IPQvFC)(0A(FO&LL9Sz@Gp)kID>yXfQdHS<5FV0JPFd{J*Z_dv|>GK?JpWbw0Ge z42qKPHRGKL(d=EfpC;aGb~s1J0x2?XfTY6YzuUT!ad$%QA(I@?9vS;2rL0xU-jl59 z+`3BGCy=;A#>?O@m(kyFA(qATO>M>kHTTYe=}P6mL3HH3ZrFsm0`*Y5`g|+E#LS3v zb`0ADlPjV--f-NPysJdydxlS996rSA^HS3Na6gU88rUHF?ExF=w5yo`9=qftw&F~b z`n>2M=YH~<_>m+;5#@ndo{+#C+`icQhP|FR@T=vNv3~QtE6&C2nCDQ{h_D7lL%@6q z42iUpTO_-D0T32U`kZ#}Vf80B{KujDC5b~;a^7|BR5;Oz?D>rAC>wY_{wHkgGR;C$ zXFvd60Ea}#ko?h@U)6M06wO)-kHNoZM904&`mjtJ$XyoucITF901)eA*Y;gm#o(0} zdS!XJ5J?y+qCpX3q$Qh^Sqs{`+fN*s1SuErykHkB^lv3V@KD`;g^p~7hoa3UH z?^Thxb*w0tNt2P&(YiD>q?X>ooCEU#DVz4H~>yh()vA~j^50S?OhuJ zs~5zIyX+h-zkWA-Sv>sS@fJw!d5T>~L81nKe!qZ115QfvJZ?K-TFZ_ANIw>$nH(|h z{4dosqem|PE&>YFjQw|i4IeCBzWo5CBm+5*zL9d90c2!nLUlm%yG@jv*k>{_7l^W} z!e-W{*fH285?NkYJ*-;?h?=3#H23gcV%eqtU zHZRx@tbLZUihp}}zqNKcp7&ur9?kYdzVq`_@Ud&xiNcBh@NUnC;7d&@?1y^lOU-L% z`L(Rw*P82-y%C`7i{|GW89QQ&B|PxXa&Suh6T7txuBV$B5rR}>VzI>@VMSbO#6Z1# z8<08#)Ej#vu?s+Y6gfz2pl+@D19qah5YP8bBMV#e3K3InY_uKFI^rkZA8(b|iTqzX zj+bVe=al1OB2wcfQ>2N2=f|n~Ci0?EKSq?IviPGE1c(TzuBlP;^8=ErM`nlLiHif% z)ofkG(l-&vMdi8aV~X9asS2Q$;+J(>l5P^9nF7>-waqt$%pev9f3}5|o^b5pN%t4leC(@^JItZm}d`}_bu>9ynHiNz^EqB{D z3bmDWtJUeds&;As!;&3Q?Zb9%)vy=7sP18X+2+veU6wq3n3l`y@FutVE?s8rIohUR zo73kCz&@%kxarTjSxCJWJ|yjx%E){DHjoq~4vrY$4xeADL47pWf$@y-E0Uiw7A6b= z#eDK>nXQbs8e{}lX5Sp29s?~1C`q`uc?(*;+YUOf_P!iC9N64f*0o8teA@+sloSM$ zM$A?QEC4;YtnF-oa)Jx>nW3Q}AhN*4)qP#z4#l@f7XN|R0i8SX{=#I#HQ7bacbWYC zl6SEl0(I}B(~KjTH4|x|IpK1)H*PMLDk#Q@#gxeh!1iggC6V(_na;S&n#O>70ch?c znTP!F1U+EM0f~$AxZo4}Dy7G5QdVn(Jz^p=t;QjL3QRs()Iwi@^&m16*k^SBIfBY2 zGJ*n?57Y5(eq7%n2R7>w+Y#^-)tNb`K_D_lZiBM&P}Q7G*pL5+E00*;{2^1tMP)VixxESs`E+}S zNk0@(!FKmD0zJ6Oc&3!UKh;iwI;>B(_f8mfpow%=7$M4Q2br;|%nuAxYusQ=3R>j% zgR0#bqef9oTvjAKQJerKx$&vV^^7xnMG?k+oWIc7Go~l}P(=RmMd_%6FgYjc$oYZ? z`eEU$6pvQ?#;dYWP(r?Mc*Dy;wspa>4zbf|d@3C-!{BPix zW^jO*7ndDSi-5kzYYhVYKLl3>tdA#;fFwZ|;89Y33%vW5_S}EvcDN@uEqiXNy?{^H zlbNeDCTnt80GdbO5V@(0s%t5GOA}Sq^epk+NYh5gcW&x6ZeG7b;6Qs?B1)k0>=B0S z29W`j`JMmC82R)(60uv+H25t0Muhs8gtGn@1!^1L*xnD}=uuya$H%8Yu=XdiMl}BM zG4s63dDb63K(rR{J*e!8F7q_GyY0OXblss={3~J={oUXEf4aOrIYoGO-o4+Aj(nt} zh#4!@sl58~lzMNkf*)h^oCjIOKoYOMx4OQx*$tili91g1GBh;w^>-qm-WVvT0g811 zOB(RHiSeyDmQxcs4zH z6SSeO+35LrBADk8ZtqyuvP)!}p09@Y3p%?8Rfi|;& zkzIdf^wZ0~!Llnrc!3$yI&@D2X#O(pKOpvw5?^^j6R7h6x~KlD;jSHiTPUug;^vZH zSXiCeO5EKgTY4APoBuO5JbKO^PeVf!7_=gBtFG>$%*G-;C^|}6zwd9=SPp3Y@;ShT zc`OUu3jiR*1W-q`ubl!^2+8VXyLNsHkJiCXXZ;&ovZ<^~Z4<8z?Z(Lj`BTQmb=yjv zpBLR^N~z(;Zz=<2Xh2X4V8`o|5s+GC=Z$Ql^$;=;&W-;qAOjeT{%ZHb{}b2|osA|T zC00!hRrzM(U+?fYHp;fwwD&P$`R?7jSvAdiWET=;5i!rD35bGENdZP!Y;5Sg5-7Z& ze{4bd0#dgV5f&Dbiv@o9$R;x3Xg|SeOq@ekz|qr89h&nIK_-@j`%ozR8TD8uho`U}G5ZKh>~%Y-lK8yPnanm30@GTH)LJ zfZ=Q5IlBF9fVdljCNNA;hnh|m`u=>2E%H!T;E{fYz=O+T zALA?Ll`<6p0N6#4f9veHSJbM!>Z*)64*rAL)BolPgpqHry)C>6zToj9ZSk&njBE!=%*nH#ul%UQwBMzZzVGc48~bc1 zl$CckiIUFge_2hRiXXjk{mM_94hAu^%QqP3~w7=ikNFUbS&5nc#C(@d4&#bZT z)J5)~|3Hq0PHou}4`0dnPtJy(HVLlf;Ux_eoMn?B#2o4tBiAoPed+a&19=nmZp8(@ z{Vm;;HEBBnu1^81r8lSgKl!d4??g1D87<-1Xg$csko*0E20J)bq)muN4gIuT9 z8HA*$$1-M!)m=m}5`A{*vNXx=)n`-6g}C#pcJCd&NU6K8+GXlLztr1^mBO1{eH;bQ z&4^7CuwxnU>Dv<%6-^H;FE0Zn(v{ z2$@~<5%&7<1W%zGa_oqRLJhVbQZpj>COq1`mDa^-MWFC;dIn-!Bw46-v1?J!>l<8b zKHB%9$A8^yW#8kqfwGJ=h%5tec>%@NWTIYQ-gve%Sz*$MdJS&veYRWI+8($Egm=JY z?Ci^6_$JIi2OsRyQ#nn>o7?EOHTFM4YAaDEQ86FrR)T`!n<4FS&23o74*DJU+_`AP zh~ZpCKw1M5U;hvmM7}-$?if)Q+gu;YfEmABW7W0)(G-u6K8n^|k52yEIM%E3qWR^e zkVI2>;Tk)bbqG5eUYdc2}9uqHr2#Kwqxy1fSP2sDR*6mn9Z6bk@(^9aYl7{Q+-BFmui&T3 zgSQRRBi}S!jUBZO_(_rQI{e6WMy<_GjT}|GUp<7NbP;Ucw|{y3JfX)yE+5yfPX>?B zNh?C^xPc^@%>EMlzZo%rk>sC`4nM6U=*9^-lQnqBFo$V+Rlj=TJDe_K`(s$Xt00+l7>c~=vSW9lXOY`{~B4swARHohNRS6C!<6Z2RY^Y8a!bXgV(2M zrl#*#Zi=ceRTBNtz9B?}8w05Rw444>g(dppb}TFcc%Rzo7EaX$gmRBLNvVOTzQ5)= z%70idx-B5EJE$t4#gwEI+&M-?lILx> zH$mO>z+_FA;ib8Yt*B1@Lqe}p-7Qw_<2h)vB=78zqHrqaK+90fhJ@G(WfGa>a9dmN z>bB_dasNP6_s^66Qqyv@6}L+nN;CRP6gRfyMQQV@bL09`gvEh=^K=&WYP!L7d z;^NWB29N!u4C{j>J8;HXeLXiYEnWlfxbmfVP83_{ECYKh&hRWt##e+)(03M)ON9uj z<7X5s`cv5Xoz?X8BwEF(M~9Q#!R#J0)EM#sj?01>dD_4QB|wk#Pa zsPWbEaf@VCRn^gw94la^-oLzl5B;c5Kk@_weNBoJ>cS8NKVDegn))%4sTkW*Fp}rG zRpD~e(EToUt%#{Ic03SC8BRdP*Q`sWA`it9xOYI6b@KEU8;RR{GBR>`!75l~r9>5( z_~?wN(T!K!h;cplWTI3j`(l#b(vc0~GkhGrd3@;N;xf8S11@at2n_U^KK>(;x>{Q_ zTQl9@P^zfAxbLyXU0NUJiw-p$noMw&9KgN*nvgXE$f`(4sSB2%nwC3RE>HtTmEh~c zV+_)zq~LX;v6zn4>*GQZUvF<>B6mqwS8i@zZZ*I?4rstYZU1|y$$RM0zO4@S4k|B{ zvv0bz*ii2BgxaW*_uF-!5C3* z_dAAKI;cp@w^kuGyuU{BZ zA&j_8LA?f__=hKRf%Cb*YYBUNT)fkISPO@BIh5@{2rcrxR<%BPf2FUx4hIi2F%XB0y6 z)s!?zo>X-r`rFNiD33;0IQO3P!Fx&@KjwuMXJq{5M>QF5NELkl{$1d@OUZ?FV{^02 zxb?n^%i7W}w>bedRAMb3(6G(Q!?oAuec@62M8(9t#vrAV^tXRoDNj5*-3z1hqiWd#{xfv7G(sBZ_Mg* zfFN`rZzuPX00mlk$?Uua`jv+tI=^Ze6u21-&CPA6B&Z)I;mAiWeWdD%F_nGy#Hdcj z?bM}!;K|)p^WvVO($(Y*gNkqN$=hRy(uA6tfjX<%OLIpqgQX~$gzX>U0Tp&;-d3yI zsvWnjLIZk#28*Xpp$(QO4?zjIl8og8biLJM@RlBtlJI~N519^mBIxak$h=n|b8`N1 z?n{sQCCV8MZ=p`gr%859m0#*Xo( zsKZtrqu3ITDp54*m)r1GQS)OfRe$(#$ZmrsZ3EBT;ISR)GP(9ny!vUDB5Az_*l|a) z&tjzQ)hjStx*QR7`FceHF18Vf%?UbiKX$$2jMx}O0^h-Kh8RRBVIZfJn%?>O1>ah~ zTsdN66E9aWBO+i6S%9RRkxl-&wz=spl59V3fZ`iz6CW(a)ozj0FMO?_=Tszl98H( zgj(1mo*(?{Plp&d?vLnqYnmRM!rwKx#CJnLvs)sy71Va4Zvm!kYx{0zUNe2Gs6#bo?KC}e(|h3ucfxl zdpt79K_-Vef<3r@=K+*j`{XRUvuB`2^kyU!+?Ycm`rn|2(EEGXlT@)mK|zgRGTV@# zAiDIoY`6g%ExAtM<%i*CJx|-u_V$zae^ZN*o-4U}ocsBo&U;`frVIs9i|m&s%su^6 z^pq&0ctiWyk;cO4Kp%V<)7MTf)jI;se$zw{`eBo8w-Ogj~wW)TxU(D3>E%)U2DF0jzi0>h;;w%2>pi$MwJXJ6poF&E3;nW7z z$RH8om-&pXq%+8C2o)8T*X82Bd$Fb^x6rXA+`?pCQna;lQv|w(w%82aIzvC@KvC&Aj$|!6 zp;tcWxo`0Zq2CD}OoOEN<{LhJ>$}jee8H6ZBSJm#b`b@#@Yp}n=g}z;PLy9*?EE38 z#Ne1&TrMS>Lznsq*It0Q zp}q(IqLroAFFEo1$nuY02`<7T<$fM^DXfjwWMq?Cm^@v$umBweO z&3)n2&jZ&^YyJ}_tKMg&tI%s&Faq;YzwagAcC94eA`+jqag0; zhzPg5{z2J$c5Wy2&^ou4pQd zW&rU|y~8Zv^HQ_uT*%Fhr9$oGc`r^jWFNI;^s_eB|3*lkr}i2lqZ#FWaLV zmrYy?WHz&>D$J*18Z5a&)>&Apm*0qr0zBdli*g`P)SFRQ-W@mF<@1A<7C6ZK6+{Ow ze4S+^)nSd>)Y}T_IC<5&CFt(|X@XC_hSvSy+)U82)9si5J2*LT3;Tkvk}q9}`X%%e zOPv}89$kr3id83=30@kQg16k5p`xl90tCM6I%(-^Y`+49clLavi!G>9Oy6Mv5`~$P zTfc)J+z&{Y;@JmBwFm}T`p`W2-W|7%N1f*Von?C{QQHFXqzUqvG2&J6%VJJ^kOgoN zp3W$N;Hg*qQz~1;W>E}@(yL<+pzkbg6U^myoSd8nxfFOEfGl8Z8*AGxeNWFi&)BIL zL7iM?-E6B5-=?Ids+Sd)qGGw5`NAYu69uJTVprgG3RudJ=5lW=DXVJ-C0RpAySrV$ zz|gML6)$1v}W^zzHUDJAW2`)w$bO(Ykl>aZSfGWc{If3bh6< zROJ68F0W~Fk2YemP!2yr7<3kX;ttnIFOM``>;`a6>{Lmk- zKr7D~SjO5jOZw$Vlg7ZnfQ)z!OPio)&+GZluINA&c3t{31RXAF@uQu6eVpLI6~>Uz zkd*pTDYLINd~43`1lamJZ(d@X^~_xPZ3_w`C4@**!u{Q)!4S z{9ee|h<+)1ugfP%#gVp)nnmn>U%6Uz0DZK~b#Vfo&PH9T7m$#az7d;U} zy5}(?`DHY2EGY~EDX59Rf}Ecf+HJCf4o^*eh`Fq+f1@0?-F1&T&Hq8Hd8gE@IiLFLk;jPQPbNfTSR9UYBBTt@gW1CTF zocX+RzWb7$H+Qw;HT7{H-O~at4Kwo#74=5^2Df5K3;3qnMl+p2w19zU9X|sj?-Ok2-@X+3K+;qR0H{5y?DPEe4TD01(eF-q6+@u`G0w<7w&k8*dB zb)n>P1-yLDcOHtn-&+FgT-*h;qLhm(R1-|xsQhPmf$_Gp5x)8#%)eXYC z+-a$4#sqN^;kOF1HoRnE8fe?L5eYf$7rCurY&3I_S7vu&yS4Mn41TCRM)qfu_f1Rd zD)O11HG70%%{@`bBzl$sy*I{pnc&pslf1u1Cd%t~;G7W8B&q{N82-8!IW^!Uukv79 zH-1q%vSZ&0<$Ow06L22;6ehCezJrbSY;!w*)9ebLgp9{1+H7JmFr?gtv4)|W6C~JiT8U$H2zM4D%M+;kpS9a*v`sl z4KYDm#hc`+y?G1KfBX?{7|x_5vyi8i5?ZR~h!xk@{7h@vz+pZ;__>JD*Yi_dcU#&1 zP~sGyzVm#)B^*8UE^28b{VoN}jeSEo;=?(c1L{pNCl2PIq>gL8%1L)+UTS1XZJ zlLwwDqA)VNM{-$r(p%fd~FfuZ@A2~(g+@|}EZux|pF@dXJpJmf6-D+m|s)CYHd&p*)*`}JuaV$n` zq>?i_I@+hwnIooIRC<$Q4A=8fIV|4rJpr)V^2+BBJW+U(nE2{DVcM6#@*ZVE%!4~3 za|;%K)(z?Kxk_&t`jByy0(#%4TG?#O^Q!|)_x^eh;q=4by{Gc6^$5MlV?{+vT=Gk_ zQyZbr^!b#CwP>J;58h(jWi?-W+sFj+R5uB{B&c8v7e5=yHF2C@e-nTmCZL2JS9&jk zpOc?bZjL_b*LLDE!A2Q)Nz#A|t3p*5*WR9w6jzLoM#PE)hflNpxH=?crWzq$=8 zq~N}JLKpu&p?7l3lx^lT5)4i?8tcwQMzvBRsXzFIXTT==*{eAx1MS$yThl^Ri?vOH{+TUb zwe&D1F67SK^XoBkWUgt_m>|260Wtk8QlENLZeR2CID@if&a?3YrxeJDlHtP z(3e~;etd>m$GH-7Dr)tk=f_ou`m;nG^}JVHW94DzfL%+aRl0=nqR;nO((t9MR+SH4 zVX4keT|HeL5&8|bR##We@<*@luTTObLmY9lvwKa+q#luV=Kbp^_r`eSP`jExg}uP2nh`G@i8?l&YnLQgm^zrpA9XDeTLr9o*oc<9{*GjQvE-%bc5S z^LzDjWY|L9G`=41sNuQ+xk2D#Nn9wcSl?v`d6CC&!kOJxmQ$L&f%q{>OZsh-QO}*0 z?VmV%`#%Y(_Sf)!^(n?mtY0AXfJeLb5et3f@cZf&4!zmRJMoD0a8417fgm{H#LQ#s z!g>E|Uh;nCh(g^Z&_#Un_-wsc6kflw`6(A~=NqX$=9ClMW#NmJa&&G=^q|!bo)|#) z-r*y?fB@q6&&^$UN&iF{`WX9{*$j^DR6T)1^D(bWlGQgAMMWOBorF&kg@{Oz8=yx; z75VSh`HY58AmdG~ne`mxvU`rO2FI#)sp}-5A@dTv931oxh7s9bXs_9WcdyJl{7;f$ zp=JtN$lP5-@K1a6Lp0)Z{C>c0_}D2*xc1upq0iZ+DEr}ju#N8-f7=e`P2fR36&RyY z+W>p$9cVf|VR>lV;LQK|++iV4bjrDzZ$HU!LEzB6q#k^GIvxEpRUqfFg^w{^8f@LG z2-C&wk-x^A;@)^2jU@G1hr0KRK|Lj$yaS_5Rq2GvS)TL`gwP&xmpQ>H?M*3xq%>R zdGYidKUA{J1l2~P>g_%CZ!f%jXhu6*y_mbn^gjEy37qE3CjJnGym9QB^)y#n+9sSf8VRj3cgou36Ke14bz4l z2lPO)pX{BwspBAt?qA>$lWaN_`hcrhQrq-TKwP*CesYI9&_2D` z*x1bK@onRJ;SFmW6$1l%xt*lsB;hvWxN{!>yzcxuhbHocO@&TBnC9y|Fs&mlPb+UG z25MR?Zh(30_Rm-QjI68`wC?2;o#>2Lm+?HHazr=!XJ({$Cx1WJa&0V9OZ-HfpB2Eo z);2NOZ}U`v2bENmn5B4naM6;s@#2BW^c=)2zcYUD zTEyX3+z1I@Uvf8FgjHUc;)j+ud`|u>;R^K+qu`gQ{zRL++Md2X@y#PmVEk0|K6eD( z2Y%4dS!v`lO{8tFKa44|0RT2jT{5rxn?J_-q^2|7Jc^R5{0BkQc3r7kcgtBVmsb+` zDiwi^4Y2*O%y+1ybsy6h1F(6}$CYDasm(``;K9ckwT>-!@+hv9iUGnH&k3!wjelQ$0LeQT~i&{3Rr~`K&f<{=)s*`DyxjE{o-*>ls#W_6{Dgv zg8~L3sX-I%uYihvzTWDa&BNpnlNtjH3->9{jy{luToA{n4%{$S;UmiG`Jn-$u1DYm zhYi(wKGG^je}I_16geL)K+eg(INvyIqV(d!;Xt`$BDpPG#oX zOm5w1tK|7*mnVZ`#X|1*z^?w~UzoxEG*PBlaC7F&qd(y6R%==(ML|CSRA_tFOmkXa74IRNm~5L8y$BEu8vBp z_|7*isQ&?Ev%RGM1;~Q7%iC(;lRn%sbR6pv-oVTOk^hWV)nZ}wSnb7hy5J_w26|iY z%n=j0Uz`r#%VZJ>Jg=LQDe}J4<7{CvzY|Elxwo}}e?P7Ej=Lz%J*C=57R!jQGk)mY zYkuXc#h>64_LZP>9^{Z@!R;)^49ZNX;K>ChGw*j z3Q0AbMZQ*SSb1OmQjET0v`KwG#{A3VM!VzC6bzfDW?PD|`6f(aH% z*5CLRt;37F3Y2z4Vxg9pw60#9bt>?Ai{0J`T}tqqUXgJlHSTuhela!luI~JrnA8uA ziV{^XVZvtYb;1+9ZL#gkaj2f+WXj3-6Nl~a5S8J1PULv*nTOPMN7MT{|Imp?*h)EW z4(!F^#w`%}O@IArp&z(3c?m{$VQKp!(r6g>`1O32-ptyIz*h|G3Gs^J26ThAVeCC@ zBla-Xz^A3UVcD9j>^;1PdcMMG-(3$_I7MN%++EW?g${6~8@KJwBAFe|ZZI%LhTym$ zuSAMV)4wk{&UhvQwRqb8%X;i|Xxb|+)h1@xTrW5`Umk|oTD=SSC1u|6@CpWQ&(Pa1 zF#3Ih07&>rwENAS+Eh%t_ooRjbGbFNtRX((d{?~3MznQKNls2R1KGS;#$5k^Uf@U5 z*n%P9Ej)d1ycB53O#EV=-*i~qY4xq^(uH`8R)mt_>abyd1avQ30lv^UBAu%}A$oql zP*G&elj3T$ET~9-k=gH>6q9qX9ZQ-?mp4m_G1Eq?=PzV)vPPhsJO!> z0XiZoK+$r-vgYVZD3RePva#AH4esOTqr1YluN!z%(*$u3)rPYApA;Wd7{jtRLxO}J zK;@M68gHFrRYWfy-o1Oxz?=ltc4KjJc7>QxFkeF;L2WLO#U~1qI?<#@$GP@>!b3Pq z=acmi`io0?x?mjb$y?-ARrCW_f5E6t$3 z9VYTjizRC^_;KsgxCR25vlwRw7*aq;6%6WkTtD@0KNgijv1=hy0gWu#_tW#T)1|h_ zcX?(TcO&WO9U74GdIvx6DK=gZ)h?-J6%^*-M7cT%eicLIQ)plk?r_Y?(^%Bb!$q39%N{#I4U+3wKZ{lef?X^GMac`puO5| z#?A@@Zu7kXxU6&l4tPKU^COEJgMi>Y3kd@yx28n`=a54k{Vnnc0p^PKX!5pl1vBk4 ze_@@$daM;oL$kQW|ATA=%_z1{7vsDM&QLwp_?6#iJTFHs-HqopEHXC6(vj?f8ZKAI z4QJ!9>ldlg>BbF@U(lVX=p8lRvxn_JW}clh`^~o9vp0E+TEbQ0MT+P3d;t~t9eG_H zjc@MnrLr2?O!*`m0agFvXWcp!f9B9?;J^{AKfe&3e*n~~?2fwMc)Th;S?`MFbt%9; ziHKxLPH&4K`&kBohq{$?G2Vqh9v->4^UD&iLt_Dm{#DDtp|rvfkI#^hbdr^eYLN}d zpy5Z)NpGIMBj4PO&0)KtXr*tSk?1l4cRvU25Q{edz6oT560b=Yp5N!6_RUWx<|^@R z{CutxAbuhz*WQEP!%B{+iKm6Se*OcJe$W{|dq0LW7^BFvb@V#Toe zEa`$3C29eSoAB3Aj*4W_r8oan@M;*vsCzSQ40$+?-mpXFRMOj`gINlPDng@671w4( zy29^8^PVzjj|GNgDVIl0hD~TSm+xj@a;=-ft%qiPcn%Kok|9lStJM09bKU5*m)Aq{ zT^!b;Pr|vLWS3Bkby7|+GA34hE3TMJDU$w@6O8Vnbi>w<+o)H#m&+pm2Kp9OdGmS#-coAXSqy8qmBoouH{ZR zA5S^ZUwA~-79x#Ki1>ZEO+~*SewI>+76F>%J!fDZY|pID)ue#Z;ejnv7gMCU%m-A{ z;^p=7lmM7$9)S%=%v53$NNR|%wfc80Dn!bm{B_$)BPeV0*#Y{!Ym>FTy_ja)wyzm0 zKmSxGR~4yjR)~%rr@NNxzb8{5f7ETGr74tDs~)(c|d4S-A*6N&)53pcP? zb?F8z@B74q;LvE-Sl96=JIa}Nt#YL1xk0V?Q`nW@p!SdXr4#VX@~q*w+1R-Eq;7Z> z>xJdz({0A-i_Fp*hKNsF2_^R9!yIHS89bm0_0xbZzDi)si;9@JxVdLy8n(7Q~ebStnCl27j zvA$&wz;NFEo)%QEC#j+F_#hT8E-s#3aJUwMT_A3SWRoMoP6x7-16k^Dp{==!2-Ckh zfIOLoyU?>XT%oqi-U2lnb*)Y0;N%($D28%Oc_RAyf=_~q4y5pu0=r9C2J}wciP#(N ze**~=*bP49T-<%-;=aT7{KMRpgqjL-DSq&d%W*WZaj1G0`285wSYKtJfGwi=ZgRD4 zl^UJmVWn5&{pFcJ!EstP3b5kw`?siF)o$|*y0ZYKdxi% zVZ+c1xO8Sqq2Ce`2E>i;>mtl+E`95I5O&I z#rEPYAXTO5ly(366Xf6kFcnEie9>kO*-8=8ofgksStXiOy-?SRGl55>TFGVMzz~tm z^P`42Hv!+o^C?hPHKTnLq ztnzZCfA2~=uwF_5JWSR;u!p&^ItWc8ev)OT1W9!sndM#&p=G!Nvtl?*&CD`uO7R4% z?c3w}NVb%M=@hqL%IyW~cz+0KM*lvqJ;bYKE0nBV=#bR*8v0mNsTNpS+0Sw5{eUUW z=T4?FAx?-~3c9MsZthF}iQ6cTqPT&J?bRN= z4nt9!qvruzkNLlw;|5=GwM#fJtxYDTMTZ50Tr(Y?U0ccL#A&K$HkV;-8tOv<_6`5R zeHHZ&5h91YTE!m2{gPbK9f}blYW_PXnd zQq$et-2^bXTzt0-rReG#W)|HZth^_vDg&_=L;i`)BYBmTFMQMSHVu^=dbEI17T~HA znPz2qy}VBpE<>~Bvsv^cTq@O}mb=`9{jxvRMUk~Yp!#vhK3d^0S^_*B=f?6*=CE9jo#$e&jUq=WuzDdN|>`Lh6 zeTzJyhsksSE8i(j*F7gjUzlEA?CIN82brG+;YP|k@h+}+baJZ|DK{B6i(bvVt^OK_ zCT9>AcDPu=Pq+tu@Dqt2p8FcaKG$UFh0G{U#u{@qEd>uwJOtU3#<*5+wY7{^9f4(( zO8)4QW?2P`3v2+!E7rP@0zz!N{Hl zO0ij|q@V=g3^JARSGq;gs8%IDsOo*ZS+tx~v|j*(02UT_d1Vz~4`MzB2iQw9u`+4x z;&YGDfx7SJH_ywF7TR{D7UdO{N{#AymV7%mm{o^ z86xDp`?T=HK++ngE9*{Q1{Bs~Rxkqt0~OWilK?sD$;ay@+ln~doibUV|mm1Z;6NJ{pRC>(15 z02N1w`}*pUL6@?q+RATaTOFO3Uh z-P{_0f)2rMBnhA3^WZ067RposC^?$1s?mJvT2_(JPr(7@_JlleaoGakl-N-qJJKaE zKdTi|*>>F1VD05KE^4JuG#LPpswDd&?kvcJUEFZm-! zN`svpF3#be7amX&vDMb1hv8msq;d5E9{UYIET%c7<_DNkvkjWg;4hlgC-L|LwQJO-*-Gv`qT&qp4f3nWh1=EE< z^f1z7XPwv+M*H!8X1Nf2BE)1+4Z+ynoRbK8^Eu`2mF`|$pSubCPg%q5sQ22gb6l0X zv;H;ndXYwyL6&ZBaOAP3Jh~4gDU+Rz3EBXFYYCRM~yk6E-#3xX)tx=tS@^XG#3N+oP?^ZSlawqwb%Z z`$wDu#>b&Hc<%``I$%J)KNul=fVi9aDY7h#&#~ z5ZXFfm;x};#EG8#;_OuCiVN=zlh4zr5{jD^g79Qbv0ovFpxX{%JB|oSU&Ewbp>a`( z4>>%ISNC~N@g`qm4{Yfadz{pbt&;xUWB?XbPx#*rfy7hW&D_TxCf7{;ohbRNVfDRX zT-F54sY#1qq;ogfc0&qHVS=#V?Q&<>Zoo{Xgyg>v9-l4N>G z0u32M2Vm22vl%LryfG`a5*8e}aoBm0bTe7+0T1{>Wekbx%;1-p1I8lVCL9vpM&mq2 z(hT4v9Nb^N_=LEE{cLD$OeQtOj~|bd5^DMwn|k9QTn=Y_76BP+roR!J@O%F(WSm+T z2<0Zm8!m)dGCX`;-I-a*x38*qJ{5^fcsh@2T#aw?mrnQXK|8ttexJ`HJ}@}a+x684 zK&vgBzR&EvEN0;s+m;&^!YVtsQ=&*yU#~nd8FpM+QUS}1y8Q@r6e-gkK}${jRAl8r zw?t*lBh$01we9V)l>k_X*$~+hFrwo1haOf^{1V>~qq$8jT>7o?wxiVQHOD6Ns`iT>ToWOU+F79qdhaHbC zlbv6zlKOt1inLMDp9$L8QM8?_e;KeUx*qWVxccg_Cfh&WS5c<|Ls3CsbR(UkLAp}` z>5!0e^hgmUL|VE-x27I|9NnGg9=`AIoa^w%E@Ld8=Nq4T)Pn+s#NIbG+v?re z>)=FjVVQnj!=#aAS<(Jxi%YHAILr8f($Ibr4#&_1-)jHRU#ZwUSJ?O@-=i>dEF~7V z$Ae})qO6a9l}eFHPSi9$yeCzH9K6F%+usy>skDW0d35BmR&Kd7Toxj_@)>9LGtP@Y z?ZQiQLqtVC12_l~O|+L!%G{#nzU3Z$j+5S4wQ>&6P++oFoLeucXL39xo+?FR1iQCV zU_r5rx-omlE2kEXADBs;|KQ~RU|Nq;bZ}s7`N@RgQBFjNJHcZt-@cJ(5hV?N*DC(L znGsB{pCRvfzhmzoP4HT<$5;gnX)?YSA@kpui14Tfhtor3GnkJ3p@zJ?NIFL5Mzt%K z#~dhQ2njOARoebL{^}_y|ip=aDHIJ36)Mqa+#n6M=`G_NGKB8z~Dv&$jGK1ciLS;(p;;lUe zcW;TcwY9y?e6*o(D!s9$FeS{6{#rD3EPKaFV)hE^B^4E+Hd` zd)m&3#W%;@K|eq{W_`*zK|T>R`TF&1Kn#qA^T#TYundIOv#h1EMb43}@e%-8w53as z4`|P7&!FU}8bIqfQ>6uoaWWx*9!M}75gMh2L?SB|fPScE;jYu>WbkGoGf-<93~JjN z{I0p3U1<3;Du_r~??qrzk`0!8c-WT}W%YOexc1q|K`V=vr;RXktlcdIK{*dt;XoNp z1@;;@YO~+>Yuoqo(py5)AZ2=9#bbrL*{t0ftWzz^8I+qpsKE70j_N9(TX{pM0OR_gT>2dGHyJZ&t+jmWLUng=c=q-x0 z7}`$Hr&R0TkF^(N!~=3Giy)ufc3&T2NWK1CC|Ja6T0}PwxCZbbIF2UhCGy??zMnzd zTuSc?Y1lv*$1X0!dP+WtbKrMaZA*i8q0!uYXyK$T-`pQ+4K}U$Kd<=PxQR6RUXQf# z5RDeqXtwUnZ__`ck@)!WFtNHz-rlZb*8tsAyze1E2Raa$ zv(!*Kq0qhezUwn=i|sN?gDs+p=Rh7F;&;>Do)Yyi=-16fWP7E>013{G1^QthZZ~KV^8B8fcj-Z`01&{y5^V zZ(dz${;?k(h}fYn(7fWk6g=@kc35lFH_NvO2L*uZE; zWUj#K)`5TwL`opZmce{{&B2?YkX>o^X=G(6?~)%*IbEcf76khQS0jEs;{Gc}?O16p zRB85ZpqW z2{eh`c`+nC9he#HL&dm2qCv?qXuFEj!DrV7#-7xIKrv2S$8bEtFxpVFRB?fd~By+HQ-9~jO!pIuay=;wq8lee$1b0|AYGRYl@H_&$&-wPi)*hhVR z=cn_rbzbyDA|8e_TU;uX$iz!ICB%$SMr~3-J9Iu)fx$}DO<;MRELoojpbO^npKKeZcnQzQwn1mMF!Vy35xn!G4n$sxJeod@Wq| zZRHa0D{CRY?pg0CmR;G5Z~NLucpa;3{qn&%54i~Hk4(ksRe!u`6UN}gsXjLuq`gz7 zo9NV0m+_qF?ngER8IcyK!U9F3>ZWzbM~Sa4hbvyA$v5{x1n#iZ731=Mx8;iT zdGLP8_d8EmvG7+PiKP20t1$u>Vcc9phVx5Iqjknvf4egFBY-BVb-Cc?h^vK_X99b! z#M9-q)_E^|KBJ6_abFtsks)B9SSxwS_Gbw7EB08{z4!Z&*XC*i?abt7Xf#z0l`1v) z$W%$EVyX{yctl7~VtXMhW4PTAGeiPR?-BBmRBzI z9v$r9jHJLyp|XF#e|lQX+;1tn86%x2@T){;-(hpS76*%3El`eOd$o$IIwJcQ!CMB7 zM**8dx;KUn)3ZmJY16hHB19P6jV08gqfIJz2!7>*3T7hynXJu z4<#x|{@-UtF^&U(jMG!szB*%$Dt;%j{;3rK&&fJt%ql)-K4IFl3!c82kitXap82_O z)`Q#c+q(AoLoTF@kas1F%x5ZxdlWdsg?|E#`oo7C!swyMzeVO%+M$CpdH=9s*5{#_ z__wDJtk)km9#f2y0*GmOwDL(n67%uJjSs&JO-|33Hz%8;vKJU0Y^R6#$fNtErx98w zVxGYM+GIPaKO$Re`*$HCT_FPe_1EANejN1 zaxa}nIVUG4cl{hgsPOO}lRdZ#SorWc+yfC9XsL&Z{91YzG64V{ymiym0~73IFJDHL z5p$;X(*eCO*onLF10}56r%e3Ckd;EvQXOn9B`tlh@P=;06~fzG&D$=i&tiSozpuba zz>+nFGmP+W35`g!mIEie-MP6-fSAhcP=FX~c1YuP!^`DAVNK??X`NB;GJlU9>Z-~h zzm63}w2C-u_zk`ZroouniHMI6eEWeZAYdTpM|PXc+c#gLqT<%{SGmdTg1#V+Xn^DD z(6xNVwx_ccN(dU^?T$5vrUd>4SXvlyr;{FGWhJtwl*>fdry&$HMl@Ut*2f`~O2Du= z;%U%2hQ!BHc+>niTzml6ucpSKIdybBtIACUAjz0B`%UDXP2@mRQqx3E%ir2W4p46@ z=4Q8;0*ZRWVxyS%^y zxPsN3vhnE9VaG94ALGJ9F%M22a*Y2tYF#l?7T2-Ia7$#=Q#2GN>TWQ!xb0}5-!WJa zp}zf^{Y2r5Vo&r{M|?`?sV9A7th24%)xZcpdsrO#QCi2HyLL0VwY|~yeutjzs3Tq$ zY|yi6zSMjlu-48}Ovx9f+VWQIeO7Xxe#_FtROzUo<4i8u@9gD@*oZdl%bqKkR=ia< zYP0)V8-~J$5v*)#Euw{4dclwl{9e8JKRLnqHQG-%bU32&Lv1EHJnDorQbT+a_{;TU zT=-dHJ#>itQlj}vg`lfdvAiSZArRDQO2UX*Pg^Ii{2_t`0RV0cQ|;xoHV7A#1i

mz^32@@EG=c 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 p7g2_FGFe%SL6+4b!8{{pV@yPg05 literal 0 HcmV?d00001